题的最佳解为止。当然利用穷举法可以解决很大一部分的实际问题,但由穷举法的实现过程
可知它所花费的资源是相当多的。使用穷举法要进行彻底的搜索,彻底的比较,要以大量的
运算为基础,而大量的运算势必要花费大量的时间,有时这种消耗是计算机也承担不起的口
所以用穷举法解决问题往往是不实际的。因此要用到回溯法。
们提供了一个答案,即每当遇到十字路口时便向一个固定的方向前进。在这里假设这个方向
是左,当向左走后如果又遇到了十字路口,那么便继续向左走;如果遇到了死胡同便回溯到
前一个路口并直走(因为此路U的左边已被证实是走不通的)。当直走并遇到路口后继续向
左走:当直走并遇到死胡同后同样回溯到前一个路口。此时这个路口就只剩下右边可走了,
当向右走后如果遇到路口仍然向左走:当向右走并遇到死胡同后仍然回溯到前一个路口。此
时这个路口已被证实是走不通的,于是再向前回溯一个路口。如此循环下去直到找到迷宫的
出口口关于同溯法和迷宫问题的具体求解过程,在本书的后续章节中将会有更为详细的描述。
法并不相同。回溯法的本质是深度优先搜索,在应用回溯法时需建立一个栈保存搜索的路径。
由栈的工作方式可知当前的搜索路径一定保存在栈的顶部,当该搜索路径被确定为不可行时
便从栈顶删除此搜索路径并对新栈顶所保存的搜索路径进行搜索,如此循环下去直到找到问
题的解或栈为空栈。而分治法的实质是递归。分治法每次解决整体问题中的一个子问题,子
问题可能被重复解决,但不会出现像回溯法中那样走进“死胡同”的情形。