首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >顶点列表的Floyd-Warshall算法的实现

顶点列表的Floyd-Warshall算法的实现
EN

Stack Overflow用户
提问于 2014-11-24 18:47:46
回答 1查看 276关注 0票数 0

我正在尝试从顶点列表中返回传递闭包,但我如何使用floyd warshall算法来做到这一点?互联网上的所有示例都是以2D数组的形式给出的,但是它也可以用于列表吗?示例G= ABCD --> G+ = AB AC AD BC BD CD,其中G是顶点列表,G+是传递闭包。

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

代码语言:javascript
复制
 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());
      }              
} 
EN

回答 1

Stack Overflow用户

发布于 2014-11-25 00:37:36

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

代码语言:javascript
复制
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)+" ");
   }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27103001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档