Prim の方法と Kruskal のアルゴリズムは、無向グラフで MST (最小スパニング ツリー) を見つけるための 2 つの一般的な方法です。ただし、これらの手法では、有向グラフの正しい MST を生成できません。これは、有向グラフがプリムとクラスカルのアルゴリズムで使用される基本的な仮定と手法に適合しないためです。
まず、Prim のアルゴリズムがあります。これには、すべての頂点がカバーされるまで貪欲な方法で拡張する最小スパニング ツリーにエッジを追加することが含まれます。 MST 内の頂点は、最小の重みを持つエッジを介して MST の外側の頂点に接続されます。無向グラフ内のすべてのエッジは任意の方向に移動できるため、MST から外部頂点までの最短パスを見つけるのは簡単です。ただし、有向グラフでは、エッジは常に一方向を指し、MST と外部頂点を結ぶ直線が存在しない可能性があります。これは、Prim のアルゴリズムの基本原理に矛盾します。
この例は、MST の頂点 u を MST 外部グラフの頂点 v に接続する有向辺 (u,v) です。 Prim の方法の MST は直接エッジを介して外部頂点に接続する必要があるため、エッジ (u、v) は無視され、その結果 MST が不正確または不十分になる可能性があります。
Kruskal の方法は、サイクルを生成しない最小重みエッジをグラフに繰り返し追加する重み付きエッジ ソート手法です。この方法は、エッジが 2 方向を向いているため、サイクルを簡単に検出できるため、無向グラフに最適です。有向グラフではエッジの方向が重要であるため、サイクルの概念はより微妙になります。クラスカルのアプローチは、この複雑さを無視しています。
構築している MST に有向ループがあると仮定します。クラスカルの技術を有向グラフに適用すると、有向サイクルを含むツリーを生成できます。この方法では、無向エッジベースのサイクル検出メカニズムが有向グラフ内のサイクルを適切にキャプチャできないため、不正確な MST が生成されます。
###結論は###以上がPrim と Kruskal の最小スパニング ツリー アルゴリズムが有向グラフで失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。