《算法设计与分析》第07章限界剪枝法第07章限界剪枝法基本思想限界剪枝法与回溯法相似,也是对状态空间树进行搜索求解,不同的是限界剪枝法的求解目标是要找到使得某一目标函数极大或极小的一个解结点,即某种意义下的最优解
在算法设计上,限界剪枝法不仅通过约束条件来控制搜索路径,还通过目标函数的限界来减少搜索规模;限界剪枝法在搜索时,通常先进行广度扩展,将满足约束条件且不越过目标函数的子结点加入到活结点表中等待搜索;常见的活结点表有队列式(FIFO)、栈式(LIFO)和优先队列式(PQ);第07章限界剪枝法限界剪枝法最小耗费搜索法求解以定义在状态空间树T的解结点集A上的耗费函数为目标函数的最优问题,即求解A中耗费最小的解结点
设A中的结点x所需的耗费为D(x),在T上构造耗费函数:C(x)=min{D(y)|y∈Tx∩A}Tx∩A≠{}C(x)=∞Tx∩A={}Tx表示以x为根的子树;易见,子结点的耗费函数值不小于父结点的耗费函数;理想情况下,以耗费值作为优先级建立优先队列,按优先顺序扩展搜索,就可以很快找到具有最小求解耗费的解结点;然而在实际情况中,通常是求解过程中才能得到求解的耗费,因此可以采用一个耗费的估计值~C(x)作为C(x)的近似解;第07章限界剪枝法限界剪枝法最小耗费搜索法最小耗费搜索法的算法描述设T为状态空间树的根结点;~C(x)为耗费估计函数;初始化优先队列Q;计算~C(T),并将T入队;循环,直到队列Q空(无解):结点e出队;若e是回答结点,则输出解或求解路径,求解结束;否则检查e的所有子结点x:若x满足约束条件,则计算~C(x),并将x入队;记录搜索路径;当~C(x)满足:~C(x)≤C(x),C(x)单调,解结点的~C(x)=C(x)时,上述算法可以正确找到C(x)的最小耗费解;第07章限界剪枝法限界剪枝法最小耗费