Discrete-mathematics-spanning-trees

提供:Dev Guides
移動先:案内検索

離散数学-スパニングツリー

接続された無向グラフ$ G $のスパニングツリーは、$ G $のすべての頂点を最小限に含むツリーです。 グラフには、多数のスパニングツリーが含まれる場合があります。

スパンのグラフ スパニングツリー

最小スパニングツリー

重み付きの接続された無向グラフ$ G $のすべての可能なスパニングツリーの重み以下の割り当てられた重みを持つスパニングツリーは、最小スパニングツリー(MST)と呼ばれます。 スパニングツリーの重みは、スパニングツリーの各エッジに割り当てられたすべての重みの合計です。

最小スパニングツリー

クラスカルのアルゴリズム

Kruskalのアルゴリズムは、接続された重み付きグラフの最小スパニングツリーを見つける貪欲なアルゴリズムです。 すべての頂点を含むそのグラフのツリーを見つけ、ツリー内のすべてのエッジの合計重みは、考えられるすべてのスパニングツリー以下です。

アルゴリズム

  • ステップ1 *-指定されたグラフ$ G(V、E)$のすべてのエッジを、エッジの重みに従って昇順で配置します。
  • ステップ2 *-グラフから最小の重み付きエッジを選択し、これまでに形成されたスパニングツリーでサイクルを形成するかどうかを確認します。
  • ステップ3 *-サイクルがない場合、このエッジをスパニングツリーに含めます。それ以外の場合は破棄します。
  • ステップ4 *-スパニングツリーに$(V-1)$個のエッジが残るまで、ステップ2とステップ3を繰り返します。

問題

Kruskalのアルゴリズムを使用して、次のグラフGの最小スパニングツリーを検索するとします。

クラスカルの問題

溶液

上記のグラフから、次の表を作成します-

Edge No. Vertex Pair Edge Weight
E1 (a, b) 20
E2 (a, c) 9
E3 (a, d) 13
E4 (b, c) 1
E5 (b, e) 4
E6 (b, f) 5
E7 (c, d) 2
E8 (d, e) 3
E9 (d, f) 14

今、私たちはエッジの重みに関して昇順でテーブルを再配置します-

Edge No. Vertex Pair Edge Weight
E4 (b, c) 1
E7 (c, d) 2
E8 (d, e) 3
E5 (b, e) 4
E6 (b, f) 5
E2 (a, c) 9
E3 (a, d) 13
E9 (d, f) 14
E1 (a, b) 20

Kruskal頂点エッジの追加 Kruskal頂点エッジ1の追加 image:/discrete_mathematics/images2kvertex_adding_vertex_edge2を追加

最後の図で5つのエッジすべてを取得したので、アルゴリズムを停止します。これは最小スパニングツリーであり、その総重みは$(1 + 2 + 3 + 5 + 9)= 20 $です。

プリムのアルゴリズム

1930年に数学者であるVojtech JarnikとRobert Cによって発見されたPrimのアルゴリズム Primは、接続された重み付きグラフの最小全域木を見つける貪欲なアルゴリズムです。 すべての頂点を含むそのグラフのツリーを見つけ、ツリー内のすべてのエッジの合計重みは、考えられるすべてのスパニングツリー以下です。 プリムのアルゴリズムは、密なグラフでは高速です。

アルゴリズム

  • グラフからランダムに選択された単一の頂点で最小スパニングツリーを初期化します。
  • すべての頂点がツリーに含まれるまで、手順3と4を繰り返します。
  • まだツリーにない頂点にツリーを接続するエッジを選択します。これにより、エッジの重みが最小になり、エッジを含めることでサイクルが形成されません。
  • 選択したエッジとそれがツリーに接続する頂点を追加します。

問題

Primのアルゴリズムを使用して、次のグラフGの最小スパニングツリーを検索するとします。

Prim

溶液

ここでは、頂点「a」から始めて進みます。

prim 'Vertex a added prim' Vertex cb added [[File:/discrete_mathematics/prim_vertex_d_e_addtex’added.jpg%20]%20image:/discrete_mathematics/prim_vertex_f_added.jpg|prim 'Vertex f added]]

これは最小のスパニングツリーであり、その合計重みは$(1 + 2 + 3 + 5 + 9)= 20 $です。