Pythonにおける隣接リストを用いたグラフの表現方法


class Graph:
    def __init__(self, num_vertices):
        self.num_vertices = num_vertices
        self.adj_list = [[] for _ in range(num_vertices)]

    def add_edge(self, source, destination):
        self.adj_list[source].append(destination)
        self.adj_list[destination].append(source)

    def print_graph(self):
        for vertex in range(self.num_vertices):
            print(f"隣接する頂点: {vertex}")
            for neighbor in self.adj_list[vertex]:
                print(f" -> {neighbor}")
            print("\n")

この例では、Graphクラスが定義されています。__init__メソッドでは、グラフの頂点数を受け取り、隣接リストを初期化しています。add_edgeメソッドは、指定された2つの頂点を結ぶ辺を追加します。print_graphメソッドは、グラフの隣接リストを表示します。

以下は、この例を使用してグラフを作成し、表示する方法の一例です。

# グラフの作成
graph = Graph(5)
# 辺の追加
graph.add_edge(0, 1)
graph.add_edge(0, 4)
graph.add_edge(1, 2)
graph.add_edge(1, 3)
graph.add_edge(1, 4)
graph.add_edge(2, 3)
graph.add_edge(3, 4)
# グラフの表示
graph.print_graph()

このコードを実行すると、以下のような出力が得られます。

隣接する頂点: 0
 -> 1
 -> 4
隣接する頂点: 1
 -> 0
 -> 2
 -> 3
 -> 4
隣接する頂点: 2
 -> 1
 -> 3
隣接する頂点: 3
 -> 1
 -> 2
 -> 4
隣接する頂点: 4
 -> 0
 -> 1
 -> 3

このように、隣接リストを使用することで、グラフの頂点とその隣接する頂点を効率的に表現することができます。

以上が、Pythonでの隣接リストを使用したグラフの表現方法の一例です。この方法を使って、さまざまなグラフの操作やアルゴリズムを実装することができます。