Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图论:找到乔丹中心?_Java_Language Agnostic_Graph Theory_Jgrapht - Fatal编程技术网

Java 图论:找到乔丹中心?

Java 图论:找到乔丹中心?,java,language-agnostic,graph-theory,jgrapht,Java,Language Agnostic,Graph Theory,Jgrapht,我试图找到一组顶点,使它们到加权图上其他顶点的距离最小。基于粗略的维基百科搜索,我认为这被称为。有什么好的算法可以找到它 现在,我的计划是得到一个从给定顶点发出的每个分支的权重列表。权重相对差异最小的顶点将是中心顶点。还有其他想法吗 我正在使用Java,但有用的答案不一定是Java特有的。本MSc论文中介绍了解决图形中心问题的三种算法:。我将首先使用(它必须针对每个垂直点运行)对于计算所有垂直线对之间的最短距离,也有一些更有效的算法。然后,对于每个垂直点V,你必须找到Vm——从Dijkstra算

我试图找到一组顶点,使它们到加权图上其他顶点的距离最小。基于粗略的维基百科搜索,我认为这被称为。有什么好的算法可以找到它

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


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

本MSc论文中介绍了解决图形中心问题的三种算法:。

我将首先使用(它必须针对每个垂直点运行)对于计算所有垂直线对之间的最短距离,也有一些更有效的算法。然后,对于每个垂直点V,你必须找到Vm——从Dijkstra算法返回的数据中到任何其他垂直点的最大距离。然后,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
  }
int n=垂直线的数量;
int[][]D=RunDijkstraOrWarshall()
//D[a,b]=从a到b的最短路径长度
int[]Vm=新的int[n];

对于(int i=0;i从JGraphT版本1.1.0开始,您可以简单地使用方法
GraphMeasurer.getGraphCenter()
。底层代码使用最短路径方法。用户可以根据图形的某些特征(例如稀疏/密集/…)选择使用哪种方法。

我相信您的意思是检查“if(Vm[i]