作者funkie (乾!!草泥马)
看板puzzle
标题Re: [问题] 数独卡关求解
时间Sat Jul 2 19:22:23 2016
※ 引述《waterap (呱呱)》之铭言:
http://i.imgur.com/9vFWhvh.jpg
1F:推 funkie: row3:{8,9} {8,9}; row9:{1,8,9} {8,9} => {1,8,9}->{1} 07/02 17:28
2F:推 funkie: unique rectangle of type 1 07/02 17:35
3F:→ waterap: 抱歉,我不懂这解法,可以麻烦解释一下吗?为何{1、8、9 07/02 18:13
4F:→ waterap: }有独解1? 07/02 18:13
5F:推 LPH66: 这个是唯一解理由, 若那里不是 1 则这个长方形就是 89 互换 07/02 18:35
6F:→ LPH66: 理论上应该要有别的线索才对 07/02 18:36
一个合法的数独有解则必定是唯一解
因此不能含有deadly pattern
4 cells deadly patteern example:
12 . . | 21 . . | . . .
21 . . | 12 . . | . . .
. . . | . . . | . . .
1,2位置可以互换
所以解的时候可以排除这些可能
{1,8,9}那格如果是8 or 9 就是上面的情况
所以可以删去候选数8,9
删去後只剩1 所以那一格是1
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.1.230.100
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/puzzle/M.1467458547.A.424.html
7F:推 waterap: 所以,当确定其他地方都无线索才用这方式?还是这也是一 07/02 19:53
8F:→ waterap: 个常用法? 07/02 19:53
9F:→ funkie: 这算最简单的进阶技巧,3格一样的候选数删第4格候选数 07/02 21:09
10F:→ funkie: 算是一眼就看的出来 有看到就用罗 07/02 21:13
11F:推 waterap: 谢谢f大讲解 07/02 21:22
12F:推 LPH66: 个人是不太喜欢用这种方法, 一个题目要唯一解该有其他线索 07/02 21:49
13F:→ LPH66: 不过如果要把这回事当前提那也不是不能用就是了 07/02 21:50
14F:→ LPH66: 再说这个方法在贤独是不能用的 07/02 21:51
15F:推 walkwall: 原来如此 07/02 22:54
16F:推 arthurduh1: 唯一解的条件并不是普遍被出题者采用的 07/02 23:11
17F:→ arthurduh1: 但漂亮的题目一般都会这样自我要求就是 07/02 23:13
可以参考以下网页的解释:
http://sudoku.ironmonger.com/howto/deadlyPattern/docs.tpl
第二段有说
There is some debate on the issue of uniqueness in Sudoku puzzles. On one
hand there is nothing in the basic Sudoku rule that specifies uniqueness. On
the other,
there is no logic that can solve a puzzle with multiple solutions
so at some point, to get to any one of the solutions you have to guess.
※ 编辑: funkie (106.1.230.100), 07/03/2016 00:28:45
18F:推 LPH66: 其实这个 some point 比大家想像中的还要更早 07/03 01:05
19F:→ LPH66: 因为进阶技法的「当某些条件满足时某些格子因矛盾可删除」 07/03 01:05
20F:→ LPH66: 这其实就是 guess 了: 某格猜这个数的话经推理得到矛盾 07/03 01:06
21F:→ LPH66: 所以我并不排斥长 backtrack 推理, 但我不喜欢唯一解理由 07/03 01:07
22F:→ LPH66: 嘛, 这也就是为什麽我虽然不喜欢它, 但若把唯一解当前提 07/03 01:09
23F:→ LPH66: 也不是不能用的原因了; 当前提的话上面那句话的矛盾就可以 07/03 01:10
24F:→ LPH66: 包含「和唯一解这前提矛盾」 07/03 01:10
25F:→ wxtab019: 之前有些看过没唯一解的 後来就没用这招解了 07/04 00:13
26F:→ funkie: 楼上误会了 没唯一解的本来就要猜 猜错就错了 并不会用了 07/04 19:54
27F:→ funkie: 这方法就有唯一解 用不用这方法是信仰问题 07/04 19:54
28F:推 LPH66: 推这是信仰问题 07/05 09:30
29F:推 arthurduh1: 遇到没唯一解的话,用这个方法会遇到的问题是 07/05 09:37
30F:→ arthurduh1: 可能会解到很後面才发现矛盾 07/05 09:38
31F:推 arthurduh1: 所以基本上就要跟试误法一样,对後来的推导另外标记 07/05 09:40
32F:→ funkie: 遇到没唯一解的问题是这题目根本不能靠逻辑解 07/05 14:10
33F:推 arthurduh1: 有的,有些没有唯一解的题目还是可以手算出全部的解 07/05 15:24
34F:→ arthurduh1: 你要说不能靠逻辑解,有些有唯一解的题目也不行 07/05 15:24
35F:→ arthurduh1: 所以这是两回事 07/05 15:25
36F:→ arthurduh1: 会建议开始用唯一解条件时就要当作试误法就是因为 07/05 15:26
37F:→ arthurduh1: 被阴过 07/05 15:27
38F:→ arthurduh1: 但一般来说 可以怪出题者出得不好 这我是没意见 07/05 15:28
39F:→ funkie: ... 若A B两种解都和原题目符合请问哪种逻辑可以分得出来? 07/05 17:05
40F:推 arthurduh1: 非唯一解的意思不就是有两组答案?! A,B都是解阿 07/05 17:25
41F:推 arthurduh1: 我不是都推可以解出 "全部的解" 了 07/05 17:34
42F:→ arthurduh1: 我也说过你可以怪题目不佳不要解 07/05 17:36
43F:→ arthurduh1: 但若至少想解出来,且采用本篇方法,就必须当成试误 07/05 17:38
44F:→ funkie: 所以你在某一步做了"猜"这件事 发现答案A正确 又"猜"一次 07/05 19:21
45F:→ funkie: 再发现B答案正确 这个游戏的目标就是要不能猜答案阿 -,- 07/05 19:23
46F:推 arthurduh1: 反过来思考,当题目可能有多解时,本篇方法才是猜答案 07/05 19:26
47F:→ arthurduh1: 所谓猜到底是什麽其实很模糊,我自己是以「记忆体」 07/05 19:27
48F:→ arthurduh1: 用量当判别标准。我也同意尽量不要猜答案,但同时 07/05 19:27
49F:→ arthurduh1: 这也是我尽量不使用本篇方法的原因 07/05 19:28
50F:→ arthurduh1: 要用的时候我一定当试误法 (所谓试误法就是猜) 07/05 19:28
51F:→ arthurduh1: 这一切都奠基在到底允不允许多解上 07/05 19:30
52F:→ arthurduh1: 你的引用里也说到这是有争议的,所以除非强调唯一解 07/05 19:30
53F:→ arthurduh1: 否则我都会把 本篇方法&试误法 当最後手段 07/05 19:31
54F:推 arthurduh1: 其实你可以问问自己,当遇到多解题目的时候你怎麽办? 07/05 19:39
这游戏的目的是完全不用猜的得到最後答案
当一个题目有多重解要你一定要猜的时候 就是不同的游戏了
没有继续做下去的必要
一个没有逻辑的问题当然不能用逻辑解
用逻辑去解没有逻辑的问题得到错误的答案
这不是再正常不过了吗
前面说的争议你就误会了
不用这个方法的是因为
只有唯一解是经过推论的结果
有多重解 => 一定要猜
=> 可以不用猜的 => 只有唯一解
这个方法是删除会得到多重解的分支
这样才能保证这个游戏可以不用猜的得到最後答案
所以一个合法的数独题目不需要猜只能有唯一解
so 这是信仰问题
※ 编辑: funkie (106.1.230.100), 07/05/2016 20:32:24
55F:推 arthurduh1: 我没有要为了前面的争议(?)背书阿 我提的是自己所想 07/05 20:38
56F:→ arthurduh1: 的确是信仰问题也没错。 依你说会变不同游戏,我想 07/05 20:38
57F:→ arthurduh1: 应该代表遇到多重解你就不会继续解下去了? 07/05 20:39
58F:→ arthurduh1: 那就是我说的你觉得题目不佳阿XD 这也OK没问题呀 07/05 20:39
59F:→ arthurduh1: 我的话是会想厘清这个题目到底出了什麽问题,所以会 07/05 20:40
60F:→ arthurduh1: 试看看能不能完全解出。毕竟解不出来还分「有矛盾」 07/05 20:40
61F:→ arthurduh1: 和「多重解」 但如果不把本篇方法当试误法,就会 07/05 20:41
62F:→ arthurduh1: 变成无法分辨其中差异。 07/05 20:41
63F:→ arthurduh1: 另外关於「逻辑」这个字眼: 多重解并不违反逻辑 07/05 20:42
64F:→ arthurduh1: 否则我们解 多次方程式 不就都是不合逻辑的行为? 07/05 20:43
65F:→ arthurduh1: 我倾向於逻辑代表的是在很少的步数内能看出结果 07/05 20:44
66F:→ arthurduh1: (在本篇所提到的逻辑) 07/05 20:44
67F:推 arthurduh1: 而有些多重解是真的能够用很少的步数整理出来的 07/05 20:48
68F:推 arthurduh1: 那个推论的过程其实我也有疑义。只有唯一解应该是规定 07/05 21:04
69F:→ arthurduh1: (某个不一定被接受的规定) 07/05 21:04
70F:→ arthurduh1: 而不是由「可以不用猜」这个模糊的概念推得 07/05 21:05
71F:→ arthurduh1: 除非你的「猜」专指多重解,那就很明确。但这样就不须 07/05 21:06
72F:→ arthurduh1: 绕这麽多步的推论了 07/05 21:06
73F:推 LPH66: 我很前面就推过了: 开始「猜」的点比各位想像中的还要早 07/06 20:36
74F:→ LPH66: 逻辑推理里所谓的归谬法或反证法就是猜一个前提再推出矛盾 07/06 20:37
75F:→ LPH66: 有很多进阶数独技巧的理由归根究底还是反证法 07/06 20:38
76F:→ LPH66: 当某些格子满足条件时若哪一格是什麽数字则可以推出矛盾 07/06 20:38
77F:→ LPH66: 所以我才会说长串倒推跟这种技巧逻辑上没什麽两样 07/06 20:39
78F:→ LPH66: 唯一差别只有 arthur 讲的「记忆体用量」而已 07/06 20:40
79F:→ wxtab019: 所以意思是 这方法也只是"猜"的其他一种 不一定是正解? 07/06 20:47
80F:推 arthurduh1: 猜跟逻辑技巧的分界仔细想想会发现有模糊地带 07/06 21:50
81F:→ arthurduh1: 其实我也没说原PO说错什麽,只是想把非唯一解的题目 07/06 21:50
82F:→ arthurduh1: 拉近考虑范围而已 07/06 21:51
83F:推 arthurduh1: *进 07/06 21:54
84F:→ arthurduh1: 唯一觉得不妥的就是要嘛就把唯一解当规则 07/06 21:54
85F:→ arthurduh1: 要嘛就是接受非唯一解。 而不是因为「不能猜」这个 07/06 21:55
86F:→ arthurduh1: 理由而说不允许非唯一解 07/06 21:55
87F:→ arthurduh1: 若把唯一解当条件 => 本篇方法是个强大的技巧 07/06 21:57
88F:→ arthurduh1: 若接受非唯一解 => 本篇方法是「猜」 07/06 21:58
89F:推 arthurduh1: to wxtab: 能解出来的(i.e. 没有与规则冲突)都是正解 07/06 22:05
90F:→ arthurduh1: 正解与否跟你用什麽方法无关 07/06 22:05