鱼C论坛

 找回密码
 立即注册
查看: 1908|回复: 2

[已解决]求python如何做校园导游图

[复制链接]
发表于 2023-4-4 01:04:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
需要实现最短路径的计算
最佳答案
2023-4-4 08:51:22
本帖最后由 ouyunfu 于 2023-4-4 08:55 编辑
pip install networkx
import networkx as nx

G = nx.Graph()

# 添加节点
G.add_node('校门')
G.add_node('教学楼1')
G.add_node('教学楼2')
G.add_node('图书馆')
G.add_node('宿舍楼1')
G.add_node('宿舍楼2')

# 添加边
G.add_edge('校门', '教学楼1', weight=5)
G.add_edge('校门', '教学楼2', weight=7)
G.add_edge('教学楼1', '图书馆', weight=3)
G.add_edge('教学楼2', '宿舍楼1', weight=6)
G.add_edge('宿舍楼1', '宿舍楼2', weight=2)

path = nx.shortest_path(G, source='校门', target='图书馆', weight='weight')
print(path)  # 输出:['校门', '教学楼1', '图书馆']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-4 01:17:21 | 显示全部楼层
要创建一个校园导游图并实现最短路径的计算,可以使用Python的networkx库。

networkx是一个用于创建、操作和研究图和网络结构的库。

以下是一个简单的示例,演示如何使用networkx创建一个校园导游图并计算最短路径。

首先,安装networkx库:
pip install networkx

然后,创建一个Python脚本,如下所示:
import networkx as nx

# 定义校园地点和路径
locations = ['A', 'B', 'C', 'D', 'E', 'F']
paths = [
    ('A', 'B', 100),
    ('A', 'C', 150),
    ('B', 'D', 200),
    ('B', 'E', 250),
    ('C', 'D', 300),
    ('C', 'F', 400),
    ('D', 'E', 350),
    ('D', 'F', 100),
    ('E', 'F', 450),
]

# 创建图
G = nx.Graph()
G.add_nodes_from(locations)
G.add_weighted_edges_from(paths)

# 计算最短路径
start, end = 'A', 'F'
shortest_path = nx.shortest_path(G, start, end, weight='weight')

# 打印最短路径
print(f"最短路径从 {start} 到 {end}: {' -> '.join(shortest_path)}")

这个脚本首先定义了校园的地点(A、B、C、D、E和F)以及它们之间的路径(有向边)和距离(权重)。

接下来,它使用networkx创建了一个图形(Graph)对象,然后添加了地点和路径。

最后,它使用networkx的shortest_path函数计算从起始点(A)到终点(F)的最短路径,并打印出结果。

在这个示例中,最短路径从A到F是:A -> B -> D -> F。

请注意,这个示例使用的是简化的校园地图。你需要用实际的校园地点和距离替换示例中的locations和paths。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-4-4 08:51:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ouyunfu 于 2023-4-4 08:55 编辑
pip install networkx
import networkx as nx

G = nx.Graph()

# 添加节点
G.add_node('校门')
G.add_node('教学楼1')
G.add_node('教学楼2')
G.add_node('图书馆')
G.add_node('宿舍楼1')
G.add_node('宿舍楼2')

# 添加边
G.add_edge('校门', '教学楼1', weight=5)
G.add_edge('校门', '教学楼2', weight=7)
G.add_edge('教学楼1', '图书馆', weight=3)
G.add_edge('教学楼2', '宿舍楼1', weight=6)
G.add_edge('宿舍楼1', '宿舍楼2', weight=2)

path = nx.shortest_path(G, source='校门', target='图书馆', weight='weight')
print(path)  # 输出:['校门', '教学楼1', '图书馆']
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 01:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表