グラフィックで説明する 10 個のグラフ アルゴリズム

グラフィックで説明する 10 個のグラフ アルゴリズム

例と視覚化による 10 個の基本的なグラフ アルゴリズムの簡単な紹介

グラフは、ソーシャル メディア ネットワーク、Web ページやリンク、GPS の位置やルートなど、現実世界のデータをモデル化およびキャプチャするための強力な手段となっています。 相互に関連するオブジェクトのセットがある場合は、グラフを使用してそれらを表現できます。

> 著者による画像

この記事では、分析に非常に役立つ 10 個の基本的なグラフ アルゴリズムとその応用について簡単に説明します。

まずはチャートをご紹介しましょう。

グラフとは何ですか?

グラフは、頂点またはノードの有限の集合と、それらの頂点を接続するエッジの集合で構成されます。 2 つの頂点が同じ辺で互いに接続されている場合、それらは隣接頂点と呼ばれます。

以下はグラフに関連する基本的な定義です。 例については図 1 を参照してください。

  • 順序: グラフの頂点の数
  • サイズ: グラフのエッジの数
  • 頂点次数: 頂点に接続する辺の数
  • 孤立頂点: グラフ内の他のどの頂点とも接続されていない頂点
  • 自己ループ: 頂点からそれ自身への辺
  • 有向グラフ: すべての辺に方向があり、どの頂点が開始頂点でどの頂点が終了頂点であるかを示すグラフ
  • 無向グラフ: 方向を持たない辺を持つグラフ
  • 重み付きグラフ: グラフのエッジには重みがあります
  • 重みなしグラフ: グラフのエッジには重みがありません

> 図1. グラフ用語の視覚化(著者撮影)

1. 幅優先探索

> 図 2. グラフの BFS トラバーサルのアニメーション (画像提供: 著者)

トラバーサルまたは検索は、グラフ上で実行できる基本的な操作の 1 つです。 幅優先探索 (BFS) では、特定の頂点から開始し、現在の深さでそのすべての隣接頂点を探索してから、次のレベルの頂点に進みます。 ツリーとは異なり、グラフにはサイクル (最初の頂点と最後の頂点が同じであるパス) を含めることができます。 したがって、訪問した頂点を追跡する必要があります。 BFS を実装する際には、キュー データ構造を使用します。

図 2 は、サンプル グラフの BFS トラバーサルのアニメーションを示しています。 頂点がどのように発見され (黄色)、訪問されるか (赤) に注目してください。

応用分野

  • 最短経路と最小全域木を決定するために使用されます。
  • 検索エンジンのクローラーは、Web ページのインデックスを構築するために使用されます。
  • ソーシャル ネットワークで検索するために使用されます。
  • BitTorrent などのピアツーピア ネットワークで利用可能な隣接ノードを検索するために使用されます。

2. 深さ優先探索

> 図3. グラフのDFSトラバーサルのアニメーション(画像提供:著者)

深さ優先探索 (DFS) では、特定の頂点から開始し、バックトラック (バックトラッキング) する前に各ブランチに沿って可能な限り探索します。 DFS では、訪問した頂点も追跡する必要があります。 DFS を実装する場合、バックトラックをサポートするためにスタック データ構造を使用します。

図3は、図2と同じグラフ例のDFSトラバーサルのアニメーションを示す。深さを横断してバックトラックする方法に注目してください。

応用分野

  • 2 つの頂点間のパスを見つけるために使用されます。
  • グラフ内のサイクルを検出するのに役立ちます。
  • トポロジカルソートに使用されます。
  • 迷路など、答えが 1 つしかないパズルを解くときに使用します。

3. 最短経路

> 図4. 頂点1から頂点6までの最短経路を示すアニメーション(画像提供:著者)

ある頂点から別の頂点までの最短経路は、移動する必要があるエッジの重みの合計が最小になるようなグラフ内の経路です。

図 4 は、グラフ内の頂点 1 から頂点 6 までの最短経路を決定するアニメーションを示しています。

アルゴリズム

  • ダイクストラ最短経路アルゴリズム
  • ベルマン・フォードアルゴリズム

