可以使用Knuth算法X的Dancing Links实现来解决this CSP吗?在这个游戏中,第一个和最后一个数字总是已经在董事会中,我相信每个精心设计的问题只有一个解决方案。
答案 0 :(得分:3)
是
假设我们要解决这个Hidato:
+---+ +---+
| | | 6 |
+---+---+---+
| | |
+---+---+
| 1 | |
+---+---+
首先,让我们用字母a,b,c,d:
命名空单元格+---+ +---+
| d | | 6 |
+---+---+---+
| b | c |
+---+---+
| 1 | a |
+---+---+
我们需要为X Algorithm的每个解决方案行表达3种约束:
结果问题矩阵是:
1 2 3 4 5 6 a b c d 2a 2b 2c 2d 3a 3b 3c 3d 4a 4b 4c 4d 5a 5b 5c 5d
1 1
1 1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1 1
1 1 1
1 1 1
1 1 1 1
1 1 1
例如,第二行(不计算标题行)可以读作:此行在单元格中设置数字 2 (第一个) a (第二个1)。它也受 2a 光约束的约束。并且它还限制3不在 3a 和 3d ,因为它们不与单元格 a 相邻。
所有行都以这种方式阅读,除了:
实施留给读者练习......
答案 1 :(得分:0)
没有
约束求解器当然可以解决这类问题,但似乎不太可能是最快的方法。另外,似乎很难告诉求解器“路径不能跨越自己”,这是一个有用的提示。