试探回溯法的具体内容就不赘述了,谈谈栈结构在其中起到的作用
在书中提到一个神话故事:忒修斯的法宝,这个法宝是进入迷宫时使用的绳子,用于记录从迷宫的起点到当前位置所走过的路径,以防止在迷宫中迷茫,找不到来时的路。而将试探回溯法类比到这个迷宫问题时,这个栈结构起到的就相当于绳子的作用。
考虑栈结构更高效的原因,从不采用栈结构而是其它数据结构来记录走过的路径的效果对比着来看。(注意,这里采用某一数据结构的目的都是为了记录走过的路径)
如果是使用链表结构来记录走过的路径,那么如果当前节点无路可走时,需要回到上一个位置,即需要找到链表中上一个节点所在的地址,将其赋予指向当前节点的指针。那么可知,这个链表结构的节点还需要记录在链表中上一个节点的地址,需要类似双向链表中的节点这样的节点结构,如果当路径很长时,这就会造成空间的浪费,同时操作起来也较为繁琐。但是如果采用栈结构,只需要借助pop和push方法,就能得到走过路径中当前节点的上一个节点的地址和将新节点加入路径中,所以无论是从空间复杂度还是操作的方便程度上来看,栈结构都是这个绳子很好的表示方式。