応用分野

  • Google マップや Apple マップなどのマッピング ソフトウェアで、ある場所から別の場所への道順を検索するために使用されます。
  • 最小遅延パス問題を解決するためにネットワークで使用されます。
  • 抽象マシンで、異なる状態間を遷移することで何らかの目標状態に到達するためのオプションを決定するために使用されます (たとえば、ゲームに勝つための最小限の移動数を決定するために使用できます)。

[[345972]]

> Daniel Dino-SloferによるPixabayの画像

4. サイクル検出

> 図5. サイクル(著者撮影)

サイクルとは、グラフ内の最初の頂点と最後の頂点が同じであるパスです。 頂点から開始し、パスをたどり、開始頂点で終了する場合、このパスは循環になります。 サイクル検出は、これらのサイクルを検出するプロセスです。 図 5 はループを移動するアニメーションを示しています。

アルゴリズム

  • フロイドサイクル検出アルゴリズム
  • ブレントアルゴリズム

応用分野

  • 分散メッセージ ベースのアルゴリズム用。
  • クラスター上の分散処理システムを使用して大規模なグラフを処理するために使用されます。
  • 並行システムでデッドロックを検出するために使用されます。
  • 暗号化アプリケーションで、同じ暗号化値にマップされるメッセージを決定するために使用されるキー。

5. 最小全域木

> 図 6. 最小全域木を示すアニメーション (画像提供: 著者)

最小全域木は、すべての頂点を最小の辺の重みの合計で接続し、サイクルを含まないグラフの辺のサブセットです。

図 6 は、最小全域木を取得するプロセスを示すアニメーションです。

アルゴリズム

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

応用分野

  • コンピュータ ネットワークでブロードキャストするためのツリーを構築するために使用されます。
  • グラフベースのクラスター分析に使用されます。
  • 画像のセグメンテーションに使用されます。
  • 社会地域を連続した地域に分割するために使用される社会地理領域の地域化。

6. 強く連結されたコンポーネント

> 図 7. 強く連結されたコンポーネント (画像提供: 著者)

グラフ内のすべての頂点が他のすべての頂点から到達可能である場合、そのグラフは強く接続されていると言われます。

図 7 は、頂点が赤、緑、黄色の 3 つの強く接続されたコンポーネントを含むグラフの例を示しています。

アルゴリズム

  • コサラジュのアルゴリズム
  • Tarjan の強連結成分アルゴリズム

応用分野

  • 二部グラフのエッジの分類であるダルメージ・メンデルゾーン分解を計算するために使用されます。
  • ソーシャル ネットワークで、密接に関係する人々のグループを見つけ、共通の関心に基づいて推奨を行うために使用されます。

[[345975]]

> Gerd AltmannによるPixabayの画像

7. トポロジカルソート

> 図8. グラフの頂点の位相的順序(著者撮影)

グラフの位相的順序付けは、その頂点の線形順序付けであり、順序付け内のあらゆる有向辺 (u, v) について、頂点 u が v の前に来ます。

図 8 は、頂点の位相順序 (1、2、3、5、4、6、7、8) の例を示しています。 頂点 5 は頂点 2 と 3 の後に来る必要があることがわかります。同様に、頂点 6 は頂点 4 と 5 の後に配置する必要があります。

アルゴリズム

  • カーンアルゴリズム
  • 深さ優先探索アルゴリズム

応用分野

  • 命令のスケジュールに使用されます。
  • データのシリアル化に使用されます。
  • メイクファイル内でコンパイル タスクが実行される順序を決定するために使用されます。
  • リンカー内のシンボル依存関係を解決するために使用されます。

8. グラフィックの色付け

> 図9. 頂点カラーリング(著者撮影)

グラフの色付けは、特定の条件を確保しながらグラフ要素に色を割り当てます。 頂点シェーディングは、最も一般的に使用されるグラフィック シェーディング手法です。 頂点彩色では、k 色を使用してグラフの頂点を彩色しようとしますが、隣接する 2 つの頂点は同じ色であってはなりません。 その他のシェーディング手法には、エッジ シェーディングやフェイス シェーディングなどがあります。

グラフの彩度数とは、グラフを色付けするために必要な最小の色数です。

図 9 は、4 色を使用してサンプル グラフの頂点を色付けした様子を示しています。

