グラフの解説(基本情報技術者シラバス用語)

目次

グラフとは

グラフ(Graph)とは、データ同士の複雑な「つながりや関係性」を表現するためのデータ構造です。個々のデータを「頂点(ノード)」、つながりを示す線を「辺(エッジ)」と呼びます。辺に矢印(向き)があるものを「有向グラフ」と呼び、一方通行のルートなどを表します。向きがないものは「無向グラフ」と呼び、双方向のつながりを表します。

具体例

電車の路線図が代表的な例です。各駅が「頂点」、駅間をつなぐ路線が「辺」となります。また、SNSの人間関係において、ユーザーが「頂点」、フォロー関係(片方向の矢印)が「辺」となるのもグラフ構造です。

[駅A] ────辺──── [駅B]
  │                 │
  辺                辺
  │                 │
[駅C] ────辺──── [駅D]
※頂点(駅)とそれをつなぐ辺(路線)によるネットワーク

もう少し詳しく

グラフ(Graph)は、データ要素間の複雑な二項関係を数学的・論理的に表現するための汎用的な非線形データ構造です。構成要素は、データ本体を表す「頂点(ノード/バーテックス:Vertex)」と、頂点同士の結びつきを示す線である「辺(エッジ:Edge)」の2つです。グラフには、辺に方向性(矢印)がある「有向グラフ」と、方向性のない「無向グラフ」があります。有向グラフは「AさんからBさんへの一方通行のフォロー」や「道路の一方通行制限」、無向グラフは「AさんとBさんの双方向の友人関係」などを表すのに使われます。また、辺に「重み(コスト、距離、料金など)」と呼ばれる数値を割り当てた「重み付きグラフ」は、最短経路を求める問題(ナビゲーションシステムの経路検索など)において不可欠なモデルです。プログラム上での実装方法としては、頂点間の接続の有無を2次元配列で表現する「隣接行列」や、各頂点から接続している頂点をリストで繋ぐ「隣接リスト」の2つが代表的です。

試験でのポイント

試験では、グラフの基本的な用語(有向・無向、重み付き、経路など)の定義のほか、グラフをプログラムで表現する「隣接行列」と「隣接リスト」の構造上の違いやメモリ効率についての理解が問われます。また、グラフ上の最短経路を求める代表的なアルゴリズムである「ダイクストラ法」や、すべての頂点を一回ずつ巡回する「幅優先探索(BFS)」「深さ優先探索(DFS)」といったアルゴリズムの仕組みとトレース問題が応用情報技術者や基本情報技術者の試験で頻出テーマとなっています。

関連する用語

隣接行列(グラフの接続状況を0と1の行列で表現する手法)、ダイクストラ法(重み付きグラフにおいて2点間の最短経路を効率的に求めるアルゴリズム)、幅優先探索(キューを利用して、出発点に近いノードから順に探索する手法)。

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