算法设计与分析————期末死亡冲刺

活动安排会场问题

  • ①先将活动按照结束时间早到晚进行排序
  • ②安排好的顺序一个一个往后考虑,如果一个活动和前一个活动时间不冲突,就加入方案

分支定界法求解0-1背包

回溯搜索、界限函数加速

画出状态空间树(说明:每个节点包含三个值,当前背包的价值和剩余容量,当前的价值上界)

  • ——先预处理出,每件物品 单位重量的价值,并按照单位重量的价值由大到小排序
  • ——画根节点:价值上界 = 当前包内总价值+剩余物品最大的 单位重量的价值 × 剩余容量
  • ——然后扩展根节点,每次扩展就是选一件物品放入背包
  • ——扩展的策略是:深度优先搜索解空间树,若左儿子可行,搜索进入左子树,否则将左子树剪掉;若右子树包含最优解,才搜索右子树,否则将右子树剪掉。
    (可能包含最优解:当前节点的价值上界 > 当前最终的最优结果 (深搜保证此时最优解一定存在))
  • ——状态空间树中,从根结点到最优解结点路径上的标记排列出来,就是最优解向量

注意:
1.对于一个 ub 不满足要求的点,就不能再往下画了
2.一个节点如果他超重了,也要画出来
3.上面加粗的都是给分点

动态规划求解0-1背包

在这里插入图片描述

贪心求解0-1背包(不一定是最优解)

  • ①先预处理出,每件物品 单位重量的价值
  • ②然后开始装包,单位重量的价值 大的优先放入背包

不是最优解的话需要使用动态规划求出最优解。

算法时间按复杂度分析

n: 输入规模
S(n): 空间复杂度函数
T(n): 时间复杂度函数
C(n): 而是算法基本操作执行的总次数
S: 计算机运行速度(单位时间内执行的指令条数)

综上,有
执行时间 T1 = T(n) / S

输入规模增长m倍后 :执行时间 T2 = T(m × n) / S

故有执行时间增长的倍数: = T2 / T1

计算机速度增长

仍然处理T1的时间,能处理多大的输入规模?
当计算速度增长 m 倍,即 S2 = m × S
有: T1 = T(n2) / S2
得关系式: T(n2) = m × T(n1)
分解关系式得到,输入规模的增长倍数

例题

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
注意C是错的

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
算法正确性:是对任意一个合法的输入经过有限步执行之后算法应给出正确的结果。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
深度优先使用队列实现

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
(2)就是字面意思,基本操作执行了多少次,结果用 【C(n)=n的式子】表示
(3)这就涉及一个知识点了
在这里插入图片描述
结果就写成【Θ(n^2)】 或 【O(n^2)】 或 【Ω(n^2)】这种形式就行
在这里插入图片描述

在这里插入图片描述
(1)注意一下伪代码的格式
在这里插入图片描述
(2)背答案
在这里插入图片描述
(3)分治法求解该问题与蛮力求解法 属于同一时间效率类型。而且蛮力法还不需进行递归调用的相关管理,因此时间性能更好

重要

在这里插入图片描述
重点是(3):效率类型:C(n) = Θ(n)
(4)根据阶乘定义,1~n的每个数都需要相乘,所以算法已是最优。

重要 在这里插入图片描述

主要看答题格式:
在这里插入图片描述

在这里插入图片描述
主要看答题格式:
活动 x1 的开始时间为 t1,(不)小于活动 x2 得结束时间 t2,所以不相容(所以相容,选择加入)
在这里插入图片描述

重要 在这里插入图片描述

①这种就建立一个等式,把问题要求的和已知的关联在一起。
②就是写伪代码。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
动态规划:
在这里插入图片描述
画完表,先写出最优值,即,c(m, n) 的值;然后解释如何构造最优解,最后写出最优解

在这里插入图片描述
两次乘法,计算的时候别忘记 ×2。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值