2010-03-25 106 views
5

Tôi đang cố gắng triển khai ma trận kề trong java sẽ tạo ra đầu ra cho chu trình Hamilton, sau đó có thể giải được bằng các thuật toán khác nhau như kruskurals, djikstras và 2opt tiếp cận. tôi biết rằng tôi cần một mảng 2d nhưng tôi không biết bắt đầu từ đâu. tôi cần để có thể lưu trữ ma trận và áp dụng nó vào đồ thị mà tôi có, mà hiện tại là một vòng tròn với các nút "n" (phụ thuộc vào ma trận). tất cả sự giúp đỡ được hoan nghênh, nhờLàm thế nào để thực hiện một ma trận kề trong java tạo chu trình hamilton

Trả lời

5

Dưới đây là một bộ xương bạn có thể làm việc từ:

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]; 
    } 
} 

Những điều bạn có thể cải thiện trên:

  • lẽ cho phép nhiều cạnh giữa các nút?
  • Có thể cho phép các cạnh có trọng số?
  • Có thể sử dụng Node loại thay vì chỉ số int cho các đỉnh?
  • v.v.
+0

cảm ơn bạn rất hữu ích – alchemey89

Các vấn đề liên quan