Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python的Networkx库中优化提取所有简单路径?_Python_Graph_Networkx_Directed Graph_Network Analysis - Fatal编程技术网

如何在python的Networkx库中优化提取所有简单路径?

如何在python的Networkx库中优化提取所有简单路径?,python,graph,networkx,directed-graph,network-analysis,Python,Graph,Networkx,Directed Graph,Network Analysis,我有一个有向图G和所有源和目标的列表。源和目标都是两个节点,它们之间至少有一条路径。 现在我想找到源和目标之间的所有简单路径 for index, row in df_short_path.iterrows(): print (list(nx.all_simple_paths(G, row['source'], row['target']))) df_short_path是由源和目标组成的数据帧 for index, row in df_short_path.iterrows():

我有一个有向图G和所有源和目标的列表。源和目标都是两个节点,它们之间至少有一条路径。 现在我想找到源和目标之间的所有简单路径

for index, row in df_short_path.iterrows():
     print (list(nx.all_simple_paths(G, row['source'], row['target'])))
df_short_path是由源和目标组成的数据帧

for index, row in df_short_path.iterrows():
     print (list(nx.all_simple_paths(G, row['source'], row['target'])))
G有1818个节点和3380条df_短路径的大小为252454

我的问题是:

当我运行代码时,甚至运行一次循环都需要很长时间,而且一段时间后我还面临内存不足的问题。 有人对优化这个库或它的替代算法有什么建议吗?(我也尝试设置一个截止值,但没有帮助)


感谢您的帮助:)

您的图表是否加权?您可能想看看图形工具。你真的想检索所有的简单路径还是只检索所有的最短路径?听起来动态规划可能是一种选择。如果您的算法能够记住(存储)已经走过的路径,则可以显著减少重复搜索。e、 g.如果您找到节点a和节点B之间的所有简单路径,那么您希望找到另一个节点C和节点B之间的所有简单路径,如果算法遇到节点a,您将再次搜索您已经在a和B之间找到的所有路径。每次调用一对新节点上的所有简单路径时,都会发生这种情况。不幸的是,我不知道如何高效地运行一个循环来查找一个如此大小的图的两个节点之间的所有简单路径。即使是包含50个节点和100条边的小图也会超时。我认为你可能不得不考虑分析的不同选项。抱歉:这意味着很可能很难(一个多项式时间算法求解一个p p-完全问题,如果存在的话,将通过P和NP相等来解决P与NP问题)。有效解决问题的唯一方法是利用图形的特定结构,如果它有任何允许的功能的话。@Danoram可以证实,这里也没有运气。