解析アルゴリズムの系統(v6)
- 最初の3つ”Single、LockedCandidate、LockedSet”は基本的な手法で、これらで完結しています。
- Fishには、”Locked”、”BaseSetとCoverSet” など、数独アルゴリズムを構成する上での重要な概念が含まれています。
- ALSは、名前の通り 一部の要素を除くと "LockedSet" になる状態です。
ALS を用いる数独アルゴリズムは多種類あります。 ALS は盤面中に多数存在するので、解法として有用です。 人手で見つけるのは困難ですが、プログラムで探すのは容易です。 - Linkは、Lockedのセル群にFinを付加した状態です。Linkは、セルとセル、セルとALS、ALS-ALS、ALS-AICなど様々な形態があります。
複数のリンクを組み合わせたり連結して、様々な解法アルゴリズムを構成できます。
GNPX_v5は、Linkの表現を形式を改めて、拡張しやすくしました。v6ではさらにリストラの予感がします。
- Linkを連結する方法には、起点から放射状に他のセル・数字に繋ぐ場合と、起点に戻ってループを形成する場合があります。
- ForceChainはリンク連結(セル間リンク、AIC、ALSリンク)を用いるアルゴリズムです。波及的探索と履歴管理を用いる強力な方法です。
Force系アルゴリズムは次の論理に基づいています。- 集合Xは、要素数n、1要素は肯定で残りは否定とする。どの要素が肯定であるかは未定。
- 真値の要素から始めたチェインでは、導かれる要素の値は肯定または否定と確定する。
- 偽値の要素から始めたチェインでは、導かれる要素の値は不確定となる(肯定でも否定でも導ける)。
- 集合Xの各要素を肯定と仮定して始めるそれぞれのチェインについて、全てのチェインの導く要素Aの状態値が一致したとき、 要素Aの状態値は確定する。
- 集合Xの1要素Bを肯定と仮定して始めるチェインで、複数ルートで導かれる要素Cの状態値が一致しないとき、 起点要素Bは否定と確定する。
- 集合Xは、要素数n、1要素は肯定で残りは否定とする。どの要素が肯定であるかは未定。
- SueDeCoqは、AnLSとALSの組み合わせロジックと再解釈しました。解の成立条件は、拡大しました。
- Subset Exclusion
- Firework
- Exocet
GeneralLogic
上の表に示した数独の解法アルゴリズムは、全て”GeneralLogic”で表せます。名称のとおりまさに汎用手法です。
これは、BaseSetとCoverSetの被覆の関係から、論理的に不都合な(あり得ない)候補を除外する手法です。
従来手法のアルゴリズムで解いた結果を、BaseSetとCoverSetで再解釈するのは比較的容易です。
しかし、あまりに素朴であるため、「GeneralLogic」は数独を解くのにあまり効率的ではありません。
永く内面で考え続けることにします。 ”抵抗は無意味だ” でしょうか