在优先级队列分支限界法法中,何时为出接口,也就是while循环何时退出了?
解空间为[0,1,2…,n-1],当depth = n-1时,就可以记录结果了,可以考虑循环体退出了(实际上能不能出,还要看他的权够不够大,不够大的话,还是要老老实实的去选择优先级高的分支),换句话来说,一旦有一个一个叶子节点弹出了,循环体就结束了
然后就是最优解和最优解方案的追踪
一般来说有两种方案:
在每个活结点(就是要存入优先级队列的数据)中保存从root到当前结点的路径path,也就是一个数组,这个数组可以是一个等长的,前面保存的是走过的路径,后面是还未走过的路径,所以一旦得到弹出的叶节点,我们就可以从中得到path,注意这个结点结构里没有保存他的前驱结点的指针
另外一种实现方案:就是完全把解空间看出一个空间树,树的结点该有的信息,都保存下来,比如权重,用于结点优先级排序,当前的选择,就是当前你是选择了那个分支或者叫做结点,最重要的是它的前驱结点是谁,不管是什么树,他的前驱结点只有一个,我们得到了叶子结点,就可以从叶子追溯到root,实际上上述就是在***构造部分解空间树***