Javaでグラフの隣接リスト表現を作成する方法


  1. グラフの頂点を表すクラスを作成します。頂点クラスは、頂点の値と隣接リストを保持します。例えば、以下のような頂点クラスを作成します。
class Vertex {
    int value;
    List<Vertex> neighbors;
    public Vertex(int value) {
        this.value = value;
        this.neighbors = new ArrayList<>();
    }
    public void addNeighbor(Vertex neighbor) {
        neighbors.add(neighbor);
    }
}
  1. グラフクラスを作成します。グラフクラスは、頂点のリストを保持し、頂点同士の関係を表現します。以下のようなグラフクラスを作成します。
class Graph {
    List<Vertex> vertices;
    public Graph() {
        this.vertices = new ArrayList<>();
    }
    public void addVertex(Vertex vertex) {
        vertices.add(vertex);
    }
}
  1. グラフの頂点と隣接する頂点の関係を設定します。例えば、以下のようなグラフを作成する場合を考えます。
   1
  / \
 2---3
// グラフの作成
Graph graph = new Graph();
// 頂点の作成
Vertex vertex1 = new Vertex(1);
Vertex vertex2 = new Vertex(2);
Vertex vertex3 = new Vertex(3);
// グラフに頂点を追加
graph.addVertex(vertex1);
graph.addVertex(vertex2);
graph.addVertex(vertex3);
// 隣接する頂点の関係を設定
vertex1.addNeighbor(vertex2);
vertex1.addNeighbor(vertex3);
vertex2.addNeighbor(vertex1);
vertex3.addNeighbor(vertex1);
  1. グラフの隣接リスト表現を利用して、必要な処理を行います。例えば、以下のように頂点とその隣接する頂点を表示するメソッドを作成することができます。
public static void printGraph(Graph graph) {
    for (Vertex vertex : graph.vertices) {
        System.out.print("頂点 " + vertex.value + " の隣接する頂点: ");
        for (Vertex neighbor : vertex.neighbors) {
            System.out.print(neighbor.value + " ");
        }
        System.out.println();
    }
}

以上の手順に従って、Javaでグラフの隣接リスト表現を作成することができます。これにより、グラフの構造や関係を効率的に表現し、さまざまなグラフアルゴリズムを実装することができます。