目录

第十二章.数据结构及算法应用

第一节.分治法

第二节.回溯法

第三节.贪心法

第四节.动态规划法

第五节.哈夫曼编码


第十二章.数据结构及算法应用

第一节.分治法

其基本思想是把一个比较大的、复杂的问题,拆分成一些比较小的子问题,如快速排序算法

基本原则

1.该问题的规模缩小到一定的程度就可以容易地解决

2.该问题可以分解为若干个规模较小的相同问题

3.利用该问题分解出的子问题的解可以合并为该问题的解

4.该问题所分解出的各个子问题是相互独立的

分治法——递归技术

递归,就是在运行的过程中调用自己

图注:该算法的目的是求这样一个数列,由零开始的,每一个数都等于前面两个数之和的数列,该算法操作即:将F(3)转换为F(1)和F(2)之和,F(4)转换为F(2)和F(3)之和.....这样可以使所有的F(n)都能化为F(1)和F(0)的和

分治法——二分法查找

第二节.回溯法

基本原则

概念:回溯法是一种选优搜索法,按选优条件向前搜索,以达成目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新进行选择。这种走不通就退回一步再继续往下走的技术就是回溯法

第三节.贪心法

基本原则

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

经典实例——背包问题

图注:有三个物品(每种物品仅存一个),其容量分别为:20,30,40;其价格分别为:140,180,200;而背包可容纳的总量为70,我们希望背包中能容纳尽可能多的物品,其容纳的物品价值最高,而贪心法则会根据单位容量价值最高的原则优先将这个物品进行容纳,如物品1的每10个容量其价值为70,物品2则为60,物品3则为50;因此,若采用贪心法,其将会优先放入物品1到背包中,然后放入物品2,此时空间只剩下20,无法装下物品3,因此,方案到此结束,采用该方法得到了总价320的物品,但这显然不是最优解,我们将物品3和物品1装入背包,得到的物品总价值为340

第四节.动态规划法

基本原则

1.概念:在求解问题时,对于每一步决策,列出各种可能的局部解,再根据某种判定条件,舍弃那些肯定不能得到最优解的局部解,在每一步都经过筛选,以每一步都是最优解来保证全局是最优解,在动态规划法中,基本上都要用到查表这一步骤

第五节.哈夫曼编码

1.概念:哈夫曼编码的思想是,在传输信息时,将频率高的数据用较少的二进制进行表示,将频率低的数据用较多的二进制进行表示

2.具体实现:首先我们必须知道每个字母或符号出现的频率。然后将其频率由小到大进行排序,然后我们将构造一棵二叉树,总体思路是从底向上进行构建,构造的规则是:将最小的两个结点作为底结点,并计算出二者的和,将和作为一个权代替两个结点并重新进行排序,在排序后的结点组合中挑选出最小的两个,若这两个结点中包含了之前已经构建的结点,则在此基础上进行并行构建,若不包含,则另外构建一棵二叉树,一直重复进行该操作,需要特别注意的是若两个结点求和后的权值和与某一未构建的结点值相等,则在排序时将求和权值置于该重复结点之后,直至所有结点用完

例如:

这样的几个字符,其构造的二叉树为:

因此:a的哈夫曼编码为:0;b为:100;e为101;d为110;c为111

2.文档的压缩比计算:将利用哈夫曼编码得到的字符的二进制数中占据位数最大的提取出来令其为a,然后以位的个数数为乘数,每个字符的二进制数所占位数乘以其概率再依次相加令其为b,其文档的压缩比就是:(a-b)/a

