回溯算法是一种解决问题的算法,它使用暴力方法来查找所需的输出。
暴力方法会尝试所有可能的解决方案,然后选择所需/最佳解决方案。
术语“回溯”表示如果当前解决方案不合适,则回溯并尝试其他解决方案。 因此,在此方法中使用了递归。
此方法用于解决具有多种解决方案的问题。 如果需要最佳解决方案,则必须进行动态规划。
空间状态树是表示问题的所有可能状态(解决方案或非解决方案)的树,该问题从根作为初始状态到叶作为终端状态。
状态空间树
Backtrack(x)
if x is not a solution
return false
if x is a new solution
add to list of solutions
backtrack(expand x)
问题:您想找到所有可能的方式在 3 个长凳上安排 2 个男孩和 1 个女孩。 约束:女孩不应该坐在中间的长凳上。
解决方案:共有3! = 6
种可能性。 我们将尝试所有可能性并获得可能的解决方案。 我们递归地尝试所有可能性。
所有可能性是:
所有可能性
以下状态空间树显示了可能的解决方案。
状态树与所有解决方案