我正在创建一个程序,用于计算未加权图表中所有节点的Betwenness Centrality。要做到这一点,我必须找到ASSSP(所有单一来源最短路径)。在创建程序时,我开始意识到最终我会有关系(从源到目的地的距离相同但路径不同)。这引出了我这个问题。我应该如何解决这些关系?如果我使用随机断路器,则相同输入的中介中心度的每个输出可能略有不同。让我举一个小示例图:
A
/ \
B C
\ /
D
现在假设A节点是我们希望找到ASSSP的源。可以清楚地看到存在两条路径(A-> B-> D和A-> C-> D),它们的机器人具有相同的长度,它们都是最短的。我应该选择哪一个,以及在什么条件下?
随机断路器(问题)
如果我使用随机断路器,就像第一个被发现的断路器一样,被标记为最短路径(程序是分布式的,因此该解决方案将以随机方式工作)。然后我会遇到Interness Centrality的问题,因为节点B和C的值会有所不同;取决于哪条路径被标记为最短路径。
有谁知道如何解决这个问题,或者我只是遗漏了什么?
答案 0 :(得分:1)
要正确计算中介中心性,必须考虑图中的每条最短路径。如果两个节点A和B之间具有 k 最短路径,则每条最短路径将 1 / k 贡献给路径通过的节点的总间度分数。通常,您不应通过实际查找(和存储)网络中的所有最短路径来计算中介中心性;请参阅以下文章以获得更有效的算法:
答案 1 :(得分:0)
是的,SSSP或单源最短路径是计算机科学中一个非常普遍的问题。一种标准做法是,您遇到的第一条路径比具有相同距离的其他路径短。
例如,在您的示例中,如果您在算法中A->B->D
之前处理了A->C->D
,则A->B->D
将是最短路径。
如果事情仍然不清楚,我相信Dijkstra的算法就是你所追求的。
答案 2 :(得分:0)
几乎是因为你注意到的问题,实际上并不是通过检查源和目标之间的单个路径来计算中介中心性,而是通过计算最短路径的数量来计算。您需要为此修改最合适的最短路径算法,例如Floyd-Warshall算法或Johnson算法。