エグゼクティブサマリー
本記事は、ナンプレ(数独)を 「当てずっぽう」ではなく論理で解く ための主要テクニックを、初心者〜上級者向けに体系化した長文ガイドです。公式ルール(行・列・3×3ブロック)から、候補(ペンシルマーク)管理、シングル、相互作用、魚(X-Wing / Swordfish / Jellyfish)、ウイング(XY / XYZ)、カラーリング、フォーク、強制連鎖、ALS、唯一性(Unique Rectangle 等)、さらにコンピュータ解法(バックトラッキング/DLX / Algorithm X)までを扱います。
読み進め方のおすすめは、
①スイープ → ②シングル → ③予約 → ④ブロック・ライン相互作用 → ⑤魚・翼 → ⑥チェーン / カラーリング → ⑦強制連鎖 / ALS → ⑧唯一性 → ⑨コンピュータ解法
です。難問ほど「全体スキャン(スイープ)」を何度も回し、進展が止まったら上位手筋へ移るのが実務的です。
解法テクニックの全体像
数独は、1984年に「ニコリ」が命名し(当初名「数字は独身に限る」→短縮して「数独」)、2000年代に Sudoku として世界的に広がりました。
また、入門資料でも「当てずっぽうは禁止」とされ、まずは「ここにしか入らない」を積み上げる方針が推奨されています。
解法フロー
flowchart TD
A[スイープ(全体走査)でシングル探索] --> B{進展した?}
B -->|Yes| A
B -->|No| C[予約(サブセット)/候補整理]
C --> D{進展した?}
D -->|Yes| A
D -->|No| E[ブロック・ライン相互作用(ロック)]
E --> F{進展した?}
F -->|Yes| A
F -->|No| G[魚・翼]
G --> H{進展した?}
H -->|Yes| A
H -->|No| I[チェーン/カラーリング/AIC]
I --> J{進展した?}
J -->|Yes| A
J -->|No| K[強制連鎖/ALS/唯一性]
K --> L{進展した?}
L -->|Yes| A
L -->|No| M[バックトラッキング/DLX]
テクニック比較表
難易度は目安として ★(初級)〜★★★★★(超上級)で表し、「計算コスト」は人力での負担(探索量・見落としやすさ)を意味します。
| テクニック名 | 難易度 | 適用場面 | 効果 | 計算コスト(手作業) |
|---|---|---|---|---|
| スイープ(全体走査) | ★ | 常時(詰まったら最優先) | 見落とし回収・次の一手発見 | 低(反復が鍵) |
| 候補消去(ペンシルマーク) | ★ | 中級以上の全局面 | 論理の土台を可視化 | 低〜中 |
| シングル(Naked/Hidden) | ★ | 序盤〜終盤 | 確定・連鎖の起点 | 低 |
| 予約(ペア/トリプル/クアッド) | ★★ | 候補が詰まり始めたら | ユニット内の候補一掃 | 中 |
| ブロック・ライン相互作用(Pointing/Claiming) | ★★ | ブロック内候補が偏った時 | 行/列・ブロック横断で消去 | 中 |
| ナンバーチェーン(Single’s Chain / X-Chain) | ★★★ | 強リンクが多い局面 | 離れた候補の消去・確定 | 中〜高 |
| カラーリング(Color Trap/Wrap) | ★★★★ | 1数字の強リンク網が作れる | 候補の大量消去・確定 | 高 |
| フォーク(分岐の合流) | ★★★★ | 二択の両枝で同結論が出る | 共通結論(消去/確定) | 高 |
| X-Wing(魚:サイズ2) | ★★★ | 1数字が2行2列に整列 | 列/行の候補を削除 | 中 |
| Swordfish(魚:サイズ3) | ★★★★ | 1数字が3行3列に整列 | 広範囲の候補削除 | 高 |
| Jellyfish(魚:サイズ4) | ★★★★★ | 1数字が4行4列に整列 | 多数候補の一括削除 | 非常に高 |
| XY-Wing | ★★★ | 二値セル3点の連携 | 共通候補の消去 | 中〜高 |
| XYZ-Wing | ★★★ | 三値+二値の3点構造 | 交差部から候補消去 | 中〜高 |
| 強制連鎖(Forcing Chain / Nishio) | ★★★★★ | 仮定→含意→矛盾/合流 | 強制確定・強制消去 | 非常に高 |
| ALS(Almost Locked Set) | ★★★★★ | NセルにN+1候補が集中 | RCC経由で鋭い消去 | 非常に高 |
| 唯一性(Unique Rectangle等) | ★★★★ | 唯一解前提の“致死形”回避 | 候補排除・確定 | 高 |
| コンピュータ解法(バックトラッキング/DLX) | — | 自動解答・検証 | 解の探索/一意性判定 | 機械は高速(人は実装知識) |
用語は日本語/英語で揺れがあります(例:Naked Single=「裸のシングル」「単独候補」など)。本記事では、一般的な英語名も併記し、盤面座標は `R行C列`(例:R3C7)で統一します。
基本ルールと候補管理
基本ルール
- 定義
9×9の盤面で、各マスに1〜9を入れ、各行・各列・各3×3ブロックに1〜9が1回ずつ現れるようにします(0は使いません)。 - 実務のコツ
ルールを“読む”だけでなく、盤面を「行」「列」「ブロック」の3視点で常に見直す癖が最重要です。ニコリの入門資料でも、ブロック注目(ブロッケン)、列注目(レッツミー)など「視点切替」が提示されています。
候補消去(ペンシルマーク)
- 難易度:★(ただし精度を出すには訓練が必要)
- 定義
空マスに入り得る数字(候補)を、同じ行・列・ブロックに既にある数字から除外して管理する方法です。候補を持つことで、上級手筋(魚・チェーン等)の探索が可能になります。 - 適用条件
中級以上ではほぼ必須(紙でもアプリでも)。特にチェーン/魚/翼の検出に直結します。 - 手順
①行・列・ブロックの既出数字を確認 → ②残りが候補 → ③確定が入るたびに周囲(同ユニット)を更新、が基本です。 - 例(概念図)
下図は、R5C5の候補が「5」だけに絞られていくイメージ(他ユニットの既出数で候補が消えていく)です。
出典:候補管理の基本的考え方(行・列・ブロックで除外)。
- 実践上のコツ
「全マスを細かく候補で埋める」より、まず必要な局面で必要な候補だけを書く(半メモ)→詰まったら全メモ化、が疲れにくいです。 - よくある失敗
候補の更新漏れ(古い候補が残る)→誤った上級手筋を“発見”してしまう、が最多。詰まったら必ずスイープで候補整合性を点検します。
スイープ(全体走査 / クロスハッチング)
- 難易度:★
- 定義
行・列・ブロックを一定の順番で“総ざらい”し、シングルや簡単な消去を回収する反復手順です。「迷ったらまず全体を再スキャンする」ことが、停滞打破として推奨されています。 - 適用条件
いつでも。特に「数分止まった」時の最優先リセット。 - 手順
①ブロックごとに欠け数字を確認 → ②行/列の欠け数字を確認 → ③候補が1つのマス(Naked Single)を回収 → ④ユニット内でその数字が1箇所しかない(Hidden Single)を回収 → ⑤入った数字の影響範囲を更新、をループします。 - 例(概念図)
下図は、行の残り1マスをスイープで拾うイメージです(行に8個入っている→最後は自動確定)。
出典:全体走査(sweep / full scan)の考え方。
- コツ
「同じ順番」で回すと見落としが減ります(例:左上ブロックから時計回り→次に行→列)。 - よくある失敗
“もう見た”と思ってスイープを省略し、初歩のシングルを見落とす。詰まった時こそ再スイープが最も費用対効果が高いです。
単一候補(シングル:Naked Single / Hidden Single)
- 難易度:★
- 定義
Naked Singleは「そのマスの候補が1つだけ」、Hidden Singleは「その数字がユニット内で1箇所にしか入らない」状態です。両者は“見方”が違うだけで、どちらも確定手です。 - 適用条件
候補を更新している限り常に発生し得ます。 - 手順
Naked:候補が1つのマスを埋める。Hidden:ユニット(行/列/ブロック)で特定数字の候補位置が1つしかないマスを埋める。 - 例(盤面図)
下図は「R5C5に5しか入らない」Naked Singleの概念図です(確定後、同じ行・列・ブロックから5を消します)。
出典:シングル(単一候補)の基本。
- コツ
ニコリの入門資料でも「マスに注目して他ユニットの重複を避ける(マスミ)」が紹介されます。まずはシングルを“取り漏らさない”ことが最短の上達です。 - よくある失敗
確定後の候補更新を忘れ、Hidden Singleを“消してしまう”。確定→更新→再スイープを徹底します。
予約(サブセット:Naked/Hidden Pair・Triple・Quad)
- 難易度:★★
- 定義
ユニット内で、特定の2マスが「1と2」しか入らない等の状況を利用し、他マスから候補を削除する手筋です。ニコリ入門資料では「予約」として説明されています。 - 適用条件
候補が複数残り、シングルが出ない局面で頻出。 - 手順
(例:Naked Pair)同一ユニット内で、候補集合が同じ2マス(例:{2,7}と{2,7})を見つける→そのユニットの他マスから2と7を削除します。Hidden Pairは「その2数字が入れる場所が2マスしかない」視点です。 - 例(盤面図)
下図は、同一ブロック内の2マスが「1/2」で予約され、他マスから1/2が消える概念図です(黄色が予約ペア)。
出典:ニコリの「予約」解説、およびペア系の一般説明。
- コツ
“同じ候補集合が揃っている”を探すより、“その数字が入る場所が限られる”視点(Hidden)も併用すると見つけやすいです。 - よくある失敗
対象ユニットを勘違い(行のペアを列で消してしまう等)。座標(R/C)で確認して操作ミスを防ぎます。
中級テクニック
ブロック・ライン相互作用(ロック候補:Pointing / Claiming)
- 難易度:★★
- 定義
ブロック内である候補が1行(または1列)に“偏って”いると、その候補はブロック外の同じ行/列に置けない、という相互作用です(一般に Locked Candidates、Pointing/Claiming として整理されます)。 - 適用条件
ブロック内の候補配置が「1行(または1列)に限定」される時。 - 手順
(Pointing)ブロック内で、候補Xが同一行にしかない→その行のブロック外から候補Xを削除。
(Claiming)行(列)内で、候補Xが特定ブロック内にしかない→ブロック内の行(列)以外から候補Xを削除。 - 例(盤面図)
下図は Pointing の概念図:左上ブロックで「7候補」が上段(R1)にしかない→R1のブロック外から7候補を削除できます(×印)。
出典:Pointing(ロック候補)解説。
- コツ
「ブロックの中で、その数字候補が“同一直線”に寄っていないか」をスイープ時に必ず見る癖を付けます。 - よくある失敗
候補が“完全に”1行/1列に限定されていないのに適用してしまう。まず候補数を必ず数えます。
上級テクニック
魚系(Fish)
X-Wing
- 難易度:★★★
- 定義
ある数字Xの候補が、2つの行(または列)でそれぞれ2箇所にしかなく、その位置が同じ2列(または2行)に揃うとき、交差4マスのどこかに必ずXが入るため、同じ2列(または2行)の“他のマス”からX候補を削除できます。 - 適用条件
対象の数字について、ある2行(または2列)に候補が“ちょうど2つずつ”出現していること。 - 手順
①数字Xを1つ選ぶ→②各行(または列)でX候補が2つしかない行を探す→③それが同じ2列に揃えばX-Wing→④その2列の他行セルからXを消す。 - 例(盤面図)
下図は、数字「3」のX-Wing概念図(黄色4点が翼、灰色×が消去候補)。
出典:X-Wingの定義・条件・消去の論理。
- コツ
X-Wingは「ただの長方形」ではなく、候補が“各基底行(列)で2個に限定”されることが本質です。ここを満たさない誤検出が非常に多いです。 - よくある失敗
①“2個ずつ”条件の見落とし、②行/列の向きを取り違え、③消去範囲を「基底行」側で消してしまう、の3つ。
Swordfish
- 難易度:★★★★
- 定義
X-Wingの拡張で、対象の候補Xが3行(または3列)に現れ、その位置が合計3列(または3行)に収まるとき、対応する列(行)の他セルから候補Xを削除できるパターンです。 - 適用条件
対象の3行(列)で、候補Xが出現する列(行)の集合が“最大3”に収まること(欠落ありの形が実戦的)。 - 手順
①数字Xを選ぶ→②候補が2〜3箇所に収まる行を3本見つける→③その候補位置が同じ3列に収束するなら成立→④その3列の他行セルから候補Xを消去。 - 例(盤面図)
下図はSwordfish(候補「1」)の概念図。青の3行×黄の3列が構造、×が消去対象。
出典:Swordfishの論理と手順。
- コツ
「3×3が完璧に埋まる形」はレアで、欠落を含む“疎な整列”が実戦的、と解説されています。 - よくある失敗
“3行で3列に収まる”条件を、候補数(2〜3)と混同する。列集合のサイズで判定します。
Jellyfish
- 難易度:★★★★★
- 定義
Swordfishの拡張で、4行(または4列)で候補Xが合計4列(または4行)に収まるときに成立する魚パターンです。 - 適用条件
対象の4行(列)の候補位置が、反対方向の4列(行)に収束すること。 - 手順
①数字Xを選ぶ→②候補が2〜4箇所に収まる行を4本探す→③候補位置が4列に収束→④その4列の他行セルからXを削除。 - 例(盤面図)
下図はJellyfish(候補「6」)の概念図。成立する4行・4列を塗り分け、×が消去対象です。
出典:Jellyfish(4×4魚)解説。
- コツ
「4行4列を探す」作業が重いので、アプリの候補ハイライト機能等を活用すると現実的です。 - よくある失敗
候補の取り漏らしで“4列に収束”が崩れているのに成立扱いする。候補の正確性が前提です。
ウイング系
XY-Wing
- 難易度:★★★
- 定義
3マスが二値候補で連携し、共通候補を消去する手筋です。典型形は「ピボットがXY、翼がXZとYZ」で、Zは“両翼のどちらか”に必ず入るため、両翼を同時に見えるマスからZ候補を消せます。 - 適用条件
二値セル3つが、ピボットを介してリンクし(同じ行/列/ブロックで見える関係)、翼2セルが共通候補Zを持つこと。 - 手順
①二値セル(候補2個)を探す→②「三つ巴(3種類の数字が回る)」になる3セルを見つける→③両翼に共通する数字Zを、両翼を見えるマスから消す。 - 例(盤面図)
下図:ピボット=「1/2」、翼=「1/3」「2/3」。両翼に共通する“3”を、両翼を同時に見えるセルから消去(×3)。
出典:XY-Wingの定義・パターン説明。
- コツ
「三つ巴(3種類の数字で二値が回る)」をキーワードに、二値セルを起点に探すと見つけやすいです。 - よくある失敗
ピボットと翼の“見える関係”が成立していないのに適用してしまう。必ず同一ユニット共有を確認。
XYZ-Wing
- 難易度:★★★
- 定義
XY-Wingに似た3セル構造で、ピボットが三値(XYZ)、翼が二値(XZ と YZ)を持つ形です。Zは3セルすべてに含まれ、ピボットがX/Yなら翼にZが入り、ピボットがZならピボットにZが入るため、3セルすべてを見えるセルからZ候補を消去できます。 - 適用条件
ピボット(XYZ)が両翼(XZ・YZ)を見えること。加えて「3セルを同時に見えるセル」が消去対象になります。 - 手順
①三値セル(XYZ)を見つける→②そのセルを見える位置にXZ・YZの二値セルがある→③“3セルを同時に見える”マスからZを消す。 - 例(盤面図)
下図:ピボット=「1/2/3」、翼=「1/3」「2/3」。交差(3セルを見える)で“3”を消去(×3)。
出典:XYZ-Wingの解説。
- コツ
XY-Wingと見た目が似るため、「ピボットが三値か」を最初に確認すると混同しにくいです。 - よくある失敗
消去対象は「3セルを同時に見える」セルに限られる点の誤り。2セルしか見えない場所を消してはいけません。
チェーン・カラーリング・フォーク
ナンバーチェーン(Single’s Chain / シングルチェーン)
- 難易度:★★★
- 定義
1つの数字に注目し、その数字がユニット内で2箇所にしか置けない“強リンク(どちらか必ず成り立つ)”を数珠つなぎにして、遠方の候補消去や矛盾を導く手法です。単色のカラーリングとして説明されることもあります。 - 適用条件
特定数字について、強リンクが連結したネットワークが作れること。 - 手順
①数字nを選ぶ→②強リンク(そのユニットで候補が2つしかない)を線でつなぐ→③チェーンの端点や交差を観察し、候補削除(または確定)を得る。 - 例(盤面図)
下図は、数字「1」の強リンクが鎖状になり、到達点で「1が入れない」結論が出る概念図です。
出典:Single’s Chain / Simple Colouring(単一数字チェーン)の位置づけ。
- コツ
強リンク(候補が2つしかない)を拾い続けると、自然にカラーリングへ移行できます。 - よくある失敗
弱リンク(候補3つ以上)を強リンク扱いしてチェーンを壊す。強リンク/弱リンクの定義を固定します。
カラーリング(Simple Colors:Color Trap / Color Wrap)
- 難易度:★★★★
- 定義
1つの候補数字nについて、強リンクを辿って候補を2色で塗り分け、矛盾(同色衝突=Color Wrap)や二色を同時に見えるセル(Color Trap)から候補消去や確定を導く手法です。 - 適用条件
対象数字nの強リンクネットワーク(クラスター)が作れること。 - 手順
①数字nを選ぶ→②ユニット内でnの候補が2つしかない箇所を強リンクとしてつなぐ→③隣接リンクごとに色を交互に塗る→④Color Trap / Wrap の条件を探す。 - 例(盤面図)
下図はColor Trapの概念図:緑と紫のどちらかに必ずnが立つため、両色を同時に見えるセルのn候補を消せます(×n)。
出典:Simple Coloring / Color Trap・Wrap の説明。
- コツ
アプリで強リンクを自動表示できる仕組みを活用すると、学習と実戦が加速します。 - よくある失敗
クラスターが分断しているのに一続きと誤認する/色付け規則(強リンクは異色)を崩す。
フォーク(Fork:分岐の合流)
- 難易度:★★★★
- 定義
ある二択(または少数択)から推論を進めたとき、どちらの枝でも同じ結論(候補の消去/確定)に到達するなら、その結論は“強制”されます。チェーン/カラーリングの文脈では「fork pattern」として言及されます。 - 適用条件
二択(bivalue)など、枝が明確に分かれる起点があること。 - 手順
①起点に仮定A/仮定Bを置く→②それぞれに論理で推論を進める→③両方で共通に得られる消去/確定を採用(共通結論が「フォークの成果」)。 - 例(盤面図)
下図はフォークの具体例です。起点R5C5は候補{3,7}の二値セル。仮定A「3」→R5C8から5が消える。仮定B「7」→R8C5から5が消える。両枝の推論で共通して「R8C8から候補5が消える」結論に至ります(×5)。
出典:Forcing(枝の合流で強制される)とfork patternの言及。
- コツ
「両枝で同じものが消える/確定する」だけを狙うと短く済みます(枝を全部解き切る必要はない)。 - よくある失敗
枝ごとの推論で“当てずっぽう”が混入し、共通結論が偽になる。仮定後も確実に論理だけで進めます。
強制連鎖と高度な論理
強制連鎖(Forcing Chain)
- 難易度:★★★★★
- 定義
ある候補(またはセル/ユニット)を起点に複数の“仮定枝”を作り、枝ごとの結果を突き合わせて共通結論や矛盾を得る手法です。複数チェーンの総合で結論を得る、と説明されています。 - 適用条件
候補が多く、通常のパターン手筋で前進できない局面。 - 手順
①起点(候補/セルなど)を決める→②各仮定(ON/OFF等)で論理的に推論を進める→③矛盾が出た仮定は排除(候補消去/確定)→④複数枝で共通の消去が出れば採用。 - 例(盤面図)
下図は強制連鎖の具体例です。起点R2C5は候補{4,9}の二値セル。枝1「4を仮定」→行の連鎖でR2C8から4消去→列の連鎖でR5C8に4確定(✓整合)。枝2「9を仮定」→列の連鎖でR5C5から9消去→さらにR8C5で9が重複し矛盾(✗)。矛盾した枝2を排除し、R2C5=4が確定します。
出典:Forcing Chain(強制連鎖)の一般説明。
- コツ
“人力でまず使わないほど面倒”と指摘されることもあるため、学習目的と割り切って局面練習すると良いです。 - よくある失敗
枝の推論中に候補更新を誤り、矛盾の有無を取り違える。枝ごとにメモを分ける(色分け)と安全です。
高度な論理(仮定法・逆説)
- 難易度:★★★★〜★★★★★
- 定義
「ある候補を仮定して進めたら矛盾した→その候補は誤り」という仮定—矛盾の枠組みは、チェーン/強制連鎖/一部の高度解法の共通土台です。解独の用語整理でも、試行錯誤(仮定→矛盾)を説明しています。 - 注意点
ニコリ資料では「当てずっぽう」を戒めていますが、ここで言う仮定法は**“論理の検証”としての仮定**であり、ランダムな推測とは区別します(矛盾を論理的に示せることが条件)。 - 例(盤面図)
下図は仮定法(背理法)の具体例です。R3C4は候補{2,6}の二値セル。候補6を仮定すると、行の連鎖でR3C7=6→列の連鎖でR6C7の候補が{6}のみになるが、R3C7=6と重複し候補が空になる=矛盾(✗)。よって仮定6は誤りと判明し、R3C4=2が確定します。
出典:仮定→矛盾の説明(試行錯誤の構造)。
- よくある失敗
矛盾を“手入力ミス”で作ってしまい、誤った結論を出す。仮定法は入力精度がすべてです。
ALS(Almost Locked Set)
- 難易度:★★★★★
- 定義
ALSは「NセルにN+1種類の候補が入っている集合」です(Locked SetがNセルN候補であるのに対し、ALSは“候補が1つ多い”)。複数ALSをRCC(制限共通候補)でつなげて消去を作る、などの体系があります。 - 適用条件
候補が密で、ALS構造(NセルN+1候補)が見つかる局面。 - 手順
①小さいALS(2セル3候補など)を探す→②ALS間にRCCがあるか確認→③RCCと端の共通候補を使って外部セルの候補を消す(ALS-XZ/ALS-XY-Wing等の派生へ)。 - 例(盤面図)
下図はALS(2セルに3候補)を黄色で示す概念図です(ALS=“ほぼロックト”の塊)。
出典:ALSの定義(NセルN+1候補)と説明。
- コツ
最小ALS(2セル3候補)から練習し、RCCを言語化できるようにすると理解が進みます。 - よくある失敗
ALSを“ただのペア/トリプル”と混同する。ALSは候補が1つ多い点が本質です。
唯一性パターン(ガン:Unique Rectangle など)
- 難易度:★★★★
- 定義
多くの数独問題は「唯一解」を前提に作られます。その前提を利用し、もし特定配置を許すと複数解(致死形)が生じるため、その候補を排除できる、というタイプの手筋が Unique Rectangle です。裏ワザ的(通常ルールからは直接出ない)と説明されることもあります。 - 適用条件
四隅の長方形4マスで、2候補が絡み“複数解が生まれる形”が見えること。 - 手順
①長方形(同じ2行×2列)の4マスを探す→②4マスに共通の2候補が揃う→③もしその2候補だけだと入れ替えで複数解→④唯一解を守るため、余剰候補を消す - 例(盤面図)
下図はUnique Rectangleの基本イメージ(4マスが{2,8}で致死形になり得る→唯一解前提で追加候補を排除)。
出典:Unique Rectangleの説明(唯一解を逆用)。
- コツ
「唯一解前提」を使う手筋であることを明示的に理解し、適用の是非(好み・競技ルール)を自分で決めるのが重要です。 - よくある失敗
唯一解が保証されない問題(自作・検証なし)に使うと破綻する可能性。コンピュータ検証(DLX等)と相性が良いです。
コンピュータ的手法(バックトラッキング、DLX/Algorithm X)
数独の“人間手筋”とは別に、コンピュータでは探索(バックトラッキング)や、Exact Cover(正確被覆)への変換→Algorithm X→Dancing Links(DLX)のような定式化で解くのが定番です。
特に DLX は、が提案・普及させた実装技法として知られ、疎行列のExact Coverを高速に探索する方法として整理されています。
- バックトラッキング(難易度:—)
- 定義:空マスに候補を入れて進み、矛盾したら直前の分岐点に戻って別候補を試す深さ優先探索。人間の“仮定法”を機械的に行う方法です。
- コツ(実装):MRV(候補が最少のマスを先に)等のヒューリスティックで高速化します。
- Algorithm X / DLX(難易度:—)
- 定義:数独を「各制約(行・列・ブロック・セル)をちょうど1回満たす」Exact Coverとして表現し、Algorithm Xで行選択(候補選択)を探索します。DLXはその高速実装です。
- 意義:解の探索だけでなく「唯一解か?」の判定にも使え、Unique Rectangle等の“唯一性前提”を裏で保証できます。
- 補足:数独の計算複雑性については、数独(ナンバープレース)を含む別解問題(ASP)・NP困難性を論じた日本語論文があります。一般化した数独がNP完全であることは多くの研究で参照されます。
例題・練習問題と解答
代表例題(初級:シングル連鎖で解ける)
以下は本文用に作成した例題です。この例題は、スイープとシングル(主にNaked Single)の反復で最後まで進みます。スイープの練習に最適です。
ステップ別解説(クリックで展開)
序盤は行/列の欠けから即確定が連続します(例:R1は「5」と「2」が未確定→候補が1つになるマスが出る)。- R1C8=3(Naked Single)
- R1C4=5(Naked Single)
- R1C9=2(Naked Single)
- R2C5=2(Naked Single)
- R2C8=8(Naked Single)
- R2C9=9(Naked Single)
- R3C3=3(Naked Single)
- R2C1=5(Naked Single)
- R2C3=1(Naked Single)
- R3C1=9(Naked Single)
- …(同様に“確定→更新→再スイープ”を繰り返す)
代表例題の答え(クリックで展開)
練習問題(難易度別)
次の2問も本文用に作成した練習問題です。中級は「予約・相互作用」が出やすく、上級はチェーンや強制連鎖の入口になりやすい配置です(ただし、解法は複数あり得ます)。
練習問題(中級)
解答(中級)
練習問題(上級)
解答(上級)
よくある誤解と対処法
- X-Wingは「長方形なら何でも」ではない
条件は「基底の2行(または2列)それぞれに候補が2つに限定」されることです。これを満たさないと消去は正当化できません。 - Unique Rectangleは“ルール”ではなく「唯一解前提」を使う
問題が唯一解であることを前提にするため、ルールだけからは導けない“裏ワザ”と説明されることがあります。使う/使わないは方針として決めるのが安全です。 - 仮定法は「当てずっぽう」と違う
仮定法は、矛盾を論理で示して候補を排除する方法です。単なる推測で数字を書き込むのとは区別し、検証の手順(候補更新、矛盾条件)を形式化して行います。 - 候補がズレると上級手筋はすべて崩壊する
魚・チェーン・ALSは候補の正確性が前提です。詰まったらスイープで候補整合性を点検するのが最短復帰です。
CTA(練習への誘導)
ここまで読んだら、まずは「スイープ+シングル」だけで解ける問題を毎日1題、次に予約・ブロックライン相互作用を意識して中級へ、最後にX-Wing→XY/XYZ→カラーリング→強制連鎖→ALSの順で“1つずつ狙って練習”してください。難問が突然解けるようになる瞬間は、だいたい「反復スイープ」と「候補精度」が揃った時に来ます。
ナンプレをもっと楽しむ
当サイトでは、ナンバープレイスを実際に遊べる問題集や、盤面を解析できるツールを公開しています。
参考文献・主要出典
- ニコリ:数独のルール・歴史・入門説明(公式)
- ニコリ:入門PDF「数独のルールと解き方」(ブロッケン/レッツミー/マスミ/予約/井桁理論などの紹介)
- SudokuWiki:X-Wing / Swordfish / Jellyfish / Simple Colouring / AIC 等の体系的解説
- HoDoKu(技法解説):Simple Colors(Trap/Wrap)、Basic Fish等
- EPSILON ★ DELTA(日本語):XY-Wing / XYZ-Wing / Swordfish / Jellyfish / Forcing Chain / ALS / Unique Rectangle / X-Chain 等
- ナンプレ京(日本語):X-Wing / Swordfish / Jellyfish / AIC / XY-Chain 等の解説、強リンク/弱リンクの説明
- Donald E. Knuth “Dancing Links”(Algorithm X/DLXの原典)
- 八登崇之・瀬田剛広(東京大学):パズル(数独含む)のASP完全性(NP完全性を含意)に関する日本語論文
- Lynce & Ouaknine “Sudoku as a SAT Problem”(一般化数独のNP完全性参照とSAT符号化)
- 用語対応(英日):解独(Kaidoku)用語整理




コメント