早わかり数独のすべて/エクセルソフト無償公開

解法テクニック一覧 解法テクニック解説 問題作成(計算機) ご意見 プログラム解説とダウンロード


世の中に、数独の問題集・解き方解説集は多々あれど、問題作成・難易度判定・複数解有無チェック・解提示・解法詳細表示・別解法試行 など全てを提供するホームページ・解説本は見当たりません。完璧とは言いませんが、その試みとして、下記プログラムを作成しました。
(ダウンロードをご希望の方は「プログラム解説とダウンロード」をご覧ください。

<自作 Excel_VBA Program>
Excel_VBA

本サイトは、主として、以下のサイトから多くを学び、また名称など借用もさせて頂いています。わかりにくいところは、当該 サイトをご覧ください。

                         ・数独問題を解くアルゴリズムと実装  qiita.com
                         ・ナンプレ覚書                  haretoki.com
                               ・ナンプレ京                          nanpre.adg5.com
                               ・ナンバープレース、数独解法まとめ    master_mishichan?
                         ・数独taguchi                         tagutis1.web.fc2.com


解法テクニック一覧

本サイトで使用している解法テクニックをリスト化すると、以下の通り。
      (1) ブラックボックス的解法 (計算機で簡単に解に辿り着く) 
                           (a) Back Tracking法             複数解有無判定可能!、世界最難問題も解ける!
                           (b) 仮定法                  

      (2) 論理的解法 (人の手と頭を使い解に辿り着く)          
                           (a) 芝仮り(Naked Single & Hidden Single)  初級問題はこれのみでOK!
                           (b) Localization                             意外に強力・有効!
                           (c) 2国同盟(Naked Pair)
                           (d) 3国同盟(Naked Triple)
                           (e) 隠れ2国同盟(Hidden Pair)
                           (f) 隠れ3国同盟(Hidden Triple)
                           (g) 4国同盟
                           (h) 4辺形(Rectangle,X-Wing)
                           (i) Sword Fish 
                           (j) Jelly Fish
                           (k) XY-Wing
                           (l) XYZ-Wing
                           (m) XY.Chain
                           (n) Simple Color(Single Chain)
                           (o) X.Chain(X-cycle,Simple Chain)
                           (p) N.Chain                  全能とは言わないが大半の問題はこれと「芝仮り」のみでOK!
                           (q) N.Chain拡張                   「N.Chain」でも見つけるのが大変なのに、もっと大変!


          この他、上記解法の変形手法や、上記解法の組み合わせである浜田ロジックを初めとした多々のややこしい手法があるが、
          本サイトでは使用していない。それらの一部は、N.Chainでカバーされることもある。

                    また、唯一解が保証されていることを前提とした解法には言及しておりませんし、使用もしておりません。

                    更に、ブロック化の手法はN.Chain拡張では織り込んでいるが、他の連鎖系手法には織り込めていない。
[戻る]

解法テクニック解説


(1) ブラックボックス的解法


(a) Back Tracking法

Excel_VBA Back Tracking/上昇法(BT/Up)とは、どの空白枠(左上から右下へ)も1から始めて9までの可能な数を埋めていきます。
左図において、(1行,1列)枠では、その枠の属する桝・行・列には1-3があるので、まず4を埋めます。次に (1,2)枠では、(1,1)枠に4を埋めているが、入れる数の最小の数として1を埋めます。このようにして(1,3)枠 は6を、(1,4)枠は2、(1,5)枠は7を埋めます。しかし(1,7)枠は1-9が入れず10となってしまいますので、こ れを消し(0とする)、その前の(1,5)枠で新たに7より大きな数を検討すると8が埋まります。続けると(1,7)枠は0より 大きい数として7が埋まり、(1,9)枠は、また10となってしまいます。そこでこれを消し、1つ前の(1,7) 枠で7より大きな数を検討するとまた10となります。そこでこれをも消し、もう1つ前の(1,5) 枠で8より大きな数を検討するとまたまた10となります。更にこれをも消し、更にもう1つ前の(1,4)枠で2より 大きな数として3を埋めます。すると、次の(1,5)枠は0より大きな数として2、その次の(1,7)枠は0より大きな 数として7、またその次の(1,9)枠は0より大きな数として10となります。このような操作を延々と重ね、すべ ての空白枠が1-9の数で埋められればそれが解となります。

Back Tracking/下降法(BT/Down)とは、9から始めて1までの可能な数で埋めていく方法です。
BT/UpとBT/Downで同じ解が得られれば唯一解であり、異なる解が得られれば複数解を持つということになります。 下図の問題では、1.5GHzのCPUで、複数解有無判定までやって2秒でできます。
Excel_VBA













[解法テクニック一覧に戻る]

(b) 仮定法

下左図上段の問題で考えてみましょう。(2)(a)で説明する「芝刈り」を実施後の候補数は、下左図下段のようになります。 候補数を仮定して調べるにしても、候補数の少ない枠から始めるほうが手間が少ないでしょうから、先ずは候補数2つ のみの単独枠から始めます。右下図下段に示すように、候補数2つのみの単独枠<黄色:組合(2,0)欄>は10ヶ、従い 調べるべき候補数<組合せ数>は2倍の20ヶとなります。これでも少ないとは言えませんが、 「芝刈り」のみで探索したその結果は、ヒント枠(解に繋がる枠)が存在しないとなりました。 組合(3,0)の単独枠数(緑色)は17ヶで、<組合せ数>は3倍の51ヶであるが、下右図下段に示すように 最初のヒント枠である(6行,9列)枠で候補数5を仮定することで解が得られます。因みに1.5GHzのCPUで、ランク付けは 20秒掛かりますが、解を得るだけなら3秒でできます。
この問題はラッキーな方で、場合によっては、組合せ数60の組合(4,0)、組合せ180の組合(2,2)<候補数2つのみの単独枠 と候補数2つのみの別の単独枠において、それぞれ1つづつの候補数を同時に仮定する>と試行錯誤の段階を上げていくこと になり、大変手間がかかることとなります。

仮定法によるランク付けは、上記探索を多く手掛けて、結果として下右図上段のような評価(個人的なもの)で行っています。

Excel_VBA Excel_VBA Excel_VBA Excel_VBA












[解法テクニック一覧に戻る]


[戻る]

(2) 論理的解法


(a) 芝仮り(Naked Single & Hidden Single)

与えられた問題(下図太赤字数)の候補数は、例えば(1行,2列)枠では、横方向に2,7,5、縦方向に3,9、その枠が属する桝内で 6が存在します。数独は、それら3つの領域において、それぞれの領域内では同じ数字は1ヶしか入れないので、 結局候補数は1,4,8となります。

Excel_VBA 与えられた問題の候補数を書き出した状態が左上図ですが、(8行,5列)はたった一つの候補数6のみとなります。 これを Naked Single と言います。(8,5)枠は、6で確定します。

この6の左上(7行,5列)枠を見て下さい。これらの属する桝内で6は一つしか入れないので、その枠の候補数6は消え、 残りの候補数9のみが残り、(7,5)枠は 9で確定します。これも Naked Single です。

同様の操作を続けると左下図のように緑色の数字が確定します。

その状態で、黄色で表した第4列に注目すると、候補数の中で6が一つだけあるのに気が付きます。図中では赤紫字で 示しています。(1,4)枠は6で確定します。これを Hidden Single と言います。

Naked Single も Hidden Single も見つからなくまでチェックすることを、本サイトでは、「芝刈り」と称することに しております。

       <補足> 候補数を書き出さず解く

               難問まで解くにはいずれ候補数を書き出さねばならないが、初級程度の問題は「芝刈り」の
           ような手法を用いないで、確定数を記入する鉛筆と頭だけで(候補数を書き出さず)解く方法
          を解説するものもある。

                  @ Naked Single を見つける

          下図の〇印を付した数字2に注目すると、(7,8)枠の2のため7行及びこの枠の属する桝(灰色)の
          他の枠には2が入いらない。また(8,3)枠の2のため8行及びこの枠の属する桝(黄色)の他の枠に
          は2が入いらない。従い、図下方を見ると白抜きとなったところしか2が入れない。しかし、これ
          ら3つの枠の内2つは違う数字で占拠されているので、残る(9,6)枠は、2で確定する。
 
                   <白抜き領域で、仮に(9,4)枠に4がない場合でも、(2,4)枠に2があるので、(9,4)枠には2が入れな
                     いことは明らかで、同じ結果を得る。>
          
          この2を足掛かりに、(2,4)枠の2と合わせて考えると同様の論理で、(5,5)枠も、2で確定する。

                       Excel_VBA


         A Hidden Single を見つける

          手法1を継続すると、下図を得る。1行目に着目すると、「−」で示した枠には6が入れない。
          従い、(1,4)枠は6で確定する。(別の見つけ方は、候補数を計算することにはなるが、先ず(1,4)枠には何
          が入るかを頭の中で考えると、[3,6,9]のいずれかとなるが、このうち6に着目すると、今説明したように
          1行目の他の空白枠には6が入れないので、(1,4)枠に6を入れなければならないというものである。)

                       Excel_VBA

          このような手法は、初級問題を解く時か、候補数の算出手間を少なくする程度の利用法しかない。


[解法テクニック一覧に戻る]

(b) Localization

Excel_VBA 左図で黄色の枠に着目すると、この枠の属する桝内では、候補数4はこの黄色の枠内のみにあり且つ横方向に並んでいる。 前者の事実から、4は黄色の枠のどちらかに入るため、横方向(黄色の枠の属する行)すなわち4行の他の枠には4は入れ ません。従い、(4,1)枠には4は入れません。すなわち(4,1)枠の候補数の内、4(細赤字)は消し対象となります。

見つけ方は、ある特定の桝内で同じ候補数が 2ヶまたは3ヶしかなく、それらが全て横方向または縦方向に並んでいるものを探せば 簡単に見つけることができます。
また、上図左下の灰色の桝と薄水色の行(この例では消し対象はありません)に着目すると、特定の行内で同じ候補数が 2ヶまたは3ヶしかなく、それらが全て1つの桝内のみにある場合は、その桝内の 他の枠には当該候補数は入れません。これも Localization の一つです。

[解法テクニック一覧に戻る]

(c) 2国同盟(Naked Pair)

Excel_VBA 左図で水色の枠に着目すると、候補数7,8はこの水色の枠のどちらかが7、他方が8となります。従い、この水色の枠の 属する列すなわち第1列の他の枠には、7も8も入れません。従い、第1列で細赤字で示した候補数 7 or 8 は消し対象となります。



このように、同一行・同一列・同一桝に、同じ組み合わせの2つの候補数からなる枠が2つある時、これを「2国同盟(Naked Single)」と言います。

[解法テクニック一覧に戻る]

(d) 3国同盟(Naked Triple)

Excel_VBA 左図で黄色の枠に着目すると、候補数4,5,7はこの黄色の枠のいずれかが4、もう一つが5、残りが7となります。従い、この黄色の 枠の属する列すなわち第3列の他の枠には、4も5も7も入れません。従い、第4列で細赤字で示した候補数 7 は消し対象となります。



このように、3つの候補数からなる枠があるとして、それと同じまたはその一部の数値が欠けた枠が、他に2つある時、これを 「3国同盟(Naked Triple)」と言います。[4,5,7]/[4,5,7]/[5,7]のような型以外では、[4,5,7]/[4,5,7]/[4,5,7]、[4,5,7]/[4,5]/[5,7] のような型もあります。
更に、上図例の候補数を参考にするなら、[4,5]/[5,7]/[7,4]の如く、候補数2つの循環型も「3国同盟(Naked Triple)」ですが あまり有効なテクニックでもなさそうです。

[解法テクニック一覧に戻る]

(e) 隠れ2国同盟(Hidden Pair)

Excel_VBA 左図で黄色の枠に着目すると、この黄色の枠の属する列すなわち第1列内で候補数1,3がそれぞれ2つしかなく、且つその候補数1,3が 同一枠に含まれ、このような枠が2つしかありません。と言うことは、黄色の枠は、1または3が入ることになり、その黄色の枠の他の 候補数(細赤字)は、当該枠には入れず消しの対象となります。


このように消しの後の形が「2国同盟(Naked Pair)」と同形となるものを、「隠れ2国同盟(Hidden Pair)」と言います。

[解法テクニック一覧に戻る]

(f) 隠れ3国同盟(Hidden Triple)

Excel_VBA 左図で黄色の枠に着目すると、この黄色の枠の属する桝内で、候補数2,6,9がこれら3つの黄色の枠にしかない場合、3つの黄色の枠には 2または6または9のいずれかが入りますので、それ以外の候補数(細赤字)は黄色の枠には入れず消しの対象となります。



このように消しの後の形が「3国同盟(Naked Triple)」と同形となるものを、「隠れ3国同盟(Hidden Triple)」と言います。

[解法テクニック一覧に戻る]

(g) 4国同盟

Excel_VBA 左図で黄色の枠に着目すると、この黄色の枠の属する行内で、候補数3,4,5,7がこれら4つの黄色の枠にしかない場合、4つの黄色の枠には 3または4または5または7のいずれかが入りますので、それ以外の候補数(細赤字)は黄色の枠には入れず消しの対象となります。



[解法テクニック一覧に戻る]

(h) 4辺形(Rectangle,X-Wing)

Excel_VBA 左図で赤紫色の枠の候補数1に着目すると、縦・横とも井桁状に揃っており、且つ横方向にはこの赤紫色の枠にしかありません。 すなわち、候補数1は、(3,3)枠か(3,4)枠のいずれかに入り、また(7,3)枠か(7,4)枠のいずれかに入ります。

補足説明をして置きましょう。(3,3)枠が1だとすると、その枠の属する列ie第3列の他の枠には1は入れないので(7,3)枠には1は 入れません。(7,3)枠が1ではないとなると上記に事実より(7,4)枠は1となります。また(3,3)枠が1ではないとすると、同様の論理で、 (3,4)枠が1となり、第4列には1が入れず(7,4)枠は1ではないので、(7,3)枠は1となります。

どちらの場合でも、薄水色の第3列及び薄黄色の第4列には1があることになるので、赤紫色の枠以外の他の枠には1が入れず図示した 候補数1(細赤字)は消しの対象となります。

[解法テクニック一覧に戻る]

(i) Sword Fish

Excel_VBA 左図で緑色の枠の候補数2に着目すると、(欠落部があるにせよ)縦・横とも格子状に揃っており、且つ横方向にはこの緑色の枠に しかありません。すなわち、候補数2は、(1,3)/(1,9)枠のいずれかに入り、また(6,6)/(6,9)枠のいずれか、 更に(9,3)/(9,6)枠のいずれかに入ります。
(h)「四辺形」で説明した論理に従い、(1,3)枠が2だとすると(9,3)枠は2でなく、(9,6)枠が2で、(6,6)枠は2でなく、(6,9)枠が2と なります。逆に(1,3)枠が2でないとすると(1,9)枠は2で、(6,9)枠が2でなく、(6,6)枠は2で、(9,6)枠が2ではなく、(9,1)枠は2と なります。これより、薄水色の第3列・薄黄色の第6列・紫色の第9列では、緑色の枠以外の他の枠には2が入れないと言えるので、図示 した候補数2(細赤字)は消しの対象となります。

格子状の配列は、上図のような [* - *]/[- * *]/[* * -] 型以外にも、[* * *]/[* * *]/[* * *] 型、[* * *] /[* * *]/[- * *] 型、[* * *]/[* * -]/[- * *] 型等々あります。
他に、フィン付きの如き変形もありますが、計算機では織り込んでいません。

[解法テクニック一覧に戻る]

(j) Jelly Fish

Excel_VBA 左図で黄色の枠の候補数6に着目すると、(欠落部があるにせよ)縦・横とも格子状に揃っており、且つ横方向にはこの黄色の枠に しかありません。すなわち、候補数6は、(3,1)/(3,2)/(3,9)枠のいずれかに入り、また(4,1)/(4,2)/(4,5)/(4,9)枠のいずれか、 更に(6,1)/(6,2)/(6,5)/(6,9)枠、(7,1)/(7,2)枠のいずれかに入ります。

(3,1)枠が6だとすると、(h)「四辺形」で説明した論理に従い、(7,1)枠は6でなく、(7,2)枠が6で、(6,2)枠は6でないと言えます。(3,1) 枠が6であったから(6,1)枠も6ではなく、結局第6行では、(6,5)枠or(6,9)枠のいずれかが6となります。今、(6,5)枠が6だと、(4,5)枠は 6ではなくなります。第6行で見たのと同じ論理で、第4行では、(4,1)(4,2)(4,5)枠全て6でないので(4,9)枠が6となります。今、(6,5)枠 が6ではなく(6,9)枠の方が6だとしても、全く同じ論理で、(4,5)枠が6となります。結局(3,1)/(7,2)/(6,5)/(4,9)枠が1となるか、 (3,1)/(7,2)/(6,9)/(4,5)枠が6となるので、第1,2,5,9列のいずれの列にも6が入ることになります。
次に、(3,1)枠が6ではない場合を考えましょう。(3,1)枠が6ではないとすると、(3,2)枠か(3,9)枠が6と言うことになります。今、(3,2) 枠が6とすると、(7,1)枠が6で、(4,1)枠が6ではなくなります。上の説明の論理の流れと同様、(4,2)枠が6ではないので、(4,5)枠or(4,9) 枠のいずれかが6となります。ここでまた(4,5)枠が6だとすると、(6,5)枠は6ではなく、(6,9)枠が6となります。まとめると、 (3,2)/(7,1)/(4,5)/(6,9)枠が6となります。
初めの選択仮定の(3,2)枠が6を(3,9)枠が1と仮定しても、(3,9)→(3,1)→(7,1)枠を経由して、 (6,2)枠か(4,2)枠が6と仮定することで、(3,9)/(7,1)/(6,2)/(4,5)枠が1となるか、(3,9)/(7,1)/(4,2)/(4,5)枠が6となります。
従い、(3,1)枠が6ではない場合でも、第1,2,5,9列のいずれの列にも6が入ることになります。

これより、(3,1)枠が6でも6でなくとも、薄水色の第1列・薄黄色の第2列・灰色の第5列・紫色の第9列では、黄色の枠以外の他の枠に は6が入れないと言えるので、図示した候補数6(細赤字)は消しの対象となります。

格子状の配列は、上図のような [* * - *]/[* * * *]/[* * * *]/[* * - -] 型以外にも、完全な [* * * *]/[* * * *]/[* * * *]/[* * * *] 型 を基本型として多くの型が考えられます。
他に、フィン付きの如き変形もありますが、計算機では織り込んでいません。

[解法テクニック一覧に戻る]

(k) XY-Wing

Excel_VBA 左図で緑色の枠(候補数の数は2つだけ)に着目すると、(5,2)枠の横方向の(5,7)枠には共通する数5があります。 また(5,2)枠の属する桝内の(6,1)枠には、もう一つの共通する数8があります。そして(5,7)枠・(6,1)枠は 別の数字7を共通に持ちます。この場合、(5,2)枠が5,8いずれでも、(5,7)枠または(6,1)枠には7が入ります。 従い(5,7)枠の属する桝内の他の枠には7が入れないか、(6,1)枠の属する行すなわち第6の行の他の枠には7が 入れないかのいずれかとなります。それらに共通の水色で示した領域には、(5,2)枠が5,8いずれでも、7が入れ ませんので(6,8)枠の細赤字7は削除できます。

なお、左中央桝と第5行の共通した領域、すなわち左中央桝内第5行に7があれば、これも消しの対象となります。

[解法テクニック一覧に戻る]

(l) XYZ-Wing

Excel_VBA これは、XY-Wingの変形です。 左図で緑色の枠に着目すると、(6,1)枠に1がなければXY-Wingです。XY-Wingで共通となる1が、(6,1)枠にもある場合 です。(6,1)枠が1だとすると、この枠の属する桝には1が入れません。3だとすると(4,2)枠が1となりますので(4,2)枠 の属する桝・行(第4行)・列(第2列)に1は入れません。7だとすると(6,8)枠が1となりますので、少なくとも(6,8)の属 する第6行には1が入れません。それらに共通の水色の領域には、(6,1)枠が1,3,7いずれでも、1が入れませんので(6,3) 枠の細赤字1は削除できます。

[解法テクニック一覧に戻る]

(m) XY.Chain

Excel_VBA 左図テーブルの下に記した[XY.Chain]を参照して下さい。連鎖の順番がわかります。
左図で緑色の枠に着目すると、それらの枠はすべて候補数が2つのみの枠であり、且つ連続する2つの枠は、候補数2つ の内1つの候補数は共通の値を持っています。 両者のリンク関係は必ずしも強リンクである必要はありません。
さて、今(1,1)枠が4だとすると、[XY.Chain]に記した通り、連鎖の数は、(1,1)枠4→(2,2)枠8→(4,2)枠3→(4,1)枠7 →(5,3)枠5→(8,3)枠6 となるので、薄黄色の第8行の他の枠には、6は入れません。一方(1,1)枠が6だとすると、薄 水色の第1行の他の枠には、6は入れません。従い、(1,1)枠が4,6のいずれであっても、(1,1)枠の属する薄水色の行 と(8,3)枠の属する薄黄色の列の共通領域にある(1,8)枠(この例では交差点)には、 6が入れませんので、細赤字6は削除できます。

[解法テクニック一覧に戻る]

(n) Simple Color(Single Chain)

特定の候補数について、強リンクの関係にある枠を見つけることから始めます。

Excel_VBA 左図で候補数1に着目して、例えば(3,2)枠が1とすると、(3,2)枠の属する第2列の他の枠には1が入れないから(4,2)枠 は1ではない(8となる)。(4,2)枠が8であるから第4行の他の枠には8が入れないので(4,9)枠は1となる(8ではない)。 これを色で表すと(3,2)枠と(4,9)枠は黄色で1となり、(4,2)枠は緑色で1ではない。このような探索を行うと、左図 のような色分けができます。ところが、(8,5)枠と(9,4)枠は、同一桝内にあって黄色で共に1であるから、同一桝内に 同じ数字が入ってはならないことと矛盾します。このことは、すべての黄色の枠が1であることは許されず、すべての 緑色の枠が1であることを意味します。すなわち緑色の枠はすべて1(〇)で確定し、黄色の枠ではすべて1を消す(□) ことができるのです。

一般論として、同色(ex黄色)の枠が同一桝内にある・同色(ex黄色)の枠が同一行にある・同色(ex黄色)の枠が同列内 にあるあることは許されず、その場合は、その色(ex黄色)のすべての枠は、今着目している候補数(ex1)ではなく消 すことができ、、他方の色(ex緑色)のすべての枠が、今着目している候補数(ex1)となり確定できます。

更に一般論として、異なる色(ex黄色と緑色)の枠を同時に見られる枠(縦横の交差点)には、今着目している候補数(ex1)は入れません。 そうした交差点の枠にその数(ex1)があれば、その数(ex1)は削除できます。但し、上図の例では見当たりません。

[解法テクニック一覧に戻る]

(o) X.Chain(Simple Chain)


   <強リンク>と<弱リンク>について、下図を参考に、説明しておこう。

     ・強リンク(sと略記) :  (4,3)枠と(8,3)枠の関係のように、これら2つの枠の属する列すなわち第3列では
                   候補数9が2つだけで、一方が9なら他方は9ではなく、一方が9でないなら他方
                   は9となる関係を意味します。
        ・弱リンク(wと略記) :  (8,3)枠と(8,5)枠の関係のように、これら2つの枠の属する行すなわち第8行では
                                   候補数9が3つ以上あり、一方が9なら他方は9ではないといえるが、一方が9で
                                   ないなら他方は9かどうかわからないとなる関係を意味します。

   或る候補数Xについて、w-s-w-s・・・の連鎖(但し、sはwと見做しても良い。このsをs'と書く。)で繋がりループを形成する場合、
   これをX.Chainと呼び、
       (1) wから始まりwで終わる時はその枠の候補数Xは削除が可能
     (2) sから始まりsで終わる時はその枠の候補数Xは確定数
     (3) wから始まりsで終わる時、またはsから始まりwで終わる時は、
              (3.1) 弱リンクの両端の枠が縦に並ぶときは縦方向の当該枠以外の枠の候補数xは削除可能
              (3.2) 弱リンクの両端の枠が横に並ぶときは横方向の当該枠以外の枠の候補数xは削除可能
              (3,3) 弱リンクの両端の枠が同一桝内にある時は当該桝の当該枠以外の枠の候補数xは削除可能
   となります。
   但し、(3)のケースは、X.Chainとしては計算機には織り込めていません。(3)のケースは、N.Chainでカバーされます。

Excel_VBA 左図では、候補数9についてX.Chainを緑色の枠で表しています。テーブルの下には、それらの関係が分かり易いように、[9.Chain]として 候補数9で作る一つのループを記しています。X.Chainとしては、<w>-<s>-<w>-<s>-<w>の連鎖となっています。
(4,4)枠の候補数9は<w>で始まり<w>で終わっているので、(4,4)枠の候補数9(細赤字)は削除の対象となります。

<s>で始まり<s>で終わる場合、<s>で始まり<w>で終わる or <w>で始まり<s>で終わる場合、その処理は上の説明のとおりです。

[解法テクニック一覧に戻る]

(p) N.Chain


N.Chain探索は、特定の枠の特定の候補数を仮定し、単一数連鎖・リレー連鎖・玉突き連鎖のいずれかを時々に応じて適宜使用して、
矛盾のない連鎖を形成し、その連鎖の最初枠または途中の枠に回帰した連鎖の数字が、矛盾するかどうかに応じて候補数を削除する。
    ・矛盾しているならば : 回帰した枠の連鎖を形成している候補数が妥当でない、すなわち削除できる
    ・矛盾していなければ : 連鎖上の連続する枠の属する行・列・桝内で削除できる数があり、玉突き連鎖の枠の
                 候補数のうち、玉突きに関与しない候補数は、削除できる

単一数連鎖・リレー連鎖・玉突き連鎖とは何かについて、下記(2)無矛盾回帰の例で説明しよう。
    ・単一連鎖  : (1,3)枠で8を仮定すると、第3列にはこの枠以外には8は入れないから、(6,3)枠は必ず8ではない(△)。
                 このように同じ数字による連鎖を単一連鎖という。     
    ・リレー連鎖 : (4,2)枠は8であるとき、(2,2)枠は単一連鎖で8ではない。しかし、この枠の候補数は、4,8のみであるから、この枠は4となる。
                  このように候補数2つだけの枠で、連鎖の数が8→4のように変化して連鎖がつづくことをリレー連鎖という。
    ・玉突き連鎖 : (2,6)枠は4消し(△)故、単一連鎖で(1,6)枠は4となる。従いこの枠の6,8は2つとも削除となる。しかし横方向をみると候補数8を
             持つ枠は(1,6)枠以外は(1,3)枠のみであるから、(1,3)枠は8でなければならない。
                              このように候補数3つ以上の枠で、連鎖の数が4→8のように変化して連鎖がつづくことを玉突き連鎖という。

N.Chain探索は、最初から適用すると膨大な数のルートの探索を必要とするので、計算機でなければとても解に結びつきません。
N.Chain以外のテクニックを駆使しても先に進めないときだけに使用すべきものであることに留意して下さい。


Excel_VBA (1)矛盾回帰

左図テーブルの下に、どの枠のどの数字(負数は消しを意味します)で連鎖が回帰するかを記しています。左図では(1,2)枠の 3からスタートしているが、実質的には(4,2)枠の5からスタートし、(4,2)枠の8で回帰しています。すなわち(4,2)枠で5である はずが8であることは矛盾しているので、(4,2)枠の5は削除できます。

Excel_VBA (2)無矛盾回帰

左図で緑色の枠に着目すると、(1,3)枠の8からスタートし、(1,3)枠の8に回帰しているので矛盾はありません。 このとき、連続する(1,3)枠・(6,3)枠のいずれかは8であるから、これらの枠の属する3列(水色)の 他の枠には8は入れません。従い(2,3)枠の細赤字の8は削除できることになります。同様に連続する(2,2)枠・(2,6)枠から (2,1)枠の細赤字の4は削除できます。
また、(1,6)枠は4で繋がってきて8に切り替わって繋がる玉突き連鎖であるから、(1,6)枠は、4,8は残り、他の細赤字6が 削除できることになります。
[解法テクニック一覧に戻る]

(q) N.Chain拡張

以下3つの例の探索方法は、基本的に N.Chain と同じです。N.Chainの連鎖状況は、左図テーブルの下に記していますので、 これを参照しながら説明します。
以下(2)(3)を計算機で実行するときは、長時間要するので、"ブロック化"を追加選択します。
なお、この"ブロック化"の手法は、N.Chain以外の連鎖系のテクニックにも使用できます (但し計算機には織り込めていません)。

Excel_VBA (1)出発点連携

左図に、(7,8)枠の候補数4を出発点として、この出発点に回帰する連鎖ループを示しています。[N.Chain]で%と記し た(8,7)枠の前枠(7,9)枠に着目して下さい。
(7,4)枠が6であるので(7,9)枠の6は消えますが、4か5かが定まりません。ところが、 この(7,9)枠の属する桝内の(7,8)枠は出発点として4としていますので、4も消せて結局5となります。これで、次の(8,7) 枠が5ではなく6として連鎖が続きます。と言うことで、図の連鎖ループが成立し、4ではない(-4)として回帰し矛盾するので、 出発点である(7,8)枠の候補数4を消すことができます。

Excel_VBA (2)ブロック化(2枠生き or 3枠生き)

左図に、(8,4)枠の候補数7を出発点として、この出発点に回帰する連鎖ループを示しています。[N.Chain]で#と記した (7,9)枠に着目して下さい。
(2,9)枠が7ではないので、7の入る枠が(7,9)枠か(8,9)枠か定まりません。ところが、これらをブロック化 (or グループ化)して考えると、次の(9,8)枠で7ではなくなり連鎖が続きます(下記「なお」以下参照)。 と言うことで図の連鎖ループが成立し、7ではない(-7)として回帰し矛盾するので、出発点である(8,4)枠の候補数7を 消すことができます。
なお、(9,4)にも#がついていますが、同じように(9,4)枠と(9,5)枠をブロック化して考えることができます。

Excel_VBA (3)ブロック化(2枠消し or 3枠消し)

左図に、(3,6)枠の候補数9を出発点として、この出発点に回帰する連鎖ループを示しています。[N.Chain]で&と記した (3,4)枠の前枠(1,5)枠に着目して下さい。
(5,5)枠が3であるので、3の消える枠が(1,5)枠か(3,5)枠か定まりません。ところが、これらをブロック化 (or グループ化)して考えると、次の(3,4)枠に3が入り連鎖が続きます。(3,4)枠で玉突き連鎖となり(3,6)枠が6で 連鎖が終わります。と言うことで図の連鎖ループが成立し、9ではない(6)として回帰し矛盾するので、出発点である (3,6)枠の候補数9を消すことができます。





Excel_VBA (4)他テクニックとの連携(ex 2国同盟 or 3国同盟)

N.Chainの連鎖(ブロック化を含む)の途中で、消しで入って来るために、その枠を一つとして2国同盟 or 3国同盟が形成されて連鎖 が継続することがあります。(@参照)
こうして連鎖が回帰すれば、(p)N.Chainの項の最初に説明した原則が適用できるようになります。 (AD参照)
また、形成された2国同盟のために、候補数がすべて消えてしまう枠が発生すること(或いは、2つの 候補数の組み合わせが同じ枠が3枠もあると判断すること)もあります。(BC参照) これは数独の条件に反しますので、回帰し なくとも出発点の候補数は消しの対象となります。計算機で扱う場合は、このような異質な消し作業を用意しておく必要があります。
Cは、ブロック連鎖で2国同盟が形成される例です。この例の場合、今説明したように、ブロック化N.Chain+空白矛盾を設定して いなければ出発点の8の消しができません。

Bの例は単に「2国同盟」で、ACDの例は、単に「3国同盟」で処理できる内容です。従い、解法テクニックすべてを使用して解く 場合は考慮する必要はないが、「N.Chain」のみで解く場合には、ここ(4)に説明する解法が必須となる場合もあります。

このような例は他にも種々あり、完全型[***]/[***]/[***]の「Sword Fish」は、「単純なN.Chain」では勿論のこと、 「ブロック化N.Chain]でもカバーできません。N.Chain系としての新なLogicが必要となります。

この例以外にも、他テクニックとの連携が考えられるのでしょうが、筆者には究明できていません。

ここで補足的に紹介した解法は、基本的に計算機には織り込めていません。(ブロック化+2国同盟の一例として、上とは少し異なるが、 ただ一つの解法/@破線連鎖類似を入れては見ましたが有効かどうか不明です)


解法テクニックすべてを使用して解いても解が得られない場合は、「N.Chainの拡張」としての様々な手法を用意して置かなければ なりません。(勿論、N.Chain系以外の高度なテクニックがあれば問題はないが・・・)

[解法テクニック一覧に戻る]

[戻る]

問題作成(計算機)



計算機を用いた問題作成の基本的手順実際的なアウトプット例などは、本ページの「Back Tracking法」のほか、 「プログラム解説とダウンロード」に記載の 「問題を作る」・「Back Tracking法で複数解有無を判定する」・[付録]「乱数テーブルの作成」/「乱数テーブルのオープン」をご覧ください。




[戻る]



  

ご意見

このホームページの内容についてのご意見ご感想はkawanami.yasuo.sr@gmail.comまでお願いいたします。
[戻る]


Copyright © 2019 早わかり数独のすべて/エクセルソフト無償公開 All Right Reserved
河波 保雄
inserted by FC2 system