分支限界算法的策略
当一个节点成为当前扩展节点时:
首先列出它的全部孩子节点
然后使用剪枝函数,剪去那些无法达到最终状态或最优解的孩子节点,将其余孩子节点加到活结点列表中,并且使用限界函数对它们进行排序
选择第一个活结点,使之成为新的扩展节点
分支限界算法和回溯算法的区别
分支限界算法以广度优先或最小耗费优先的方式,在解空间中搜索满足约束条件的一个解,并且该解满足限界函数的极值
回溯算法以深度优先的方式,在解空间上,搜索满足约束条件的所有解
在下面的图 G 中,每条边都有一个非负权值,要求求出从源顶点 S 到目标顶点 T 的最短路径:
Python 实现:
Python 实现: