我正在处理一个图库。它必须有一个函数,它找到两个最大分离的节点,即它们在从源节点到达目标节点之前遍历所需的最小节点数的最大数量。 / p>
一种简单的方法是计算从每个节点到所有其他节点的分离程度,并为每个节点重复相同的程度。
这种复杂性原来是O(n^2)
。
解决这个问题的更好方法是什么?
答案 0 :(得分:2)
使用Floyd-Warshall algorithm查找所有对最短路径。然后遍历结果并找到具有最长路径的结果。
答案 1 :(得分:0)
图表上没有任何假设,Floyd-Warshall是可行的方法。
如果你的图表稀疏(即它的节点边缘相对较少,或|E|<<|N|^2
),那么Johnson可能会更快。
使用单位边缘权重(这似乎是你的情况),通过为每个节点计算最远节点(BFS)的一种天真的方法导致O(|N|.|E|)
。这可能会进一步改善,但我现在看不到办法。