知识点
分治法
将问题分解为K个规模较小的子问题,子问题互相独立且与原问题形式相同,递归地解决这些子问题,然后将各子问题的解合并得到原问题的解。分解→解决→合并
求解的经典问题:二分法查找,快速排序
回溯法
回溯法事一种选优搜索法,按选优条件向前搜索,以达到目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。这种走不通就退回再走得技术就是回溯法。它是一种深度优先搜索法。搜索→退回
求解的经典问题:迷宫问题
贪心法
总是做出当前来说是最好的选择,而并不从整体上加以考虑。它所做的每步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不必为了寻找最优解而穷尽所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解。选择当前最好的选择
求解的经典问题:背包问题
动态规划法
在求解问题中,对于每一步决策,列出各种可能的局部解,再依赖某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解。动态规划法通常都会使用表或者数组来查询相应值(以空间换时间),问题通常采用分段函数列出。列出每一步的解,从中选出最优解
求解的经典问题:多阶段决策问题,机器负荷分配问题
试题
快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了(61)算法设计策略。可知确定基准元素操作的时间复杂度为Θ (n),则快速排序算法的最好和最坏情况下的时间复杂度为(62)。
(61) A.分治 B.动态规划 C.贪心 D.回溯
(62) A.O(n)和O(nlgn) B.O(n)和O()
C.O(nlgn)和O(nlgn) D.O(nlgn)和O()
【答案】A D
【解析】本题考查快速排序算法。
快速排序算法是应用最为广泛的排序算法之一。其基本思想是将n个元素划分为两个部分:一部分元素值小于某个数;另一部分元素值大于某个数,该数的位置确定:然后进一步划分前面部分和后面部分。根据该叙述,可以知道,这里采用的是分治算法设计策略。
某汽车加工工厂有两条装配线 L1 和 L2,每条装配线的工位数均为 n(Sij,i=1 或 2,j= 1,2,...,n),两条装配线对应的工位完成同样的加工工作,但是所需要的时间可能不同(aij,i=1 或 2,j =1,2,...,n)。汽车底盘开始到进入两条装配线的时间 (e1,e2) 以及装配后到结束的时间(X1X2)也可能不相同。从一个工位加工后流到下一个工位需要迁移时间(tij,i=1 或 2,j =2,...n)。现在要以最快的时间完成一辆汽车的装配,求最优的装配路线。
分析该问题,发现问题具有最优子结构。以 L1 为例,除了第一个工位之外,经过第 j 个工位的最短时间包含了经过 L1 的第 j-1 个工位的最短时间或者经过 L2 的第 j-1 个工位的最短时间,如式(1)。装配后到结束的最短时间包含离开L1的最短时间或者离开L2的最短时间如式(2)。
由于在求解经过 L1 和 L2 的第 j 个工位的最短时间均包含了经过L1 的第 j-1 个工位的最短时间或者经过 L2 的第 j-1 个工位的最短时间,该问题具有重复子问题的性质,故采用迭代方法求解。
该问题采用的算法设计策略是(62),算法的时间复杂度为(63)
以下是一个装配调度实例,其最短的装配时间为(64),装配路线为(65)
(62) A.分治 B.动态规划 C.贪心 D.回溯
(63) A.Θ(lgn) B.Θ(n) C.Θ(n2) D.Θ(nlgn)
(64) A.21 B.23 C.20 D.26
(65) A.S11→S12→S13 B.S11→S22→S13
C.S21→S12→S23 D.S21→S22→S23
【答案】B B A B
【解析】求最优所以式动态规划,不是分治法;那么该算法的复杂度就是B选项O(n)了;后两个空比较最后一个选项中,选出最短的。