グラフ理論におけるEulerian Circuitsの理解

Eulerian回路は、グラフのすべてのエッジを正確に1回横断し、開始頂点に戻すクローズドウォークです。 コンセプトは、1736年にレオナーハルト・ユーラーが提唱するKönigsbergの有名な7橋から始まります。 Eulerは、グラフ内のすべての頂点が度合い、グラフが接続されている(分離された頂点を無視する)場合にのみ、そのような回路が存在していることを証明しました。 この基本結果は、グラフ理論の基礎を敷き、ネットワーク、回路、および組み合わせ、最適化、および最適化に重要な役割を果たしています。

それを正式に状態にするには: []]G[ = ([])]、E])は、非方向のグラフになります。すべての頂度[vv[[FLT:]]]が、E[[FLT:]]が、非方向のグラフである場合のみ、Eulerian回路が、接続されていない場合は、および、すべての頂点が、および、すべての頂点が、および非接近接する場合には、すべての頂点が、および、および、および非接近距離が、および非接する場合には、すべての頂点が、および非接する場合には、すべての頂点が、および非接する。

ヒエルホルザーのアルゴリズムは何ですか?

ドイツのマテマティシャン・カール・ヒエルホラーザーが1873年に出版したHierholzerのアルゴリズムは、必要な条件が満たされたとき、Eulerian回路の構築のための効率的な方法です。一連のサイクルを見つけてそれらをマージすることによって回路を構築します。アルゴリズムは、線形時間O[]()で実行され、その範囲の端やスパースの点数を合わせるために、最適な範囲をグラフに合わせます。

コンセプト

  • サイクル検出:]]は、頂点から始まり、未使用のエッジをフォローして、開始頂点に戻ります。 これは簡単なサイクルを形成します。
  • のサイクルをマージ:] の電流回路の頂点が未使用のエッジを発生させると、その頂点から新しいサイクルが形成され、回路に差し込まれます。
  • エッジ除去:]]]は、エッジが使用されるように、それらはマークまたは削除され、それらを再訪を避ける。

Hierholzerのアルゴリズムのステップバイステップの説明

アルゴリズムは再帰的にも反復的に実装できます。コアの考え方は、サブ-回路を繰り返し拡張することで回路を構築することです。下は詳細な分解です。

ステップ1: 起動するVertexを選択します

少なくとも1つのエッジで頂点を選択します。グラフが接続され、すべての度が均等であるため、任意の頂点が動作します。通常、アルゴリズムは頂点]vで始まります。

ステップ2:サイクルを横断する

現在の頂点から、未使用のエッジを隣接する。 未使用のエッジに沿って移動し、使用するごとにマークを付けて、開始頂点に戻ります。 これは、サイクル[Cを生成します。 サイクルがグラフのすべてのエッジを含む場合、アルゴリズムは終了します。 Eulerian回路があります。

ステップ3:未使用のエッジで頂点を見つける

未使用のエッジをまだ持っている頂点[]]u[の電流回路をスキャンします。 いったいない場合は、アルゴリズムが完成します。 それ以外の場合は、[]]uをそのような頂点にします。

ステップ4: ]uから新しいサイクルをビルドする

[]u]で始まり、未使用のエッジ間でサイクルファインディングプロセスを繰り返します。これにより、新しいサイクルC ‘が始まり、]]uで終了します。

ステップ5:新しいサイクルをメインサーキットにマージする

]C ′] の位置にメイン回路に u] をインサートします。 その結果、散歩は、まだ回路(閉鎖)であり、これまでのすべてのエッジをカバーします。 ステップ3に戻ります。

すべての頂点が均等に度合い、プロセスは決して立ち往生しません。頂点に入ると、頂点の度がゼロになるまで、常に未使用のエッジが残ります。アルゴリズムは最終的な歩行がすべての端を正確に一度含んでいることを保証します。

例: エスカリア回路の構成

