算法设计与分析复习(7)
时间:2025-02-23
时间:2025-02-23
5.6 0-1背包问题
解空间:子集树
可行性约束函数:∑w i x i≤C
上界函数:Bound()
掌握Bound函数的思想。
掌握Knapsack回溯算法思想。
计算时间复杂度为为O(n2n)。
5.7 最大团问题
解空间:子集树
可行性约束函数:顶点i到已选入的顶点集中每一个顶点都有边相连。
上界函数:有足够多的可选择顶点使得算法有可能在右子树中找到更大的团。
掌握最大团问题的回溯算法backtrack思想。
计算时间复杂度为为O(n2n)。
5.9 旅行售货员问题
解空间:排列树
上界函数: 是否优于已找到的当前最优回路。
复杂度分析:
算法backtrack在最坏情况下可能需要更新当前最优解O((n-1)!)次,每次更新bestx需计算时间O(n),从而整个算法的计算时间复杂性为O(n!)
第6章分支限界法
6.1 分支限界法的基本思想
分支限界法与回溯法的区别:
(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。
(2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。
分支限界法的搜索策略:
分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。
两种分支限界法:
队列式(FIFO)分支限界法
按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
7/8
下一篇:诗歌鉴赏之9——羁旅诗