9 倒退一步,继续搜索(第2/2页)

对于目前所看到的算法,我们都可以高效地从任意一个状态跳到另一个状态。比如说在一个数组里面,我们可以很容易地通过序号来查看任何一个地方存放的数字。而在宾馆的走廊里,我们也可以在各个房间之间任意跑动。这种灵活性让我们的算法可以很高效。

但是也有很多搜索问题会限制你只能以特定的方式从一个状态跳到另一个状态。比如,在现实生活中的一个城堡里进行搜索时,你不能从一个房间直接跳到另一个房间。要想到另一个房间,你得先经过走廊和一些其他的房间。而在计算机领域中,一些数据结构(比如图和链表)也会做一些类似的限制。

即使可以在状态中自由跳转时,你也可以把倒退这个操作想象成是在你之前走过的路上去寻找新的没有走过的状态。在算法世界中,退回之前的状态比在现实生活中走回之前来的地方要省力得多。但是这两者在本质上是类似的:你退回一步,然后选一条新的路继续搜索下去。

在接下来的讲座中,我们会看到很多搜索算法遇到死路时倒退的例子。而一旦你正式成为了一名警察,你在工作中会遇到的死路将比你想象的要多得多。