2010-03-25 58 views
5

我想在java中实现一个邻接矩阵,它将产生一个哈密尔顿循环的输出,然后可以用不同的算法如kruskurals,djikstras和2opt做法。我知道我需要一个二维数组,但我不知道从哪里开始。我需要能够存储矩阵并将其应用于我拥有的图形,该图形当前是具有“n”个节点的圆形(取决于矩阵)。所有帮助表示欢迎,感谢如何在java中生成哈密尔顿循环实现邻接矩阵

回答

5

这里是你从工作的骨架:

public class Graph { 
    public final int V; 
    private boolean[][] hasEdge; 

    public Graph(int V) { 
     this.V = V; 
     hasEdge = new boolean[V][V]; 
    } 

    public void addEdge(int v1, int v2) { 
     hasEdge[v1][v2] = hasEdge[v2][v1] = true; 
    } 
    public boolean hasEdge(int v1, int v2) { 
     return hasEdge[v1][v2]; 
    } 
} 

东西可以改善:

  • 也许允许节点之间的多条边?
  • 也许允许加权边缘?
  • 也许使用Node类型而不是int顶点索引?
  • etc ...
+0

非常感谢您的帮助 – alchemey89 2010-03-25 15:08:36