详细内容或原文请订阅后点击阅览
轻柔的回溯介绍
概念概述和动手审查张贴文章对回溯性的温和介绍首先出现在数据科学上。
来源:走向数据科学是一种多功能技术,用于探索各种数据科学问题的解决方案空间并逐步构建候选解决方案 - 有点像导航迷宫。在本文中,我们将简要介绍回溯概念,然后再研究一些在Python中编码的直观,动手实例。
注意:以下各节中的所有示例代码片段都是由本文的作者创建的。
注意:概念概述
在高水平上,回溯技术涉及对计算问题的解决方案空间的分步探索(通常可以将其作为约束满意度或组合优化的问题之一)。在探索中的每个步骤中,我们都会沿着不同的路径进行,检查问题的限制是否在我们前进时得到满足。
如果我们在探索过程中达到了有效的解决方案,我们会记下它。在这一点上,如果我们的问题只要求我们找到一个有效的解决方案,我们可以结束搜索。如果问题需要寻找多个(或全部)可能的解决方案,我们可以继续探索先前发现的解决方案的扩展。
但是,如果在任何时候违反了问题约束,我们会回溯;这意味着回到我们搜索的最后一点,其中已经构建了部分解决方案(并且似乎仍然有效解决方案),并继续沿着不同的路径进行搜索。可以根据需要继续进行探索的前进过程,直到探索整个解决方案空间并探索所有有效的解决方案。
回溯实例示例
解决sudoku
操作研究 密码学下面的python代码显示了如何使用回溯来实现sudoku求解器,并提供了便利的功能,以精心打印网格。请注意,求解器期望用零表示(或初始化)空细胞。
求解器将在毫秒内产生以下溶液: