Python 最短路径
Python shortest path
我有一个路线对象列表,其中保留了该路线的起点和终点:
class route:
def __init__(self, start, end):
self.start = start
self.end = end
routeList = [
route("Munich", "Cologne"),
route("Berlin", "Hamburg"),
...
...
]
当用户输入他的起点和终点时,我想找到最短的路线组合。
我不知道我怎么能让它工作。我看了一下 dijkstra 的算法,但它看起来只适用于点和距离,而不适用于路线。
我只知道我必须递归地做,但我不知道怎么做。有什么想法吗?
编辑:例如用户可以输入:
"start: Munich"
"end: Berlin"
当然列表中一定有匹配的路由满足这个愿望(只是举例)
NetworkX 提供您正在寻找的功能。
您需要以构建合理图表的方式格式化您的数据(根据您的示例,我不完全确定您的所有数据是否都是成对的,或者是否有更多 "hops" "routes"), 然后你可以应用任何合理的寻路算法。
Dijkstra 会工作得很好。
每个城市都是图中的一个节点,两个城市之间的每条路线都是两个节点之间的边。
一般来说,图的边可以有权重(或距离),但如果你不关心距离,只想要一条路径的 routes/edges 最少,你可以将每条边的权重设置为 1
.
我有一个路线对象列表,其中保留了该路线的起点和终点:
class route:
def __init__(self, start, end):
self.start = start
self.end = end
routeList = [
route("Munich", "Cologne"),
route("Berlin", "Hamburg"),
...
...
]
当用户输入他的起点和终点时,我想找到最短的路线组合。 我不知道我怎么能让它工作。我看了一下 dijkstra 的算法,但它看起来只适用于点和距离,而不适用于路线。 我只知道我必须递归地做,但我不知道怎么做。有什么想法吗?
编辑:例如用户可以输入:
"start: Munich"
"end: Berlin"
当然列表中一定有匹配的路由满足这个愿望(只是举例)
NetworkX 提供您正在寻找的功能。
您需要以构建合理图表的方式格式化您的数据(根据您的示例,我不完全确定您的所有数据是否都是成对的,或者是否有更多 "hops" "routes"), 然后你可以应用任何合理的寻路算法。
Dijkstra 会工作得很好。
每个城市都是图中的一个节点,两个城市之间的每条路线都是两个节点之间的边。
一般来说,图的边可以有权重(或距离),但如果你不关心距离,只想要一条路径的 routes/edges 最少,你可以将每条边的权重设置为 1
.