我正在尝试在 java 中实现一个邻接矩阵,它会为哈密顿循环生成一个输出,然后可以使用不同的算法(例如 kruskurals、djikstras 和 2opt 方法)对其进行求解。我知道我需要一个二维数组,但我不知道从哪里开始。我需要能够存储矩阵并将其应用于我拥有的图形,该图形目前是一个带有“n”个节点的圆(取决于矩阵)。欢迎所有帮助,谢谢
最佳答案
这是您可以使用的骨架:
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
顶点索引? - 等...
关于java - 如何在产生汉密尔顿循环的java中实现邻接矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2515593/