Data-structures-algorithms-spanning-tree

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

データ構造とアルゴリズム-スパニングツリー

スパニングツリーはグラフGのサブセットであり、すべての頂点が最小数のエッジで覆われています。 したがって、スパニングツリーにはサイクルがなく、切断できません。

この定義により、すべての接続された無向グラフGには少なくとも1つのスパニングツリーがあるという結論を導き出すことができます。 切断されたグラフには、すべての頂点にまたがることができないため、スパニングツリーがありません。

スパニングツリー

1つの完全なグラフから3つのスパニングツリーが見つかりました。 完全な無向グラフは、最大 n ^ n-2 ^ のスパニングツリーを持つことができます。ここで、 n はノードの数です。 上記の例では、 nは3 です。したがって、 3 ^ 3-2 ^ = 3 スパニングツリーが可能です。

スパニングツリーの一般的なプロパティ

1つのグラフが複数のスパニングツリーを持つことができることがわかりました。 以下は、グラフGに接続されたスパニングツリーのいくつかのプロパティです-

  • 連結グラフGは、複数のスパニングツリーを持つことができます。
  • グラフGのすべてのスパニングツリーは、同じ数のエッジと頂点を持ちます。
  • スパニングツリーにはサイクル(ループ)がありません。
  • スパニングツリーから1つのエッジを削除すると、グラフが切断されます。 スパニングツリーは*最小接続*です。
  • スパニングツリーに1つのエッジを追加すると、回線またはループが作成されます。 スパニングツリーは*最大非循環*です。

スパニングツリーの数学的特性

  • スパニングツリーには n-1 のエッジがあります。 n はノード(頂点)の数です。
  • 完全なグラフから、最大 e-n+を削除して1 エッジ、スパニングツリーを構築できます。
  • 完全なグラフには、最大 n ^ n-2 ^ 個のスパニングツリーを含めることができます。

したがって、スパニングツリーは接続されたグラフGのサブセットであり、切断されたグラフにはスパニングツリーがないと結論付けることができます。

スパニングツリーの応用

スパニングツリーは基本的に、グラフ内のすべてのノードを接続するための最小パスを見つけるために使用されます。 スパニングツリーの一般的なアプリケーションは-

  • 市民ネットワーク計画
  • コンピューターネットワークルーティングプロトコル
  • クラスター分析

小さな例を使ってこれを理解しましょう。 都市ネットワークは巨大なグラフであると考えてください。現在、電話回線を最小限の回線ですべての都市ノードに接続できるように配置することを計画しています。 これが、スパニングツリーの出番です。

最小スパニングツリー(MST)

重み付きグラフでは、最小スパニングツリーは、同じグラフの他のすべてのスパニングツリーよりも最小の重みを持つスパニングツリーです。 実際の状況では、この重みは、距離、輻輳、トラフィック負荷、またはエッジに示される任意の値として測定できます。

最小スパニングツリーアルゴリズム

ここでは、2つの最も重要なスパニングツリーアルゴリズムについて学習します-

  • リンク:/data_structures_algorithms/kruskals_spanning_tree_algorithm [Kruskal’s Algorithm]
  • リンク:/data_structures_algorithms/prims_spanning_tree_algorithm [Prim’s Algorithm]

どちらも貪欲なアルゴリズムです。