グラフ(Graph)は、データ要素間の複雑な二項関係を数学的・論理的に表現するための汎用的な非線形データ構造です。構成要素は、データ本体を表す「頂点(ノード/バーテックス:Vertex)」と、頂点同士の結びつきを示す線である「辺(エッジ:Edge)」の2つです。グラフには、辺に方向性(矢印)がある「有向グラフ」と、方向性のない「無向グラフ」があります。有向グラフは「AさんからBさんへの一方通行のフォロー」や「道路の一方通行制限」、無向グラフは「AさんとBさんの双方向の友人関係」などを表すのに使われます。また、辺に「重み(コスト、距離、料金など)」と呼ばれる数値を割り当てた「重み付きグラフ」は、最短経路を求める問題(ナビゲーションシステムの経路検索など)において不可欠なモデルです。プログラム上での実装方法としては、頂点間の接続の有無を2次元配列で表現する「隣接行列」や、各頂点から接続している頂点をリストで繋ぐ「隣接リスト」の2つが代表的です。
試験では、グラフの基本的な用語(有向・無向、重み付き、経路など)の定義のほか、グラフをプログラムで表現する「隣接行列」と「隣接リスト」の構造上の違いやメモリ効率についての理解が問われます。また、グラフ上の最短経路を求める代表的なアルゴリズムである「ダイクストラ法」や、すべての頂点を一回ずつ巡回する「幅優先探索(BFS)」「深さ優先探索(DFS)」といったアルゴリズムの仕組みとトレース問題が応用情報技術者や基本情報技術者の試験で頻出テーマとなっています。
隣接行列(グラフの接続状況を0と1の行列で表現する手法)、ダイクストラ法(重み付きグラフにおいて2点間の最短経路を効率的に求めるアルゴリズム)、幅優先探索(キューを利用して、出発点に近いノードから順に探索する手法)。