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

作業 A〜E に「A は C より前」「B は C より前」「C は D より前」「B は E より前」「E は D より前」という順序の制約がある。すべての制約を満たす作業の順(トポロジカルソートの結果)はどれか。

  1. AA, C, B, E, D
  2. BB, A, E, C, D
  3. CB, E, D, A, C
答えと解説を見る

正解:B. B, A, E, C, D

B, A, E, C, D では、A と B が C より前、C と E が D より前、B が E より前で、5つの制約をすべて満たします。A, C, B, E, D は B より前に C を行っているので「B は C より前」に反し、B, E, D, A, C は C より前に D を行っているので「C は D より前」に反します。トポロジカルソートは、向きがあって閉路のないグラフ(DAG)で、すべての辺が前から後ろへ向くように頂点を並べる操作で、入ってくる辺のない頂点から順に取り出す方法(カーンの方法)や深さ優先探索で求められます。答えは1つとは限らず、この例では制約を満たす順が5通りあります。

  • A. C を B より前に行っており、「B は C より前」に反します。
  • B. 正しい。5つの制約をすべて満たしています。
  • C. D を C より前に行っており、「C は D より前」に反します。
この分野を解く 分野ページへ

関連する計算ツール

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

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

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

  1. 関数 f(x, y) を「y が0なら x を返し、そうでなければ f(y, x mod y) を返す」と定義する。f(84, 36) を呼んだときの戻り値と、f が呼ばれる回数(最初の呼び出しを含む)の組はどれか。
  2. フィボナッチ数を求める関数 fib(n) を「n が1以下なら n を返し、そうでなければ fib(n−1) + fib(n−2) を返す」と再帰で定義した。fib(5) を呼んだとき、fib が呼ばれる回数は最初の呼び出しを含めて何回か。
  3. 1円、4円、6円の3種類の硬貨で8円を支払う。大きい硬貨から使えるだけ使う貪欲法で決めたときの枚数と、最少の枚数の関係として正しいものはどれか。
  4. 容量8のナップサックに、(重さ, 価値) が (2, 3)、(3, 4)、(4, 5)、(5, 6) の4つの品物から選んで入れる。各品物は1つずつしかなく、分割できない。重さの合計が8以下で、価値の合計の最大値はいくらか。
  5. 文字列の中からパターンを探すBM法(ボイヤー・ムーア法)の特徴として正しいものはどれか。