java - 对顶点列表实现 Floyd-Warshall 算法

标签 java graph

我试图从顶点列表返回传递闭包,但我如何使用弗洛伊德·沃歇尔算法来做到这一点?互联网上的所有示例都是以二维数组给出的,但它也可以用于列表吗?示例 G = ABCD --> G+ = AB AC AD BC BD CD,其中 G 是顶点列表,G+ 是传递闭包。

我的实现(错误的方式):

 public Graph transitiveClosure(LinkedList<Vertex> v)
  {

      String graaf = "";      
      Edge e;
      StringBuffer sb = new StringBuffer(graaf);

      Iterator<Vertex> i = v.iterator();
      Vertex tmp;
      for(Vertex vertex : v)
      {
         System.out.print(vertex);
      }

         while(i.hasNext()) {         
        int next = (v.size() + 1) - v.size();                                        
         tmp =(Vertex) i.next();

         if(tmp == v.getFirst()) 
        tmp = (Vertex)i.next();
        e = new Edge(v.getFirst().toString() + tmp);                        
        sb.append(e); 

         if(tmp == v.get(next)) 
         next++;
         e = new Edge(v.get(next).toString() + tmp);
         sb.append(e);


    }

      System.out.println();

      return new Graph(sb.toString());
      }              
} 

最佳答案

由于您想要所有对 (i,j),其中 i 和 j 是 i 低于 j 的索引,所以我不太明白为什么您想要 Floyd-Warshall 在这里。

int size = v.size();
StringBuffer sb = new StringBuffer(graaf);
for (int i=0;i<size;i++) {
   for (int j=i+1;j<size;j++) {
      sp.append(v.get(i)+v.get(j)+" ");
   }
}

关于java - 对顶点列表实现 Floyd-Warshall 算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27103001/

相关文章:

java - 修复 Eclipse 插件中消失的 LaunchShortcut

c++ - 如何从图中随机选择一个顶点?

关于 n*n 距离矩阵的算法问题

scala - 获取连接到 Apache Spark GraphX 中某个节点的所有节点

java - 如何在Java项目中导入Maven jar

java - ?Android < API21 的属性/颜色

java - viewHolder 和抽屉导航的问题

java - 如何使用java计算数据库中的日期与当前日期之间的天数差异

algorithm - VF2算法步骤举例

java - java中多个点之间的连续虚线(swing)