深さ優先探索を行うプログラムを、再帰呼び出しを用いずにC言語で書いて実行せよ。
処理対象のグラフG3は隣接行列で下記のように与える。
探索中に複数の選択肢がある場合は、常に番号の若いノードを選択すること(授業のプログラムと同一)。
Graph G3 |
|
【注意】 | |
誰かに教えてもらった場合: | その学生(氏名と9桁の学籍番号)をプログラム先頭に記し、さらにプログラム中コメントを使って、教えてもらったところの解説を数行以上書き込むこと。(教えてもらった部分の解説コメントのないプログラムは全く評価しません。「全体です」のようなコメントの場合も同じです。) |
誰かに教えてあげた場合: | その学生(氏名・学籍番号)をプログラム先頭に記すこと。 |
お互いに相談した場合: | 教えてもらった・教えてあげたの例に準拠して提出してください。 |
授業で示した深さ優先探索プログラムにおいて、頂点数8の連結無向グラフのうち、空間計算量を最小にするようなグラフの例と出発ノードを示せ。
また、その時の空間計算量を示せ。
授業で示した深さ優先探索プログラムにおいて、頂点数N、辺の数Eに対して時間計算量はO(N×N)である。
どのような改良を施せば、この時間計算量を削減することができるか、プログラムの改良の方針を示せ。
また、そのときの時間計算量をN,Eをもちいて示せ。
(ヒント:連結無向グラフで考えられる辺の数の最大値はNを用いてどう表せるか?)
課題1cの改良法に基づき、実際にプログラムを作成し、実行せよ。