第23講 数独を解くソフトVer.1の制作
第4話 数独を解くソフトはいかにしたら解くスピードを上げることができるか
Ver.0を改良して、解法スピードアップをするにはどうしたらよいでしょうか。
問題を解くときの鉄則は、条件の厳しい方からクリアするです。
ではこの問題なら条件が厳しいセルははどこでしょうか。
現時点で、もっとも候補が少ないセルはどれでしょうか。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
0 | * | 6 | 5 | 3 | 5 | 4 | * | 5 | 5 |
1 | 3 | 5 | * | * | 5 | * | 5 | 4 | 5 |
2 | 5 | 7 | 6 | 5 | 6 | 5 | 8 | 6 | 6 |
3 | 5 | 7 | 6 | 3 | 6 | * | 5 | 6 | 5 |
4 | 4 | 7 | * | 1 | 4 | 4 | 5 | 6 | * |
5 | 4 | 5 | 4 | 3 | * | * | 5 | * | 4 |
6 | 3 | 4 | 4 | * | 4 | 3 | 5 | * | * |
7 | * | 7 | 5 | 5 | 5 | 4 | 5 | 5 | 6 |
8 | * | 6 | 4 | * | 5 | 4 | 5 | 5 | 5 |
上の図は、各セルの候補数です。
赤い色を付けたセルは、
行の条件から
1 | 4 | |||||||
3 | 9 | 6 | ||||||
5 | ||||||||
6 | 3 | |||||||
1 | 4 | 8 | ||||||
2 | 3 | 6 | ||||||
5 | ||||||||
4 | 8 |
6と3が候補から外れます。
1 | 4 | |||||||
3 | 9 | 6 | ||||||
5 | ||||||||
6 | 3 | |||||||
1 | 4 | 8 | ||||||
2 | 3 | 6 | ||||||
5 | ||||||||
4 | 8 |
次に列の条件から
9,2,8が候補から外れます。最後に
1 | 4 | |||||||
3 | 9 | 6 | ||||||
5 | ||||||||
6 | 3 | |||||||
1 | 4 | 8 | ||||||
2 | 3 | 6 | ||||||
5 | ||||||||
4 | 8 |
ブロックの条件から5,1,4が外されます。
まとめると6,3,9,2,8,5,1,4が候補から外されました。
したがって、残っている候補は7のみです。
ですから赤いセルが一番条件の厳しいセルです。
以上の説明を踏まえて下の2つをよくご覧になれば、2つ下の表の意味がお分かりになるはずです。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
0 | * | 6 | 5 | 3 | 5 | 4 | * | 5 | 5 |
1 | 3 | 5 | * | * | 5 | * | 5 | 4 | 5 |
2 | 5 | 7 | 6 | 5 | 6 | 5 | 8 | 6 | 6 |
3 | 5 | 7 | 6 | 3 | 6 | * | 5 | 6 | 5 |
4 | 4 | 7 | * | 1 | 4 | 4 | 5 | 6 | * |
5 | 4 | 5 | 4 | 3 | * | * | 5 | * | 4 |
6 | 3 | 4 | 4 | * | 4 | 3 | 5 | * | * |
7 | * | 7 | 5 | 5 | 5 | 4 | 5 | 5 | 6 |
8 | * | 6 | 4 | * | 5 | 4 | 5 | 5 | 5 |
赤いセル=座標(4,3)に入る数字の候補:7
濃い緑セル=座標(0,3)に入る数字の候補:3,5,7
座標(0,3)に入る数字の候補:2,7,8
座標(3,3)に入る数字の候補:3,6,7
・
・
・
私は、このようにセルに候補数を明確にすることと候補=リスト(内容)を明らかにすることを問題構造解析と呼びます。
つまり、
問題構造解析=セル候補数+セルに入る数字の候補
です。
まず、セル候補数を明確にし、候補数の小さい方から順に入れていくソフトのバージョンをVer.1と名付け、
リスト=候補も利用する方式をVer.2と名付けたいと思います。
では、構造解析はいかにしたらよいか、
次の構造解析をした後、候補数の少ない順に入力するにはどうしたらよいか考えてください。
第3話へ 第4話へ
VBA講義第1部へ
vc++講義へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
数学研究室に戻る