頂点A、B、C、D、E. Edges:AB、AC、AD、BC、BD、CE、DE(これは、各頂点がさらに度合いの小さなグラフです。deg(A)=3、deg(B)=3、deg(C)=2、deg(E)=1、deg(E)=1、つまり、度が条件を満たしていない小さなグラフです。 正しいようにしてください:すべてのグラフは、すべての3〜3〜3、deg(B)=3〜3、deg(C)=2、deg(D)=3、deg(E)=1、または3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜3〜5〜5〜3〜5〜5〜3〜3〜3〜5〜3〜3〜3〜5〜5〜3〜3〜3〜3〜3〜3〜3〜3〜5〜5〜5〜3〜3

Hierholzerのアルゴリズムを実行します。

  • 頂点1で始まります。 エッジ1〜2(使用)、2〜3(使用)、3で未使用エッジ3〜4(使用)、4〜5(使用)、5〜3(使用)を選択します。 3に戻りますが、最初の開始点は1でした。 実際には、アルゴリズムは開始頂点に戻すサイクルを形成する必要があります。 適切に追跡してみましょう: 1〜2、2〜3で開始すると、3〜3〜3〜3〜3〜3〜4〜3〜3〜3〜3〜3〜4、今は3〜4〜3〜3〜4〜3〜3〜4〜4〜3〜3〜3〜4〜4〜3〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜3〜3〜3〜4〜4〜3〜4〜4〜3〜3〜4〜3〜3〜4〜4〜3〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4〜4
  • スキャンC1:頂点3は未使用のエッジを持っています。 3:3 - 4、4 - 5、5 - 3で新しいサイクルを開始します。 サイクルC2 = 3 - 4 - 5 - 3。
  • 頂点3でC1にC2をマージ: 結果回路:1〜2〜3〜4〜5〜3〜1。 使用されるすべてのエッジは、回路はEulerianです。

この例では、サイクルが発見され、シームレスに組み合わせるアルゴリズムのエレガンスを示しています。

複雑化と実装の検討

Hierholzerのアルゴリズムは[]]O(])]V+E[[]])))エッジ除去のための効率的なデータ構造(例えば、イテレータまたはリンクリストを使用して)を使用して、隣接リスト表現と効率的なデータ構造を使用するときに実行されます。各エッジが正確に一度に処理されるので、アルゴリズムは最適です[FLT:[FLT:][FLT:[FLT:]]] [FLT:[FLT:]] [F]]] [F]] [FLT:[F] [F] [F] [FLT:[F] [F] [F] [F] [F] [[F]] [[F] [[F]] [FLT:[F]]] [[F] [[F] [[F] [[F] [[F]]] [[F]]]] [[F] [[F] [[F]] [[F]]

グラフの指示では、グラフがEulerian(各頂点の-degree等)であるという点で同じアプローチが機能します。 アルゴリズムの度合いも、方向のケースにも変換します。

フレリーのアルゴリズムとの比較

別の有名なアルゴリズムは、Eulerian回路を見つけることは、Fleuryのアルゴリズムであり、残りのグラフが接続されているまま(すなわち、橋を避けます)保つことを保証しながら、エッジを横断することによって動作します。 FleuryのアルゴリズムはO]()度]]][FLT] - と、Elearerは、各々の接続先の接続先を順に並べ替える必要があります。

Hierholzerのアルゴリズムの適用

エレリアン回路を効率的に見つけられる能力は、多くの現実的な世界の使用を持っています。

中国の郵便人の問題

中国の郵便利用者の問題(ルート検査)では、目標は、少なくとも一度にすべてのエッジをカバーする最も短いクローズドウォークを見つけることです。既にEulerianであるグラフについては、ソリューションは単にEulerian回路です。Hierholzerのアルゴリズムは、その回路を提供します。非Eulerianグラフの場合、問題はすべての度を作るためにエッジをduplicatingし、そしてHierholzerのを適用することに減少します。

ネットワークのルーティングと回路設計

道路の分散、ゴミ収集、ネットワークパケットの伝達のための効率的なルートの設計にEulerian回路が使われ、各リンクが正確に一度にトラバースされなければならない。アルゴリズムは冗長な旅行を最小限に抑えるのに役立ちます。

DNAの片付けアセンブリ

計算生物学では、デ・ブルージュン・グラフ・アプローチは、ゲノム・アセンブリが、K-mer グラフによるEulerian パスや回路を見つけることに依存しています。Hierholzerのアルゴリズムは、多くのアセンブリのコアコンポーネントであり、短い読み物から連続したシーケンスの再構築を可能にします。

コンピュータグラフィックスと迷路生成

エスカライドトレイルは、マズと特定のグラフ描画アルゴリズムで、ペンを持ち上げずにエッジを描画する必要があります。アルゴリズムは最適な構造を提供します。

集積回路のテスト

非常に大きいスケールの統合(VLSI)の設計では、すべての接続をテストしますEulerian回路問題として、テスターの動きを最小にすることができます。

さらなる読書および外部リソース

ユーリアン回路とハイエルホザーのアルゴリズムの理解を深めるために、次のリソースが推奨されます。

コンテンツ

Hierholzerのアルゴリズムは、そのエレガンス、スピード、および広範な適用性のために、グラフの横断面の角質を維持します。 サイクルを見つけることとマージの問題を回避することで、Eulerian回路の構築のための簡単で最適なソリューションを提供します。 ネットワークルートの設計、ゲノムの組み立て、またはパズルの解決、このアルゴリズムを理解することは、頂点をさらに詳しく説明するだけでなく、グラフの強力なツールと、その周辺機器の形状の複雑さを容易にすることを可能にします。