有向グラフと無向グラフの違いを解説

有向グラフ(ダイグラフ)と無向グラフを比較します。辺の表現、ユースケース、次数の定義、各タイプでのアルゴリズムの動作の違いを学びます。

Graph Types

詳細な説明

有向グラフ vs 無向グラフ

有向グラフと無向グラフの区別は、グラフ理論の最も基本的な概念の一つです。辺の解釈方法を決定し、適用可能なアルゴリズムに大きな影響を与えます。

無向グラフ

無向グラフでは、すべての辺が双方向です。AとBの間に辺がある場合、AからBへBからAへ移動できます。

次数 = ノードに接続された辺の総数

有向グラフ(ダイグラフ)

有向グラフでは、辺に方向があります。AからBへの辺(A → B)は、BからAへの辺を意味しません。

入次数 = 入ってくる辺の数。出次数 = 出ていく辺の数。

アルゴリズムの違い

特徴 無向 有向
連結性 連結 / 非連結 強連結 / 弱連結
サイクル検出 親以外への後退辺 DFS木での後退辺
トポロジカルソート 適用不可 DAGのみ
最短経路 BFS(重みなし) BFSまたはDijkstra

適切なタイプの選択

無向は相互関係に使用:友人関係、双方向道路、類似性ネットワーク。有向は一方向の関係に使用:Webリンク、依存関係、フォロワーグラフ、ワークフローDAG。

ユースケース

FacebookのようなSNSは友人関係を無向辺でモデル化し、Twitter/Xはフォローを有向辺でモデル化します。パッケージマネージャの依存関係グラフは有向です。道路ネットワークは双方向道路に無向、一方通行に有向を使用します。

試してみる — Graph Visualizer

フルツールを開く