数据结构与算法应用(软件设计师备考笔记)相关推荐

  1. 软件设计师备考笔记(一)软考概述

    目录 考试的历史 培训课程安排计划 推荐参考书籍 策略:先建体系,后整理知识点 幸福曲线 考试大纲 考试形式 学习方法: 历史 从日本引进的考试:以前叫高级程序员考试,IT领域细化后分为了软件设计师: ...

  2. 软件工程概述(软件设计师备考笔记)

    目录 第九章.软件开发模型(重点) 第一节.瀑布模型 第二节.原型.演化模型.增量模型(解决用户需求分析困难) 第三节.螺旋模型(强调风险分析) 第四节.V模型(强调测试) 第五节.喷泉模型与RAD( ...

  3. 软件设计师备考笔记(炸薯条的视频)

    视频还没看完(软件工程上下.算法.试题四),排版还没拍好,2022上半年考试凉了,下半年又凉了.哎,明年再战吧 目录 计算机网络对用户"透明"是什么意思? RISC与CISC 流水 ...

  4. 软件设计师备考笔记(四) 数据库系统(重点)

    目录 数据库模式 ER模型 关系代数于元组演算 依赖关系 规范化理论 并发控制 数据库完整性约束 分布式数据库 数据仓库与数据挖掘 考法 规范化理论和关系代数必考上午题目 分布式和数据仓库等下午可能出 ...

  5. 数据库系统(软件设计师备考笔记)

    目录 第三章.数据库系统(重点) 第一节.数据库概述 第二节.数据库系统--三级模式-两级映射 第三节.数据库设计过程 第四节.ER模型 第五节.关系代数(必考) 第六节.规范化理论--函数依赖 第七 ...

  6. 软件设计师备考笔记(十)软件工程(开发模型、结构化设计、软件测试)

    目录 软件开发模型 信息系统开发方法 需求分类 结构化设计 软件测试 软件开发模型 瀑布模型 历史 盛极一时,但被淘汰:有重大缺陷,会导致项目失败(延期.超支.做不下去) 注意事项:每个阶段(绿框)末 ...

  7. 软件设计师备考笔记(二)计算机组成与体系结构

    目录 总概 数据的表示 计算机结构 Flynn分类法 CISC和RISC 流水线技术 系统存储 总线系统 可靠性 校验码 总概(题型.考点) 分值:6分左右,占比高 各题型考点及需要的掌握程度 数据表 ...

  8. 软件设计师备考笔记(五)计算机网络

    目录 七层模型 常见协议 计算机网络的分类 网络规划与设计 IP地址与子网划分 HTML常见标签 网络接入技术 IPv6 信息安全 网络安全–防火墙 七层模型 历史于发展 计算机网络就是构建在七层模型 ...

  9. 软件设计师备考笔记(十六)UML建模及习题

    概述 必考一题:但是UML图比较多:所以难度高一些: 知识面要求比较广: 一般考 用例图.类图: 再加上其他图 目录 用例图 类图与对象图 顺序图 活动图 状态图 通信图 构件图 用例图 两种考法 题 ...

最新文章

  1. mysql 5.7 full_MySQL5.7默认打开ONLY_FULL_GROUP_BY 解决方案
  2. 2022年,我该用JAX吗?GitHub 1.6万星,这个年轻的工具并不完美
  3. 蓝桥杯: 基础练习 数列排序
  4. VINS-Mono关键知识点总结——预积分和后端优化IMU部分
  5. log4j源码阅读(一)之Logger
  6. 借攻防演习提升企业安全能力
  7. Asp.net MVC 4 Attributes特性
  8. 网易云音乐歌词下载器
  9. aix显示服务器ip,AIX系统查看和设置网关和IP配置
  10. jedate选择一年范围日期插件
  11. php拖动滑块验证原理,原生js实现拖动滑块验证
  12. Looksery Cup 2015 A. Face Detection
  13. 杭电计算机考研比率,杭州电子科技大学考研的难度大吗
  14. 工行银企互联接入详解(1)--流程说明
  15. electron开发客户端注意事项(兼开源个人知识管理工具“想学吗”)
  16. 洛谷P1427 小鱼的数字游戏
  17. WebRTC 拥塞控制 | Trendline 滤波器
  18. Linux复制一个或多个文件到另一个目录下
  19. 服务器客户端证书,客户端如何验证HTTPS服务端证书信息
  20. 计算机主板会自动切断电源是怎么回事,告诉你电脑自动断电怎么办

热门文章

  1. 麒麟980/麒麟970/麒麟960处理器有什么区别?Kirin980/Kirin970/Kirin960参数对比
  2. 【第八篇】MySQL数据库视图详解
  3. 黎明杀机因为计算机丢失,黎明杀机丢失存档怎么办 黎明杀机丢失存档解决办法介绍-游侠网...
  4. Python Django POST Forbidden (403) - CSRF cooki...
  5. Java支付宝沙箱环境支付,SDK接口远程调试【内网穿透】
  6. 目标检测——day45 Deep Affinity Network for Multiple Object Tracking
  7. mac显示隐藏文件夹与显示及hosts文件修改
  8. 徕卡LGO输入第三方天线参数具体操作步骤
  9. mac桌面文件删除怎么恢复?别急,有办法!
  10. 华为设备大型园区出口配置