Graph 使用NetworkX在加权图中搜索最短路径时的附加约束

Graph 使用NetworkX在加权图中搜索最短路径时的附加约束,graph,dijkstra,networkx,Graph,Dijkstra,Networkx,我向您提出了一个问题,关于在使用NetworkX搜索加权图中的最短路径时添加其他约束 示例图: G.add_edge(A, B, weight=1) G.add_edge(B, C, weight=2) G.add_edge(A, C, weight=1) .. .. .. G.add_edge(Y, Z, weight=6) 所以,现在我想找到从A到F的最短路径,包括一些点,例如:C,L,G,R(排序没有意义)。如何使用NetworkX实现这一点 谢谢大家! 这可能不是最好的解决方案,但无

我向您提出了一个问题,关于在使用NetworkX搜索加权图中的最短路径时添加其他约束

示例图:

G.add_edge(A, B, weight=1)
G.add_edge(B, C, weight=2)
G.add_edge(A, C, weight=1)
..
..
..
G.add_edge(Y, Z, weight=6)
所以,现在我想找到从A到F的最短路径,包括一些点,例如:C,L,G,R(排序没有意义)。如何使用NetworkX实现这一点

谢谢大家!

这可能不是最好的解决方案,但无论如何:

将networkx导入为nx
从字符串导入字母
来自随机导入样本,randint
从itertools导入置换
#生成随机图
G=nx.Graph()
节点=列表(字母[:20])
对于节点中的阳极:
G.add_节点(阳极,重量=randint(1,20))
对于范围(60)内的i的[样本(节点,2)]中的边:
G.添加_边(*边)
现在,让我们定义路径搜索功能:

def multiple_dijkstra(G,apath,result,n=0,i=1):
“”“对于:a-b-c-d的路径,递归搜索最短路径
“a”和“b”,然后是“b”和“c”,然后是“c”和“d”之间的路径。
返回一个列表,该列表是从“a”到“d”再到“b”和“c”的路径。”
尝试:
扩展(nx.dijkstra_路径(G,apath[n],apath[i])[:-1])
多重dijkstra(G,apath,result,n+1,i+1)
返回结果
除索引器外:
结果.扩展(nx.dijkstra_路径(G,apath[n],apath[i-1]))
返回结果
定义可能的路径(开始节点、结束节点、*之间):
“”“根据*之间的排列生成所有可能的路径”“”
对于置换中的置换(介于之间,len(介于之间)):
产生[开始节点]+列表(置换)+[结束节点]
def通过可能的路径(开始节点、结束节点、*之间):
“”“测试所有排列是否为最短路径”“”
对于可能路径中的路径(开始节点、结束节点、*之间):
结果=[]
最短路径=多个dijkstra(G,apath,result)
打印“测试路径:{}\n结果:{}(长度:{})”。格式(
“-”.加入(阿帕斯),
“-”.连接(最短路径),
len(最短路径)
现在,我们可以搜索最短路径:

#让我们选择5个随机节点:一个开始节点、一个结束节点和三个中间节点
n1,n2,n3,n4,n5=样本(节点,5)
#…并搜索“n1”和“n2”之间的最短路径
#使“n3”、“n4”和“n5”位于节点之间
通过可能的路径(n1、n2、n3、n4、n5)
A可能的结果:

测试路径:e-h-g-j-t
结果:e-k-h-k-g-k-b-j-b-t(长度:10)
测试路径:e-h-j-g-t
结果:e-k-h-k-b-j-o-c-g-k-b-t(长度:12)
测试路径:e-g-h-j-t
结果:e-k-g-k-h-k-b-j-b-t(长度:10)
测试路径:e-g-j-h-t
结果:e-k-g-k-b-j-b-k-h-l-t(长度:11)
测试路径:e-j-h-g-t
结果:e-j-b-k-h-k-g-k-b-t(长度:10)
测试路径:e-j-g-h-t
结果:e-j-o-c-g-k-h-l-t(长度:9)
因此,从
e
t
的最短路径是通过
j
g
h
(按此顺序),实际路径是:
e-j-o-c-g-k-h-l-t


我不是这方面的专家,所以我对更好的解决方案很好奇。不过,希望这能有所帮助。

谢谢。我想我找到了其他解决办法。1.查找特定节点之间的所有最短路径。2.构建第二个图形(仅从特定节点)3。在第二个图上解决TSP问题。我用它来计算最多30个节点,所以两种方法的时间是相似的。TSP解算器()在增加节点数的同时速度更快。TSP还有一个优点-我不需要定义目标节点。@sAguinaga使用蚁群优化算法-