我正面临一个寻路问题,我必须找到从一个点到另一个点的所有可能路径。如果它就是那么容易 - 我会使用广度优先算法,就像解释here的算法一样。
问题是,在这种情况下,每个边缘都有可以使用的最大次数。让我们看一个例子:
在这种情况下,我可以从A到D去15次。前10次,路径是A - > B - > C - > D.剩下的5次,路径将是A - > C - > d。
到目前为止,我已经能够实现一个解决方案(使用python),但对于中等问题(大约30个节点)来说,这是非常缓慢的。我有一个未加权的图(因为我不介意路径的长度)与不同节点之间可能的连接,并且我有一个矩阵,每个边的使用限制。
所以,在循环中:
正如我所说,这是有效的,但它很慢。我已经能够通过根据每个节点可以使用的次数对每个节点的边缘列表进行排序来提高整体性能,但它仍然很慢。
任何线索?
答案 0 :(得分:1)
您可以将问题显示为最大流量问题。你可能会说A到B可以容纳10立方公尺/秒的流量,而不是说你可以将A到B行进10次。您的图表是一个管道网络,可以容纳从A到D的总流量为15立方米/秒。因此,您可以先查看列出的算法here on wikipedia。
在您的问题中,我有些观点尚不清楚。根据您的答案,它可能不符合流量问题。