首先对不起我的英语。
我想在 Erlang 中使用回溯算法。它将作为解决部分填充数独的猜测。一个 9x9 数独存储为 81 个元素的列表,其中每个元素存储可以进入该单元格的可能数字。
对于 4x4 数独,我的初始解决方案如下所示:[[1],[3],[2],[4],[4],[2],[3],[1],[2,3], [4],[1],[2,3],[2,3],[1],[4],[2,3]]
这个数独有 2 个解决方案。我必须把它们都写出来。在达到最初的解决方案之后,我需要实现一个回溯算法,但我不知道如何实现。
我的想法是将固定元素写到一个名为fixedlist的新列表中,它将多解决方案单元格更改为[]。
对于上述示例,固定列表如下所示:[[1],[3],[2],[4],[4],[2],[3],[1],[],[4] ,[1],[],[],[1],[4],[]]
从这里我有一个“样本”,我在解决方案列表中寻找不等于 1 的最小长度,然后我尝试这个单元格的第一个可能的数字,然后我把它放到那个固定列表中。在这里,我有一个算法来更新单元格并检查它是否仍然是可解的数独。如果没有,我不知道如何退后一步尝试新的。我知道它的伪代码,我可以将它用于命令式语言,但不能用于 erlang。(prolog实际上实现了回溯算法,但是erlang没有)
任何的想法?