我目前正在关注算法类,我们必须解决数独。
我已经有了一个天真回溯的工作解决方案,但我对使用树数据结构解决这个难题问题更感兴趣。
我的问题是我不太明白它是如何工作的。有人能向我解释用树解谜的基本原理吗?
我不寻求优化。我正在寻找像Genetic algorithm等类似算法的解释。我的目的只是为了在这一点上学习。我很难把我在科学文章中读到的内容翻译成实际的实现。
我希望,我的问题更清楚了。
非常感谢!
编辑:我编辑帖子更精确。
答案 0 :(得分:0)
我不知道如何使用树来解决数独游戏,但是在尝试猜测和使用回溯之前,你试图尽可能多地标记单元格。因此,请查看this question。
答案 1 :(得分:0)
与大多数搜索问题一样,在数独中也可以将树与问题关联起来。在这种情况下,节点是对变量的部分分配,而分支对应于父节点中的赋值的扩展。然而,将这些树存储在内存中是不切实际的(甚至是不可行的),您可以将它们视为概念工具。回溯实际上使用变量排序来导航这样的树以避免探索无望的分支。通过约束传播技术可以获得更好(更快)的解决方案,因为您知道所有行,列和3x3单元格必须包含不同的值。一个简单的算法就是AC3,大多数介绍性的AI书都包括Russell & Norvig 2010。