アルゴリズム

  • 幅優先探索や深さ優先探索を使用するアルゴリズム
  • 貪欲な色付け

応用分野

  • スケジュールに使用されます。
  • モバイル無線周波数を割り当てるために使用されます。
  • 数独パズルのモデリングと解決に使用されます。
  • グラフが二部グラフであるかどうかを確認するために使用されます。
  • 隣接する国や地域の色が異なる国や州の地図を色分けするために使用されます。

[[345978]]

> TheAndrasBarta による Pixabay の画像

9. 最大流量

> 図10. 最大流量の決定(著者提供画像)

グラフは、エッジの重みをフローとして持つフロー ネットワークとしてモデル化できます。 最大フロー問題では、最大フローを与えるフロー パスを見つける必要があります。

図 10 は、ネットワークの最大流量を決定し、最終的な流量値を決定するアニメーションの例を示しています。

アルゴリズム

  • フォード-フォークソンアルゴリズム
  • エドモンズ・カープアルゴリズム
  • ディニックのアルゴリズム

応用分野

  • 航空会社の配車サービスでフライト乗務員のスケジュールを設定するために使用されます。
  • 画像セグメンテーションで画像の背景と前景を見つけるために使用されます。
  • 部門のリーダーに追いつくのに十分な試合数に勝てない野球チームを排除するために使用されます。

10. マッチング

> 図11. 二部グラフのマッチング(著者撮影)

グラフ内の一致とは、共通の頂点を持たないエッジのセットです (つまり、2 つのエッジが共通の頂点を共有しません)。 可能な限り多くの頂点と一致する可能な限り多くのエッジが含まれるマッチングは、最大マッチングと呼ばれます。

図 11 は、オレンジ色と青色で表された 2 つの頂点セットを持つ二部グラフの完全マッチングを取得するアニメーションを示しています。

アルゴリズム

  • ホップクロフト・カープアルゴリズム
  • ハンガリーアルゴリズム
  • ブルーミングアルゴリズム

応用分野

  • 結婚相手探しに利用され、花嫁と花婿をマッチングさせます(安定した結婚問題)。
  • 頂点カバーを決定するために使用されます。
  • 交通理論では、資源の割り当てや移動の最適化に関する問題を解決するために使用されます。

最後に

この記事が、グラフ アルゴリズムのシンプルで高レベルな入門として役立つことを願っています。 あなたの考えを聞かせてください。

読んでいただきありがとうございました。

<<:  機械学習における数学的意義

>>:  5Gのサポートにより、AIの顔を変えること以外に人工知能は何ができるのでしょうか?

ブログ    
ブログ    

推薦する

快手AIハッカソンは「AIの名の下に」みんなの幸福を向上させるために終了しました

最近、快手の内部インキュベーターである快手幸福実験室が主催した第2回ハッカソン「AIの名において」の...

...

単一のViTモデルがマルチモーダルおよびマルチタスクのタスクを実行し、Googleは共同トレーニング戦略を使用して複数のSOTAを達成します。

[[441692]]トランスフォーマーは本当に多用途です。トランスフォーマーは、もともと自然言語処...

...

機械学習の応用シナリオは数多くありますが、金融分野での違いは何でしょうか?

[[241804]]ビッグデータダイジェスト制作編纂者:大迪、彭耀慧、茶曦、唐元、夏亜偉金融の世界...

...

人工知能は人間と同じくらい創造的になれるのでしょうか?

創造性は、芸術、文学、科学、技術など、斬新で価値があり、意義のある作品を生み出すことを可能にする人間...

...

来年のビジネス インテリジェンスの見通しはどうでしょうか?

インテリジェント テクノロジーの使用が拡大するにつれて、ビジネス インテリジェンスの最新動向を常に把...

ICLR 2022: AI が「目に見えないもの」を認識する方法

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

GPT-4を無料で入手するための5つのツール

翻訳者 |陳俊レビュー | Chonglou OpenAIがもたらしたGPT-4が、世界で最も人気が...

...

...

機械学習の問題を解決する一般的な方法があります!これを読んでください

平均的なデータ サイエンティストは毎日大量のデータを処理します。データのクリーニング、処理、機械学習...

...