データ構造とアルゴリズム

辺に重みのないグラフで、出発点から各頂点までの最短の辺の数を求めたい。適した探索の方法と、そのとき使うデータ構造の組はどれか。

  1. A幅優先探索と、キュー
  2. B深さ優先探索と、スタック
  3. C幅優先探索と、スタック
答えと解説を見る

正解:A. 幅優先探索と、キュー

幅優先探索は、出発点から辺1本で行ける頂点、2本で行ける頂点…と、近い順に訪れます。見つけた頂点をキューの末尾に入れ、先頭から取り出して調べることで、この「近い順」が保たれるので、最初に到達したときの辺の数がそのまま最短の数になります。深さ優先探索(再帰やスタックを使う)は1本の道を行けるところまで進むので、遠回りの経路で先に到達することがあり、最短は保証されません。キューの代わりにスタックを使うと、深さ優先探索に近いたどり方になってしまいます。

  • A. 正しい。キューを使うと出発点から近い順に訪れるので、最短の辺の数が求まります。
  • B. 深さ優先探索は遠回りの経路で先に到達することがあり、最短は保証されません。
  • C. スタックを使うと最後に見つけた頂点から調べるので、近い順に訪れなくなります。
この分野を解く 分野ページへ

関連する計算ツール

データ構造とアルゴリズムの参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

データ構造とアルゴリズムのほかの問題

  1. 辺に向きのないグラフで、各頂点の隣の頂点が次のとおりである。A: B, C / B: A, D, E / C: A, F / D: B / E: B, F / F: C, E。頂点 A から再帰的な深さ優先探索を行う。隣の頂点はここに書いた順に調べ、まだ訪れていない頂点が見つかったらすぐにその頂点へ進む。頂点を訪れる順はどれか。
  2. 辺に向きのないグラフで、辺の重み(距離)が S−A: 4、S−B: 1、A−B: 2、A−C: 1、B−C: 5、C−T: 3、A−T: 6 である。ダイクストラ法で S から T までの最短経路を求めたとき、その経路と長さはどれか。
  3. ダイクストラ法で正しい最短経路が求められるための、グラフについての条件として正しいものはどれか。
  4. 作業 A〜E に「A は C より前」「B は C より前」「C は D より前」「B は E より前」「E は D より前」という順序の制約がある。すべての制約を満たす作業の順(トポロジカルソートの結果)はどれか。
  5. 関数 f(x, y) を「y が0なら x を返し、そうでなければ f(y, x mod y) を返す」と定義する。f(84, 36) を呼んだときの戻り値と、f が呼ばれる回数(最初の呼び出しを含む)の組はどれか。