回溯算法

回溯算法,也叫试探法,用于系统地搜索问题的解。回溯算法的核心思想是:沿着一条路向前走,能进则进,不能进则退回来,换一条路重试。

使用回溯算法解决问题,一般分为三个步骤:

在确定解空间的组织结构之后,回溯算法从开始节点出发,以深度优先的方式搜索整个解空间。在搜索开始时,开始节点成为活结点,并成为当前扩展节点,然后从当前扩展节点处出发,向纵深方向前进一步,到达一个新节点,这个新节点就成了新的活结点,并且成为当前扩展节点注释1;如果从当前扩展节点处,无法继续向纵深方向搜索,那么当前扩展节点就成了死节点,此时需要回溯到最近的活结点注释2,并使之称为当前扩展节点。回溯算法以这种方式递归地在解空间中进行搜索,直到找到问题的解或解空间中没有活结点为止。