全体トップへ戻る

数独2(難しい問題) 

論理だけのプログラムで解けない難しい問題を解くために、適当な場所に適当な数字を1個だけ代入して解く。
 2017.04.07 追加 


数独と解法 難しい問題 準備中 準備中 準備中


論理だけのプログラムで解けない難しい問題を解くために適当な場所に適当な数字を代入して解く。
適当な場所に適当な数字をと一口に言っても、どこが適当な場所で何が適当な数字かを決めるのは簡単ではない。

論理プログラムが行き詰まった時点では、既に候補が2つだけに絞り込まれている舛が幾つかあるはずだ。
その舛なら2つの内一つは正答であることがはっきりしている。ではあるが、一つだ正しい数を代入すれば解けると決まって
いるわけではない。代入後に再び行き詰まるか、エラーが出た場合には、他の場所へ他の数字を代入してみる。

第二の場所と数字は最初に論理プログラムで絞り込んだ中から選べばよい。結局、絞り込んだ場所と数字1つづつを全部代入して
何回正解にたどり着くか(81舛埋まるか)によって難易度を判断することもできる。1回の代入だけでは解けない問題もある。
実のところ私は、数独というのは、1回代入して解けないものは問題として出題しないことになっているのではないかと思っていた。
ところがどうやら、1個だけ代入しても解けない問題もあるらしい。そで、1個だけ代入すれば解ける問題を『難しい問題』
と名付け、2個以上の代入を要する問題を『超難しい問題』と呼ぶことにした。『私にとって』であることはもちろんだが。



論理プログラム進行表


論理プログラム絞込み表


以下に、1箇所だけの代入で解ける『難しい問題』の一例について説明する。
難しい問題1を論理プログラムだけで解こうとすると論理計算によって、青字の枠までは決定枠にできる。これを進行表で示すと、
サイクル目までで42枠を決定したところで止まってしまい先へ進めなくなっている。
この時点までに、2候補だけに絞り込まれている枠を絞込み表に示しており、その枠を途中経過表に黄色地で示した。

絞込み表の一番左の欄は、縦1番目横9番目の枡は、2か5のどちらかであることまで絞り込んだことを意味する。
絞込み表に示された枡を、途中経過図に黄色地で示す。たとえば、(1,9)右上の隅に2を代入する行き止まり、5を代入しても
いきどまりになり、この場所への代入は不成功である。同じように(2,2)、(3,2)・・・とすすめてもダメで、
(4,6)=1でようやく決定枠数81に到達する。この問題は、難しい問題の中でも比較的難しい問題に属する。

これを順次(9,9)まで繰り返して、OKの数を数える。個総数に対して、OK個数が少ないほど難しい問題である
右端の(9,9)までに一度もOKがなければ、『1回代入では解けない超難しい問題』ということである。

inserted by FC2 system