推迟递归

    在求解过程中,为了满足前提条件,可能要进行多层的递归,为了避免不必要的递归调用,在递归调用之前,应当明确需要该前提条件的操作是否正确。解决的途径是在进入细节问题之前,首先对整个问题的解进行规划,方法是暂时先不考虑前提条件。

    在旅行问题中,解决第一个操作“乘飞机”的前提条件就进行了两次递归如图2-23(a)所示。新的方法如图2-23(b)所示,先在一个层次上进行规划,规划成功后,未解决的间隔再由下一个层次解决.在填充第二层次的间隔时,也没有必要注意前提条件,前提条件由第三个层次解决.

    在旅行问题的例子中,由于每个操作都是有用的、正确的,因此分层次的方案并不显示出优越性。但是,在有些操作最后证明不正确时,分层次的方案就避免了解决前提条件时的浪费。

返回