
出典:公益社団法人 日本技術士会「技術士第一次試験 過去問題」
探索対象のグラフ(木構造)で、開始ノードSから目的ノードGを深さ優先探索と幅優先探索で探したときに、調べるノードの個数(開始ノードと目的ノードを含む)を求める問題。左側の枝から先に調べる。
同じ木に対する、深さ優先探索と幅優先探索の、探索順序の違いを追う問題。
① 深さ優先: 左の枝を行き止まりまで進んでから戻る。幅優先: 同じ深さを左から全部調べてから次の深さへ
② 深さ優先: S→1番目の子とその下2つ→2番目の子、その左の子とさらに下の1つ、右の子→3番目の子→G で10個。幅優先: S(1)+深さ1の4個+深さ2のGまでの5個=10個
③ 深さ優先10、幅優先10(⑤)
木は、Sの下に4つの子(左から、子1、子2、子3、子4)がある。子1は2つの子を持ち、子2は2つの子(左の子は、さらに1つの子を持つ)を持ち、子3の子がG、子4は3つの子を持つ。深さ優先探索は、左の枝の奥まで先に調べる。S、子1、子1の左の子、子1の右の子、子2、子2の左の子、その下の子、子2の右の子、子3、Gの順で、10個のノードを調べる。幅優先探索は、深さごとに、左から調べる。S、子1、子2、子3、子4(深さ1の4個)、続いて深さ2で、子1の2つの子、子2の2つの子、Gの順で調べ、Sを含めて1+4+5=10個のノードを調べる。したがって、深さ優先探索10、幅優先探索10で、⑤が正しい。
深さ優先探索=スタックを使い、枝の奥まで進んでから戻る。幅優先探索=キューを使い、浅い階層から順に調べる。調べたノード数は、目的ノードに至るまでに、訪問したノード数(開始と目的を含む)。
キーワード: 深さ優先探索、幅優先探索、木構造、グラフ探索、探索ノード数、DFS、BFS、情報工学部門
同じ問題が計2回出題されています(平成27年度、令和元年度)。