当前位置: 首页 > news >正文

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

活动安排会场问题

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

分支定界法求解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。

相关文章:

  • 现代软件工程————期末死亡冲刺
  • std::string::npos 常量解析
  • 练习4-3 求给定精度的简单交错序列部分和 (15 分)本题要求编写程序,计算序列部分和 1 - 1/4 + 1/7 - 1/10 + ... 直到最后一项的绝对值不大于给定精度eps。
  • 浙大版《C语言程序设计(第4版)》题目集 练习4-6 猜数字游戏 (15 分)
  • 练习4-7 求e的近似值 (15 分)自然常数 e 可以用级数 1+1/1!+1/2!+⋯+1/n!+⋯ 来近似计算。本题要求对给定的非负整数 n,求该级数的前 n+1 项和。
  • 数组输入输出的方法
  • 习题:贴邮票
  • 习题:遍历搜寻
  • 习题:哥德巴赫猜想
  • 习题:数字拆分
  • 习题:质数统计
  • 商品管理系统超详细讲解
  • HTTP自学笔记
  • 手把手教你写贪吃蛇
  • C语言文件操作笔记
  • Dubbo 整合 Pinpoint 做分布式服务请求跟踪
  • Fastjson的基本使用方法大全
  • Object.assign方法不能实现深复制
  • php面试题 汇集2
  • 分布式任务队列Celery
  • 老板让我十分钟上手nx-admin
  • 码农张的Bug人生 - 初来乍到
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据可视化之 Sankey 桑基图的实现
  • 通过npm或yarn自动生成vue组件
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 用 Swift 编写面向协议的视图
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 在Mac OS X上安装 Ruby运行环境
  • 怎么把视频里的音乐提取出来
  • nb
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • 第二十章:异步和文件I/O.(二十三)
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 我们雇佣了一只大猴子...
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #if 1...#endif
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (附源码)ssm高校实验室 毕业设计 800008
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (四)图像的%2线性拉伸
  • (转) Android中ViewStub组件使用
  • (转)iOS字体
  • (转)Linux整合apache和tomcat构建Web服务器
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • @angular/cli项目构建--http(2)
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BZOJ 2142]礼物(扩展Lucas定理)