2.5. グラフ理論

1. グラフ理論の基礎概念

1.1. 無向グラフ (Undirected Graph)

 無向グラフは、頂点同士を結ぶ辺が方向を持たないグラフです。これは、相互に関係する要素同士を表現するのに適しています。

例: ソーシャルネットワークにおいて、友達関係は無向グラフで表現できます。友達であることは双方向の関係だからです。

1.2. 有向グラフ (Directed Graph)

 有向グラフは、頂点同士を結ぶ辺に方向があるグラフです。これは、一方向の関係を表現するのに適しています。

例: Webページ間のハイパーリンク構造は有向グラフで表現されます。リンクは一方向であり、リンク元とリンク先が明確だからです。

1.3. 連結グラフ (Connected Graph)

 連結グラフは、グラフ内の任意の2つの頂点間にパス(経路)が存在するグラフです。つまり、すべての頂点が何らかの形で他の頂点に接続されていますが、すべての頂点が互いに直接接続されているわけではありません。

例: あるネットワークで、一部のコンピュータが直接的に他のコンピュータと接続されていなくても、他のコンピュータを経由して接続できる状態は連結グラフで表現できます。

1.4. 完全グラフ (Complete Graph)

 完全グラフは、すべての頂点が互いに直接接続されているグラフです。これにより、各頂点が他のすべての頂点にエッジを持つ状態が表現されます。

例: 会議でのコミュニケーションネットワークを表す場合、すべての参加者が互いに連絡を取ることができる状態は完全グラフで表現できます。

1.5. 重み付きグラフ (Weighted Graph)

 重み付きグラフは、各辺に重み(コスト、距離、時間など)が割り当てられているグラフです。これは、最短経路問題や最小コスト問題の解決に使用されます。

例: 都市間の道路ネットワークにおいて、各道路に距離や所要時間を重みとして割り当てることで、最短距離や最小時間のルートを見つけることができます。

2. 具体例

 以下に、応用情報処理技術者試験で過去に出題された問題を基にした具体例を2つ示します。

例題1: 「無向グラフにおいて、6つの頂点と9本の辺を持つグラフが与えられた。このグラフが連結グラフである場合、このグラフには何本の辺が追加できるか。」

解説: 連結グラフとは、すべての頂点が相互に接続されているグラフです。最大で (6 * (6 – 1)) / 2 = 15 本の辺が存在する可能性があるので、現在の9本の辺からさらに6本の辺を追加できます。


例題2: 「有向グラフにおいて、5つの頂点があり、それぞれの頂点から他のすべての頂点へ矢印が向けられている場合、このグラフに含まれる辺の総数はいくつか。」

解説: 各頂点から他の4つの頂点へ矢印が向けられているため、辺の総数は 5 * 4 = 20 本となります。

3. グラフ理論の応用例

 グラフ理論は、多くの実世界の問題に応用されています。以下に、具体的な応用例を示します。

  • 物流ネットワーク最適化: 重み付きグラフを使用して、複数の配送拠点と配送先を結ぶネットワークをモデル化し、配送コストや時間を最小化する最適なルートを計算します。この応用では、各拠点間の距離や交通状況などを重みとして割り当て、Dijkstra法などのアルゴリズムを用いて最短経路を求めます。
  • 電力網の設計: 無向グラフを使用して、発電所と変電所、家庭を結ぶ電力網を設計します。最適な接続パターンを見つけることで、電力のロスを最小限に抑えるとともに、信頼性の高い電力供給が可能になります。
  • ソーシャルメディアの影響力分析: 有向グラフを使用して、ユーザー間のフォロワー関係をモデル化し、影響力の強いユーザーを特定します。これにより、マーケティングキャンペーンのターゲットを絞り込み、効果的なプロモーションが可能になります。