6

我正在寻找一种算法来计算通过 DAG 中特定节点的路径数(类似于“介数”的概念),具有以下条件和约束:

我需要对图中的一组源/目标节点进行计数,而不是所有节点,即对于中间节点 n,我想知道从节点集 S 到节点集 D 有多少条不同的最短路径通过通过 n (并且通过不同,我的意思是每两条路径至少有一个非公共节点)

考虑到 DAG 可能非常大但边缘稀疏,因此您可能建议使用哪些算法来执行此操作,因此不优先考虑节点上的深层嵌套循环。

4

1 回答 1

3

您可以对每对 Src/Dest 节点使用广度优先搜索,并查看其中哪些节点在路径中具有您的给定节点。您必须稍微修改搜索,以便在找到最短路径后,继续清空队列,直到到达导致您增加大小的路径。这样,如果有多个最短路径,您就不会受到随机机会的约束。当然,这只是非加权图的一个选项。

于 2011-09-23T20:41:41.103 回答