《图解算法》第11章之 接下来如何做
目录
树
反向索引
傅里叶变换
线性规划
树
在二叉查找树中查找节点时,平均运行时间为
O(log n),但在最糟的情况下所需时间为O(n);而在有序数组中查找时,即便是在最糟情况下所
需的时间也只有O(log n),因此你可能认为有序数组比二叉查找树更佳。然而,二叉查找树的插
入和删除操作的速度要快得多。
二叉查找树也存在一些缺点,例如,不能随机访问,就像不能这么说:“给我第五个元素。”
在二叉查找树处于平衡状态时,平均访问时间也为O(log n)。假设二叉查找树像下面这样处于不
平衡状态。
注意,这棵树是向右倾斜的,因此性能不佳。也有一些处于平衡状态的特殊二叉查找树,如红黑树。
反向索引
傅里叶变换
绝妙、优雅且应用广泛的算法少之又少,傅里叶变换算是一个。
如果看了此文你还不懂傅里叶变换,那就过来
Better Explained(https://betterexplained.com/)是一个杰出的网站,致力于以通俗易懂的语言阐释数学,它就傅里叶变换做了一个绝佳的比喻:给它一杯冰沙,它能告诉你其中包含哪些成分①。换言之,给定一首歌曲,傅里叶变换能够将其中的各种频率分离出来。
这种理念虽然简单,应用却极其广泛。例如,如果能够将歌曲分解为不同的频率,就可强化
你关心的部分,如强化低音并隐藏高音。傅里叶变换非常适合用于处理信号,可使用它来压缩音
乐。为此,首先需要将音频文件分解为音符。傅里叶变换能够准确地指出各个音符对整个歌曲的
贡献,让你能够将不重要的音符删除。这就是MP3格式的工作原理!
数字信号并非只有音乐一种类型。 JPG也是一种压缩格式,也采用了刚才说的工作原理。
线性规划
最好的东西留到最后介绍。线性规划是我知道的最酷的算法之一。
线性规划用于在给定约束条件下最大限度地改善指定的指标。例如,假设你所在的公司生产
两种产品:衬衫和手提袋。衬衫每件利润2美元,需要消耗1米布料和5粒扣子;手提袋每个利润3
美元,需要消耗2米布料和2粒扣子。你有11米布料和20粒扣子,为最大限度地提高利润,该生产
多少件衬衫、多少个手提袋呢?
在这个例子中,目标是利润最大化,而约束条件是拥有的原材料数量。
再举一个例子。你是个政客,要尽可能多地获得支持票。你经过研究发现,平均而言,对于
每张支持票,在旧金山需要付出1小时的劳动(宣传、研究等)和2美元的开销,而在芝加哥需要
付出1.5小时的劳动和1美元的开销。在旧金山和芝加哥,你至少需要分别获得500和300张支持票。
你有50天的时间,总预算为1500美元。请问你最多可从这两个地方获得多少支持票?
这里的目标是支持票数最大化,而约束条件是时间和预算。
你可能在想,本书花了很大的篇幅讨论最优化,这与线性规划有何关系?所有的图算法都可
使用线性规划来实现。线性规划是一个宽泛得多的框架,图问题只是其中的一个子集。但愿你听
到这一点后心潮澎湃!
《图解算法》第11章之 接下来如何做相关推荐
- 【Code Pratice】—— 《图解算法数据结构 ~ 第一章》
简述 本文主要记录了学习<图解算法数据结构>一书中"数据结构"章节所做练习题的笔记,记录其中的思路以及碰到的问题等.因为学习的这本书是在leetcode上的,但是感觉l ...
- 机器学习实战---读书笔记: 第11章 使用Apriori算法进行关联分析---2---从频繁项集中挖掘关联规则
#!/usr/bin/env python # encoding: utf-8''' <<机器学习实战>> 读书笔记 第11章 使用Apriori算法进行关联分析---从频繁项 ...
- C++ Primer 第11章 泛型算法 学习总结
文章目录 11.2 算法 11.2.1 只读算法 **1.find函数** **2.accumulate函数** **3.find_first_of 函数** 11.2.2 写容器元素算法 1.fil ...
- 第 11 章 树结构实际应用
第 11 章 树结构实际应用 1.堆排序 1.1.堆排序基本介绍 堆排序是利用堆这种数据结构而设计的一种排序算法, 堆排序是一种选择排序, 它的最坏, 最好, 平均时间复杂度均为 O(nlogn), ...
- 【控制】《多智能体系统的协同群集运动控制》陈杰老师-第11章-基于邻居相关状态的多智能体非合作行为检测与隔离
第10章 回到目录 无 代码地址:https://github.com/Jichao-Zhao/MAS_CooperativeClusterMotionControl 第11章-基于邻居相关状态的多智 ...
- 【控制】《多无人机协同控制技术》周伟老师-第11章-多无人机协同航迹规划方法
第10章 回到目录 第12章 第11章-多无人机协同航迹规划方法 11.1 航迹规划常用算法 11.2 改进动态规划算法的航迹规划 11.2.1 路径节点生成 11.2.2 最短路径生成 11.2.3 ...
- 《面向对象程序设计》第11章在线测试
<面向对象程序设计>第11章在线测试 <面向对象程序设计>第11章在线测试 剩余时间: 59:56 答题须知:1.本卷满分20分. 2.答完题后,请一 ...
- 复现经典:《统计学习方法》第 11 章 条件随机场
本文是李航老师的<统计学习方法>[1]一书的代码复现. 作者:黄海广[2] 备注:代码都可以在github[3]中下载. 我将陆续将代码发布在公众号"机器学习初学者", ...
- 斗地主AI算法——第四章の权值定义
第一章业务逻辑结尾部分我提到了权值的计算方法: ①每个单牌都有一个基础价值②组合牌型的整体价值与这个基础价值有关,但显然计算规则不完全一样.③整手牌可以分成若干个组合牌,但分法不唯一. 当时,我说了① ...
- MySQL性能调优与架构设计——第11章 常用存储引擎优化
第11章 常用存储引擎优化 前言: MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种选择固然是好事,但是需要我们理解掌握的知识也会增加很多.每一种存储引擎都有各自的特长,也都存在一定的短处. ...
最新文章
- java异常处理机制详解
- RGBA和ARGB的区别
- WD1600AAJS AAKS 固件 数据恢复
- 从零入门 Serverless | 架构的演进
- Ruby on Rails 通过代理远程安装
- sql查询结果集根据指定条件排序的方法
- 琥珀ai_琥珀项目:Java的未来暴露
- java界面编辑教程_java程序设计基础教程第六章图形用户界面编辑.docx
- ActionScript 3.0 API 中的 Video 类
- 关于 Object.prototype.toString.call() 方法
- mysqldump+系统计划任务定时备份MySql数据
- 入门SpringBoot集成常用框架以及常见处理方式(括宽知识面)
- 计算机电子电路原理图,简单电路图入门-电路原理图入门知识图解
- win7计算机窗口无法最小化,Windows7系统任务栏不显示最小化窗口的解决方法
- apt-get autoremove remove 新手收割者
- 单页面网站优化技巧有哪些?
- 北大先修课 计算机,北大先修课
- 友情链接SEO工具检测不出来
- 阿里巴巴的业务范畴/文化和价值观
- google浏览器字体模糊问题(类似分辨率问题)解决办法
热门文章
- html用于信息展示的表格源码,Html表格
- c++类之间的基本关系
- android app入口函数,Android App程序运行过程 ActivityThread.main()------详解系列(一)...
- oracle压缩子分压,混合列压缩(HCC)在OLAP及OLTP场景中的测试
- java实现续打功能_银行存折套打续打功能 -- 报表如何记录上次打印的位置
- 微型计算机中硬盘工作时 应注意避免,1硬盘工作时应特别注意避免(B)
- Codeforces 437D The Child and Zoo(贪心+并查集)
- ColorBlinder(我是色盲)
- 电大与152双向数据同步的方案
- List集合操作二:排序