Appearance
Метод решения судоку Forcing Chains
В методе Forcing Chains из Предположения по нескольким цепочкам приводящих к Следствию, можно сделать вывод.
Предположение -(по цепочкам)-> Следствие => Вывод
Определение и описание одной Цепочки / Chain
Варианты Forcing Chains:
- (Предположение - Единственное значение) => Ошибка. Это значит, что Предположение - неверно.
- (Предположение - Полное множество, включающее правильный ответ) => Единственное значение (Решение). Это значит, что Предположение - верно.
- (Предположение - Полное множество, включающее правильный ответ) => Несколько Решений, исключающие другие варианты. Это значит, что другие варианты являются неправильными.
Единственное предположение
- NodeTruth (Узел-Истинности): NodeTrue (Узел-Истина) или NodeFalse (Узел-Ложь)
Предположение: Полное множество
- Node (Узел) - Полное множество: NodeTrue, NodeFalse
- Cell (Ячейка) - Полное множество: NodeTrue для всех кандидатов в Ячейке
- Sector (Сектор) - Полное множество: NodeTrue для всех кандидатов одной цифры в Сектое
Предположения
Предположения - Источники цепочек.
Варианты:
- Единственный источник - Узел-Истинности (Ложь или Истина)
- Полное множество значений, включающее в себя правильное.
Варианты полных множеств:
- Узел: Узел-Ложь, Узел-Истина
- Ячейка: Узлы-Истины для каждого кандидата
- Сектор: Узлы-Истины для каждого кандидата одной любой цифры
Предположение 1. Узел-Истинности / NodeTruth
Рис. 1. Forcing chains: Предположение Узел-Ложь или Узел-Истина
Источником цепочек может быть Узел-Истинности (Узел-кандидат в конкретном значении Истина или Ложь)
Предположение 2. Узел / Node (NodeTrue и NodeFalse)
Рис. 2. Forcing chains: Предположение Узел
Источником цепочек может быть Узел-кандидат во всех возможных значениях, т.е. Истина и Ложь
Предположение 3. Кандидат в Секторе
Рис. 3. Forcing chains: Предположение Узлы-Истина одной цифры в секторе
Источником цепочек могут быть все возможные Узлы-кандидаты одной цифры в значении Истина. Это множество обязательно будет включать правильный узел.
Заключения
Возможные варианты окончания цепочек, на основе которых можно сделать вывод о предположении.
Заключение 1. Узел-Истинности.
Рис. 4. Forcing chains: Заключение Узел-Истинности (Ложь или Истина)
Если все возможные варианты, включающие правильны ответ приводят к одному Узлу-истинности.
Заключение 2. Несколько Узлов-Истин во множестве возможных
Рис. 5. Forcing chains: Заключение Несколько Узлов-Истина одной цифры в секторе
Несколько Узлов-Истин в Секторе для одной цифры или в Ячейке для разных цифр
Заключение 3. Все Узлы-Ложь во множестве возможных
Рис. 6. Forcing chains: Заключение Все Узлы-Ложь одной цифры в секторе
Ошибочное заключение. Если какое-нибудь предположение приводит к таком Ошибочному заключению, то предположение неверно.
Заключение 4. Deadly Pattern
Если Узел-Истинности приводит к Узлам-Истины, образующие Deadly Pattern, то такой Узел-Истинности неверный.
Forcing chains: NodeTruth-Node
Первый пример из Узла-Истина
Две цепочки из Узла-Истины ко всем возможным Состояниям Узла (Истина и Ложь)
- {1}@E2-{!1}@E1;
- {1}@E2-{!1}@E4={1}@H4-{!1}@H1={1}@E1
Рис. 7. Forcing chains: NodeTrue-Node
Forcing chains:NodeTruth-Node {1}@E2-{!1}@E1; {1}@E2-{!1}@E4={1}@H4-{!1}@H1={1}@E1 remove: {1}@E2
Второй пример из Узла-Ложь
Две цепочки из Узла-Ложь ко всем возможным Состояниям Узла (Истина и Ложь)
- {!6}@A5={6}@A7;
- {!6}@A5={6}@K5={!5}@K5={5}@K3={!3}@K3={3}@D3-{!3}@D7={3}@A7-{!6}@A7
Рис. 8. Forcing chains: NodeFalse-Node
Forcing chains:NodeTruth-Node {!6}@A5={6}@A7; {!6}@A5={6}@K5={!5}@K5={5}@K3={!3}@K3={3}@D3-{!3}@D7={3}@A7-{!6}@A7 digits: {6}@A5
Forcing chains: NodeTruth-NodesFalseInCell
Рис. 9. Forcing chains: NodeTruth-NodesFalseInCell
Цепочки из Узла-Истина ко всем возможным Узлам-Ложь в Ячейке. Т.е. в ячейке ничего не остается, это ошибочная ситуация, поэтому предположение неверное.
- {3}@B6-{!3}@F6;
- {3}@B6-{!3}@G6={1}@G6={!1}@F6;
- {3}@B6-{!3}@B3={3}@C2={!3}@F2={6}@F2-{!6}@F6
Forcing chains:NodeTruth-NodesFalseInCell {3}@B6-{!3}@F6; {3}@B6-{!3}@G6={1}@G6={!1}@F6; {3}@B6-{!3}@B3={3}@C2={!3}@F2={6}@F2-{!6}@F6 remove: {3}@B6
Рис. 10. Forcing chains: NodeTruth-NodesFalseInCell
Цепочки из Узла-Истина ко всем возможным Узлам-Ложь в Ячейке. Т.е. в ячейке ничего не остается, это ошибочная ситуация, поэтому предположение неверное.
- {4}@F7-{!4}@F4;
- {4}@F7-{!4}@F6={9}@F6-{!9}@F4;
- {4}@F7-{!4}@DE9={4}@G9-{!3}@G9={3}@G4-{!3}@F4
Forcing chains:NodeTruth-NodesFalseInCell {4}@F7-{!4}@F4; {4}@F7-{!4}@F6={9}@F6-{!9}@F4; {4}@F7-{!4}@DE9={4}@G9-{!3}@G9={3}@G4-{!3}@F4 remove: {4}@F7
Forcing chains: NodeTrue-All NodesFalse
Рис. 11. Forcing chains: Узел-Истина -> Все Узлы-Ложь одной цифры в секторе
Если цепочки из одного Node-True приводят ко всем всевозможным Узлам-False, то такое предположение неверно.
Forcing chains: NodeTrue-Some NodesTrue
Рис. 12. Forcing chains: Узел-Истина -> Несколько взаимоисключающихся Узлов-Истина
Если цепочки из одного Node-True приводят к нескольким взаимоисключающим Узлам-True, то такое предположение неверно.
Forcing chains: Node-NodeTruth
Если цепочки из всех значений (Истина/Ложь) Узла (Node) приводят к одному Узлу-Истинности, то этот Узел-истинности - правильное решение.
Forcing chains: Cell-NodeTruth
Если от каждого Узла-Истины в Ячейке есть цепочка, указывающая на один Узел-Истинности, то это Состояние для Узла можно принимать за правильное.
Рис. 13. Forcing chains: Cell-Digit
Forcing chains: Cell-Digit
- {2}@K6={!2}@K1={9}@K1-{!9}@K3;
- {4}@K6-{!4}@C6={9}@C6-{!9}@B5={9}@B3-{!9}@K3;
- {9}@K6-{!9}@K3 remove: {9}@K3
Рассмотрим приведенный выше пример. В ячейке K6 есть три узла {246}@K6. Для каждого из этих Узлов-Истины есть цепочка, которая приводит к одному Узлу-Ложь. Так как цепочки рассматривают все возможные варианты в ячейке K6, значит {9}@K3 будет Ложь. Убираем этого кандидата.
Forcing chains: Sector-NodeTruth
Если от каждого Узла-Истины одного кандидата в Секторе есть цепочка, указывающая на один Узел-Истинности, то это Состояние для Узла можно принимать за правильное.
Рис. 14. Forcing chains: Sector-Digit
Forcing chains: Sector-Digit from: RowF
- {3}@F3-{!3}@D1={3}@H1-{!3}@H8;
- {3}@F6={!3}@DE4={3}@H4-{!3}@H8;
- {3}@F8-{!3}@H8 remove: {3}@H8
Рассмотрим приведенный выше пример. В Строке F есть 3 Узла для кандидата 3. Для каждого Узла-Истины есть цепочка, которая приводит к одному Узлу-Ложь. Так как цепочки рассматривают все возможные варианты 3 в Строке F, значит {3}@H8 будет Ложь. Убираем этого кандидата.
Forcing chains: Sector-Cell
Рис. 15. Forcing chains: Sector-Cell
От всех Узлов 3 в Столбце 4 идут цепочки к нескольким Узлам-Истины в ячейке E8:
- {3}@A4-{!3}@A8={3}@E8;
- {3}@C4-{!5}@C4={5}@C5-{!5}@E5={5}@E8;
- {3}@F4-{!3}@E6={3}@E8
Forcing chains:Sector-Cell {3}@A4-{!3}@A8={3}@E8; {3}@C4-{!5}@C4={5}@C5-{!5}@E5={5}@E8; {3}@F4-{!3}@E6={3}@E8 from: Col4 remove: {6}@E8,{8}@E8