使用队列式分支限界法求解装载问题时,每次从队列Q中取出队首元素作为当前扩展结点。取队首元素后,判断当前Q是否为空。如Q非空,则将尾部标记-1加入Q,算法开始处理下一层的活结点。
举一反三
- 已知带头结点的链队列指针Q,则该非空队列取队头元素操作的语句是(
- 中国大学MOOC: 已知带头结点的链队列指针Q,则该非空队列取队头元素操作的语句是( )
- 在队列式分支限界法中, 叶子结点不加入队列。而在优先队列式分支限界法中,叶子结点通常要加入到优先队列中。有下列2个解释:(1) 队列式分支限界法,活结点在队列中的顺序是按照搜索解空间树时扩展出该结点的先后顺序存放,每次从队首取出一个活结点成为新的扩展结点。扩展结点扩展出的儿子结点是叶子结点时,会将该叶子结点的值同当前最优值比较,检查更新最优值,叶子结点并不进入队列,等队列为空时,搜索结束,记录的当前最优值就是问题最优值。(2) 优先队列式分支限界法中, 当优先级的定义是限界函数时,扩展出的叶子结点进入队列, 这种做法主要是为了让搜索过程提前结束。也就是当从优先队列中取出一个活结点是叶子结点时,意味着现在优先队列中剩余的所有活结点其优先级都不大于该叶子结点的优先级,叶子结点的优先级等于最优值,算法结束,无论优先队列是否为空。根据其正确与否,给出答案 A: (1)正确, (2)错误 B: (1)正确, (2)正确 C: (1)错误, (2)错误 D: (1)错误, (2)正确
- 设栈s和队列q均为空,先将a,b,c,d依次进队列q,再将队列q中顺次出队的元素进栈s,直至队空。再将栈s中的元素逐个出栈,并将出栈元素顺次进队列q,则队列q的状态是
- FIFO分支限界法搜索可行解的过程包括以下步骤 A: 先进先出搜索算法要依赖队列做基本的数据结构。一开始,根结点是唯一的活结点,根结点入队列。从活结点队列中取出根结点后,作为当前扩展结点。 B: 对当前扩展结点,先从左到右地产生它的所有儿子,用约束条件检查,把所有满足约束函数的儿子加入活结点队列中。 C: 再从活结点表中取出队列的首结点(队列中最先进来的结点)为当前扩展结点,直到找到一个解或活结点队列为空为止。 D: 从当前扩展结点开始,进行深度优先搜索。