基本回溯法的算法过程可以分以下几步:
初始化:设置回溯层数l=1,初始化所需的数据结构。
进入新层:检查当前是否已达目标层数n,如果是则访问并输出当前完整解,转入回溯。否则设置l=l+1进入新一层。
选择候选值:从当前层的可选域Dl中选择一个候选值,设为xl。
剪枝检验:检查xl是否满足层间约束条件Pl(x1,...,xl),如果不满足则转步骤5,否则转步骤6。
尝试新候选:如果xl不是Dl的最后一个值,设置xl为Dl的下一个值,回到步骤4;否则转入回溯。
记录解:将xl记录到当前解中,更新数据结构,准备进入下一层,转步骤2。
回溯操作:将层数l设为l-1,返回上一层。将上一层的xl删除,复原相关数据结构。如果l>0,转步骤5以尝试新候选;如果l=0,算法结束。
网友评论