gpt4 book ai didi

java - 图论 : Find the Jordan center?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:14 24 4
gpt4 key购买 nike

我正在尝试找到一组顶点,以最小化它们与加权图上其他顶点的距离。基于粗略的维基百科搜索,我认为这叫做 Jordan Center .有哪些好的算法可以找到它?

现在,我的计划是获取从给定顶点发出的每个分支的权重列表。权重相对差异最小的顶点将成为中心顶点。还有其他想法吗?

我使用的是 Java,但有用的答案不一定是特定于 Java 的。

最佳答案

我会首先使用 Dijkstra algorithm (它必须为每个顶点运行)用于计算所有顶点对之间的最短距离 - 还有一些更有效的算法,如 Floyd-Warshall .然后,对于每个 Verticle V,您必须找到 Vm - 从 Dijkstra 算法返回的数据中到任何其他 Verticle 的最大距离。那么,具有最小 Vm 的顶点就是图中心的顶点。伪代码:

int n = number of verticles;
int[][] D = RunDijkstraOrWarshall()
// D[a,b] = length of shortest path from a to b
int[] Vm = new int[n];
for(int i=0; i<n i++)
{
Vm[i] = 0
for(int j=0; j<n; j++)
{
if (Vm[i] < D[i,j]) Vm[i] = D[i,j];
}
}

minVm = int.Max;
for(int i=0; i<n ;i++)
{
if (minVm < Vm[i]) minVm = Vm[i];
}

for(int i=0; i<n ;i++)
{
if (Vm[i] == minVm)
{
// graph center contans i
}

关于java - 图论 : Find the Jordan center?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com