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

算法导论笔记5:贪心算法

P216 第15章动态规划 最优子结构 具有它可能意味着适合应用贪心策略

动态规划(Dynamic Programming)算法的核心思想是:将大问题划分为小问题进行解决,从而一步步获取最优解的处理算法。

剪切-粘贴技术证明 每个子问题的解就是它本身的最优解(利用反证法)

保持子问题空间尽可能简单

P217 在第16章介绍贪心算法,它与动态规划有很多相似之处,最大的不同在于贪心算法不是首先寻找子问题的最优解,然后在其中进行选择,而是首先做出一次贪心选择得到当时(局部)最优解,然后求解选出的子问题——(感觉这点也可以用于生活琐事,是不是最优选择先做了再说,当然也有一定的基础证明这么做结果不会太差)

P218 两个最长简单路径子问题是相关的,两个最短路径子问题是无关的(什么是无关:无关是同一个原问题的一个子问题的解不影响另一个子问题的解)

重叠子问题 适合动态规划方法求解的最优化问题应该具备的第二个性质是子问题空间必须是足够小,即问题的递归算法会反复求解的相通的子问题(这就是重叠子问题),而不是一直生成新的子问题。

P219 15.1节 钢条切割问题的递归算法是如何通过指数次的递归调用来求解小的子问题。动态规划算法讲运行时间从递归算法的指数阶降为平方阶。

P222 最长公共子序列(LCS) 举例:用于比较两个DNA串的相似度

定理15.1 LCS的最优子结构

步骤1:刻画最长公共子序列的特征;

步骤2:一个递归解;

步骤3:计算LCS长度;

步骤4:构造LCS

P226 LCS_LENGTH 的空间需求是可以逐渐减小的

应用案例:设计程序实现语言之间翻译,用最优二叉搜索树(optimal binary search tree,求解它与矩阵乘法相似),提高搜索效率,让频繁出现的单词靠近跟,冷门的词汇远离根。

P237 第16章 贪心算法greedy algorithm,这章有拟阵(matroid)的概念,从贪心算法中衍生出来的

P238 用举办活动的选择问题来解释贪心算法

P242 贪心选择的性质,贪心算法通常是自顶向下的

贪心算法和动态规划算法,二者间有细微差别。

研究一个经典最优化问题的两个变形:0-1背包问题,分数背包问题

0-1背包问题:小偷偷商品,对于任何一个商品要么完整拿走,要么留下,不能只拿一部分或一个商品反复拿

分数背包问题:具备贪心选择性质

引申检索:贪心算法有什么应用

1 关于视频传输领域,查找到一个专利:一种基于贪心算法的全景视频传输方法

针对的是全景视频:对接收到的全景视频进行片段划分,得到若干视频片段;对每个所述视频片段进行块划分,得到与每个所述视频片段对应的基本块集;根据预设的贪心合并分块算法对每个所述基本块集进行处理,得到对应的目标分块集;根据所述目标分块集对所述全景视频进行视频传输。

2 关于视频拼接领域,查找到一个算法题:

获得一系列视频片段,这些片段来自于一项持续时长为 T 秒的体育赛事。这些片段可能有所重叠,也可能长度不一。视频片段 clips[i] 都用区间进行表示:开始于 clips[i][0] 并于 clips[i][1] 结束。我们甚至可以对这些片段自由地再剪辑,并将剪辑后的内容拼接成覆盖整个运动过程的片段([0, T])。返回所需片段的最小数目。
在这里插入图片描述

相关文章:

  • 【Unity】简单案例脚本实现 | 鼠标观察/键盘控制移动飞行/行走/碰撞检测
  • ZZ308 物联网应用与服务赛题第H套
  • 【Git企业开发】第六节.配置 Git和标签管理
  • 【ES专题】ElasticSearch功能详解与原理剖析
  • 灰度与二值化
  • android studio离线tips
  • 【机试题】编写一个Java函数,实现批量获取数据的功能
  • uniapp 本身就是一个坑,里面还有无数的小坑
  • odoo16前端框架源码阅读——启动、菜单、动作
  • 【Delphi】 各个平台使用 ntfy 效果说明
  • laravel8-rabbitmq消息队列-实时监听跨服务器消息
  • 使用venv 创建虚拟环境
  • 如何安装Node.js? 创建Vue脚手架
  • 【Springboot】基于注解式开发Springboot-Vue3整合Mybatis-plus实现分页查询(二)——前端el-pagination实现
  • 深度学习_11_softmax_图片识别代码原理解析
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 【React系列】如何构建React应用程序
  • 0基础学习移动端适配
  • AngularJS指令开发(1)——参数详解
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Git 使用集
  • MySQL QA
  • scala基础语法(二)
  • 从输入URL到页面加载发生了什么
  • 分布式事物理论与实践
  • 工程优化暨babel升级小记
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 离散点最小(凸)包围边界查找
  • 如何选择开源的机器学习框架?
  • 思否第一天
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 扩展资源服务器解决oauth2 性能瓶颈
  • (20050108)又读《平凡的世界》
  • (26)4.7 字符函数和字符串函数
  • (二)丶RabbitMQ的六大核心
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (三)docker:Dockerfile构建容器运行jar包
  • (译)计算距离、方位和更多经纬度之间的点
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .gitignore文件设置了忽略但不生效
  • .net core 控制台应用程序读取配置文件app.config
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .php文件都打不开,打不开php文件怎么办
  • .py文件应该怎样打开?
  • ??在JSP中,java和JavaScript如何交互?
  • @data注解_SpringBoot 使用WebSocket打造在线聊天室(基于注解)
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [AutoSar NVM] 存储架构
  • [HTML]Web前端开发技术30(HTML5、CSS3、JavaScript )JavaScript基础——喵喵画网页
  • [JS设计模式]Prototype Pattern