プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

データ構造入門:オイラーグラフとハミルトングラフの基本を解説

この記事では、グラフ理論における重要な概念であるオイラーグラフハミルトングラフについて解説します。これらを理解する前に、まずグラフにおける「トレイル(小道)」という基本的な概念を押さえておきましょう。

データ構造入門:オイラーグラフとハミルトングラフの基本を解説

トレイル(小道)とは何か

トレイルとは、辺の列 (v1, v2), (v2, v3), …, (vk−1, vk) で構成される道のことです。このとき、頂点 (v1, v2, …, vk) は同じ頂点を複数回通っても構いませんが、すべての辺は互いに異なる(重複しない)必要があります。

上図のグラフを例にとると、{(B, A), (A, C), (C, D), (D, A), (A, F)} はトレイルの一例です。ただし、頂点 A を2回訪問しているため、これは「単純路(シンプルパス)」とはみなされません。また、始点と終点が同じ頂点になるトレイルは「閉じたトレイル(閉路)」と呼ばれます。

オイラー路(Eulerian Trail)

グラフ G(V, E) におけるオイラー路とは、グラフ内のすべての辺をちょうど1回ずつ通るトレイルのことです。特に、始点に戻ってくる閉じたオイラー路を持つグラフは「オイラーグラフ」と呼ばれます。

言い換えれば、ある頂点から出発して、すべての辺を1回ずつたどりながら出発点へ戻れるとき、そのグラフはオイラーグラフであるといえます。数学者レオンハルト・オイラーは、次の有名な定理を証明しました。

グラフがオイラーグラフであるのは、そのすべての頂点の次数(接続する辺の数)が偶数であるとき、かつそのときに限る。

ハミルトン閉路(Hamiltonian Cycle)

ハミルトン閉路とは、グラフ G のすべての頂点をちょうど1回ずつ通って出発点に戻る閉路のことです。一見するとオイラー路と似ていますが、オイラー路が「辺」に着目するのに対し、ハミルトン閉路は「頂点」に着目する点が大きな違いです。

グラフがハミルトングラフであるための十分条件を与える定理は、これまでに数多く提案されています。しかしながら、任意のグラフがハミルトングラフかどうかを判定する問題は、計算量理論においてNP完全問題として知られており、効率的な解法はまだ発見されていません。

  1. 【データ構造】適応型マージソート(Adaptive Merge Sort)の仕組みと計算量を徹底解説

    適応型マージソート(Adaptive Merge Sort)とは適応型マージソートは、通常のマージソートと同様にソート済みの部分リストをマージ(併合)していくソートアルゴリズムです。ただし、従来のマージソートが要素数1の部分リストから処理を開始するのに対し、適応型マージソートでは、リスト内にすでに存在する「整列済みの並び」を検出し、そのまとまりをそのまま初期の部分リストとして利用します。これにより、順序が整った要素を無駄に分割・再マージすることなく、マージの回数を大幅に削減できます。例として、次の図のようなリストを考えてみましょう。このリストは、あらかじめ2つのソート済み部分リストで構成されて

  2. グラフデータ構造と走査(トラバーサル)アルゴリズムの基礎

    この記事では、グラフデータ構造とは何か、そしてその走査(トラバーサル)アルゴリズムについて詳しく解説します。グラフは非線形データ構造の一種であり、いくつかのノード(頂点)とそれらを結ぶ辺(エッジ)で構成されます。辺には有向と無向の2種類があります。グラフは一般に G(V, E) の形式で表現できます。ここで V は頂点の集合、E は辺の集合を表します。例えば、下図のグラフは G({A, B, C, D, E}, {(A, B), (B, D), (D, E), (B, C), (C, A)}) と表すことができます。グラフの走査アルゴリズムには主に2種類あります。それが「幅優先探索(Bread