第1講 序章(数独自動生成を実現するための課題)
第5話 最難関課題-いかにして理詰めで解ける問題を選び出すか
この数独自動生成アプリ開発においても最も難しい課題
ⅳ.理詰めで解ける問題を選ぶ
をクリアするにはどうしたらよいでしょうか。
答えは、まず
ⅰ.問題作成段階で、いかなる行・列・ブロックにおいても数字を重複させてはならない
ⅱ.解が存在する
ⅲ.別解が存在しない
を満たす問題を作成してから、
理詰め解法エンジンを使って解き直させて、
解けるかどうかで、判定させればよいのです。
解ける問題だけを画面に表示させればナンプレ自動生成アプリは完成します。
では、理詰めで解かせるにはどうしてらよいのでしょうか。
答えは、人間が理詰めで解いているときと同じ発想法でコンピュータに解かせるです。
といえば、簡単なことのように見えますが、
コンピュータに人間と同じ考え方で解かせるという課題は、
つい最近まで出来なかったコンピュータにとって最も苦手な課題です。
深層学習によって、コンピュータプログラム=ソフトが飛躍的に能力を伸ばして、
学習能力を獲得して初めて人間と同様な思考方法が出来るようになったのです。
AIというと特別な機械を思い浮かべる方もいらっしゃるでしょうが、
普通のコンピュータにすぎません。
でも、AIを組まないと人間と同じ解き方で考えられるようになるという意味ではありません。
いかに難しい課題であるかを皆さんに感じ取ってほしいから述べたにすぎません。
人間が理詰めで解いているときと同じ方法で解かせるには、
原理と方法
概要 | 概要 | |
原理1 | ライン排除 | |
原理2 | ライン反照排除 | |
原理3 | ブロック排除 | |
原理4 | 1:1対応確定と排除 | |
方法 | セルリスト絞り込み | |
原理5 | #排除 |
をソフトに組み込みます。
数独 ナンプレ 難問 上級 わかりやすい解き方 簡単な解法 シンプルな攻略法の研究参照
さらに、より高度化するためには、X-wing、XY-wing、XYZ-wing、シンプルチェーンなどを組み込む必要がありますが、
これは後の課題とします。
上の6つを組み込むだけで激辛数独12の9割をカバーできるソフトにすることが出来るからです。
つまり、今回皆さんと開発する数独自動生成ソフトは、
「激辛数独12」級の問題を生成する能力を持つことになります。
つまり、超上級クラスの問題を作成することが出来る数独自動作成アプリを開発できるのです。
第4話へ 第2講第1話へ