经典算法策略

知识点

分治法

将问题分解为K个规模较小的子问题,子问题互相独立且与原问题形式相同,递归解决这些子问题,然后将各子问题的解合并得到原问题的解。分解→解决→合并

求解的经典问题:二分法查找,快速排序

回溯法

回溯法事一种选优搜索法,按选优条件向前搜索,以达到目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择。这种走不通就退回再走得技术就是回溯法。它是一种深度优先搜索法搜索→退回

求解的经典问题:迷宫问题

贪心法

总是做出当前来说是最好的选择,而并不从整体上加以考虑。它所做的每步选择只是当前步骤的局部最优选择,但从整体来说不一定是最优的选择。由于它不必为了寻找最优解而穷尽所有可能解,因此其耗费时间少,一般可以快速得到满意的解,但得不到最优解。选择当前最好的选择

求解的经典问题:背包问题

动态规划法

在求解问题中,对于每一步决策,列出各种可能的局部解,再依赖某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解。动态规划法通常都会使用表或者数组来查询相应值(以空间换时间),问题通常采用分段函数列出。列出每一步的解,从中选出最优解

求解的经典问题:多阶段决策问题,机器负荷分配问题

 试题

快速排序算法在排序过程中,在待排序数组中确定一个元素为基准元素,根据基准元素把待排序数组划分成两个部分,前面一部分元素值小于等于基准元素,而后面一部分元素值大于基准元素。然后再分别对前后两个部分进一步进行划分。根据上述描述,快速排序算法采用了(61)算法设计策略。可知确定基准元素操作的时间复杂度为Θ (n),则快速排序算法的最好和最坏情况下的时间复杂度为(62)

(61)        A.分治         B.动态规划         C.贪心         D.回溯

(62)         A.O(n)和O(nlgn)             B.O(n)和O(n^{2})         

               C.O(nlgn)和O(nlgn)        D.O(nlgn)和O(n^{2})

【答案】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)了;后两个空比较最后一个选项中,选出最短的。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值