数据结构与算法 该标签共收录 1 篇文章
2021-02-11

在很多情况下,回溯算法相当于穷举算法的巧妙实现。但性能并不理想。不过情况并非总是如此,即使如此,在某些情况下它相比于蛮力穷举搜索,工作量也有显著节省。当然,性能是相对的,对于排序而言,O(N2)的算法是相当差的,但对于旅行售货员(或任何NP完全问题),O(N5)的算法则是里程碑式的结果。

数独问题,也可以通过回溯算法实现。虽然存在许多可能的尝试,但是只有少量的几个是具体要考虑的。开始,给定一个留有空白的数独,将其转成长度为81的一维数组。如果,所有的空白都填写上对应的数字,并且符合数独的规则,那么算法终止。如果填写到某一个空格,该空格之后的所有数字摆放都不理想,那么我们必须使用其他的数字,填充这一个空格。当然,这也可能导致另外的重新摆放。如果我们发现,第一个空格尝试了所有的可能,并且没有找到问题的解,那么该问题就不存在解。否则,我们最终终止在完成问题的解。这个算法基本上是蛮力的,当时它并不直接尝试所有的可能。例如,如果数字n(1~9)已经出现在空白所属的行、列或时小九宫格中,该值是绝对不考虑的。通过条件约束,可以过滤大出一大组可能的组合。

已经是全部了 |ω・)