課題5: 逐次版n女王プログラムの高速化


Web課題4で完成させたプログラムの高速化を試みる。 元の関数等は消さずに残しておき、速度比較ができるようにする。 速度比較は盤面のサイズ n の変化に対し,全解探索に要する時間がど う変化するか調べること。

以下にはさまざまな高速化手法を示すが、 部分解の内容のコピーを避ける形で高速化を行うことを必須とする。 すべての高速化手法を試す必要はない。余力がある場合、他の実験履修者の 速度を上回りたい場合などに参考にすること。

本課題(Web課題5)は,配布資料では課題4に含まれていた. 本演習では,時間の関係でWeb課題5の時間がとれないため, Web課題5を進めた後(従って上記で必須とした課題を進めた後) のサンプルプログラム (ビットマップ版: Makefile nq.c) (配列版: Makefile nq_a.c) を準備しているので、Web課題6のベースとしてよい。


部分解のデータ構造の工夫・拡張可能判定の高速化

拡張(の試み)の列を, と考える.

部分解の内容のコピーを避ける


枝刈り


再帰呼出しの代わりに明示的なスタックを利用


並列プログラミング, 先頭ページへ
Masahiro Yasugi