书评《算法导论》

article/2025/10/19 21:09:46

在这里插入图片描述

最近空闲时间在看《算法导论》。由于之前有数据结构与算法的基础,并且也写过几百道代码题。所以现在看这本书反而有了一些更深的感悟。

《算法导论》确实不适合初学者,尤其是不适合实践派。对于实践派,《数据结构与算法分析——C语言描述》、邓俊辉老师的《数据结构》,《算法》红皮书无疑都是很好的上手教程。我读《算法导论》,是把它当作一本数学书来读的,其中很多篇幅关注于算法设计、正确性证明、算法分析。

《算法导论》之于“实践派算法书籍”,就像是《数学分析》之于《高等数学》。初上手的算法书教大家如何去开车,《算法导论》则是教大家如何去造车。

举个例子:

  • 第15章动态规划和第16章贪心算法。
    这本书难能可贵的地方在于把动态规划和贪心算法的问题范式给讲清楚了。也即当问题出现“最优子结构+子问题重叠”时适合用动态规划,当问题出现“最优子结构+贪心选择正确”时适合用贪心算法。其实分治算法也可以包括进来,即“最优子结构+没有子问题重叠”。
    这些原理非常宝贵,在我之前刷题时,更多是靠“智商”去“感觉”这个题适合用动态规划还是贪心算法,这种思维模式很“野”,缺乏正规的一招一式。遇到复杂问题时如果猜不出来用什么算法,则会变得束手无策。我的这个问题在大三的时候,就曾有一个室友指出来过。现在想来,他说的非常对。《算法导论》像是一个正确的老师,把我这种野路子出来的人带到正途上,从而经受正规的思维训练。

  • 第24章单源最短路径。
    这一章采用了定理——证明的方式进行描写,这种写法非常扎实。很多定理(例如这一章提到的“上届性质”和“收敛性质”)直觉上非常正确,会有一种“这明显正确啊,这还用证”的感觉。
    对于学习、使用算法,这些证明确实没什么帮助。但是对于构建严谨的逻辑思维,这些证明都非常有必要。就像是为什么数学分析要证明根号2是无理数一样。有了这些证明,我们可以大胆地使用Dijkstra算法,并说出为什么Dijkstra算法不能带有负边,负边违背了正确性证明中的哪一步,为什么Bellman-Ford算法正确。

  • 第17章摊还分析。
    续上面的第2点。“直觉”帮助我们找到正确结论的方向,“形式化证明”帮助我们验证这些结论。我们不能过度依赖直觉去说明一个算法work与否。例如第17章思考题17-5自组织列表的竞争分析。这个移至前端策略也是分页、缓存中常用的LRU的理论基础。移至前端策略就是和最优策略的代价在数量级上是一样好的(4-competitive)?
    你信吗?你若不信看我用摊还分析给你证明出来。
    它符合直觉吗?这个时候才会发现证明的扎实性。我们不能过度依赖直觉去验证正确与否。一定要严格进行论证。

  • 第5章概率分析和随机算法。
    这一章最大的贡献是把“概率分析”和“随机算法”分清楚了。概率分析是在输入具有分布时的期望分析。随机算法则是在固定输入下算法本身产生随机的操作,目的通常是达到某种期望的时间界。

这本书我没读完,可能也不打算读完,后半部分的有些内容太专了。

但是目前仍然在读,所以会随读随更吧

(批评一下34章的翻译,非常不走心!错误非常多。例如P626习题34.2-8的翻译根本读不懂题目;P627公式(34.1),“∈”写成了“=”;P633引理34.8“对任意”的原文是“for some”,不是“for any”,存在性和任意性不能含糊啊)

2022.6.23
终于看完了。
(正文看完了,题扫了一些)


http://chatgpt.dhexx.cn/article/qkX2xPbO.shtml

相关文章

蓝牙sbc怎么解决_【科普】蓝牙音频常用的编解码格式

蓝牙耳机的参数你是否都了解,那些看起来貌似高大上的技术是如何改变蓝牙音质和传输稳定性的,下面dy君就带你了解主流的几种蓝牙音频编码格式: SBC (Sub-band coding,子带编码) 最早的格式应该是SBC,SBC是A2DP(Advanced Audio DistribuTIon Profile,蓝牙音频传输协议)…

蓝牙音频双剑客(二)--高质量音频分布协议(A2DP) 连接播放音乐断开流程(被连接)介绍

零. 概述 主要介绍下蓝牙协议栈(bluetooth stack)传统蓝牙音频协议之高质量音频分布协议(A2DP) 连接播放音乐断开流程(被连接)介绍 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍…

基于AVDTP信令分析蓝牙音频启动流程

前言 公司项目edifier那边需要在原来音频SBC,AAC基础上增加LHDC5.0编码,在打通lhdc协议栈之前,学习记录一番AVDTP音频服务流程。 一、AVDTP音频流基础知识 分析音频流程首先应具备的最简单基础概念知识:AVDTP信令signal,流端点se…

蓝牙音频广播多连接模块技术方案

蓝牙我们应该都很熟悉,现在的蓝牙应用在生活中随时随地都可以见得到,尤其是蓝牙音频;常见的蓝牙一般都是点对点的,或者就是TWS,一拖二功能,但是有一些使用场景,是需要一拖多的,需要多个音响同步…

当前市场主流蓝牙音频SOC

2020年5月9日更: 目前安卓已经全面支持LDAC了,讨论其他格式的蓝牙音频方案已经没多大意义了。 对于真无线耳机方案来说,也就剩高通和苹果了,开发者可选也就高通了。 这个市场已经归一统了~~~~~~不要看下面的内容浪费时间了。 -…

海贝思蓝牙接收器Linux,Hagibis海备思 蓝牙音频接收 耳机怎么样,评测

Hagibis海备思 蓝牙音频接收 耳机怎么样,评测: 1、很不错,与车子AUX连接电话声音很青楚,物有值 2、还行,免提打电话效果还可以,就是充电线和音频线一起走的那么细一根线,我也是醉了。声音效果一般&#xff…

蓝牙音频编码简介 - SBC、AAC、AptX、LDAC、LHDC

https://zhuanlan.zhihu.com/p/265597723 早在2000年,蓝牙耳机就已经出现,但由于技术限制,只能用于通话。2008年,随着蓝牙A2DP(Advanced Audio Distribution Profile)开始普及,立体声蓝牙耳机日渐流行。发展到现在&am…

蓝牙技术|伦茨科技带你了解蓝牙音频

蓝牙设备在日常生活中随处可见,用蓝牙耳机或音箱听音乐已经成为蓝牙最主流的应用之一。这些都用到我们的蓝牙音频技术。 蓝牙音频协议HFP,HSP,A2DP,AVRCP,OPP,PBAP HFP HFP(Hands-free Profile)&#xf…

蓝牙基础:蓝牙音频

前言 蓝牙耳机中存在两种 通话音频 和 音乐音频两种音频。 1 通话音频 1.1 音频链路 通话中的音频数据(Audio)直接通过基带上的SCO链路进行传输 音频通路(1) Audio-》Voice-》SCO/eSCO-》HCI-》Baseband(2) Audio-》Voice-》PCM-》Baseband这两种方…

ZYNQ平台Linux4.6内核蓝牙音频

第1章 RTL8723BU蓝牙模块驱动移植 1.1. 硬件方案 1.2. 蓝牙驱动移植 1.3. 蓝牙耳机规格要求 第2章 Linux音频框架 2.1. ALSA 2.2. Pulseaudio 2.3. GStreamer 2.4. Jack 2.5. FFADO 2.6. Xine 2.7. Phonon 2.8. 其他分支 第3章 蓝牙协议栈Bluez 3.1…

蓝牙的音频通路

如上图: 音频通路1:Audio->L2CAP->ACL->HCI->Baseband,a2dp音频走这种方式; 音频通路2:Audio->Voice->SCO/eSCO->HCI->Baseband,hfp、hsp蓝牙通话走这种方式; 音频通路…

蓝牙音频编码协议

文章目录 一、人耳需要什么样的采样率二、采样率分类三、蓝牙音频编码协议分类 一、人耳需要什么样的采样率 人耳对声音的分辨率是在20Hz~~~~20KHz的范围。 二、采样率分类 常见的蓝牙音频采样率: 44.1KHz48.0KHz88.2Khz96Khz 三、蓝牙音频编码协议分类 SBC 全…

蓝牙音频那些事

蓝牙音频那些事TOC 现在随着智能手机的发展,全面屏的发展,3.5mm耳机孔逐渐变成奢侈的配件,为此逐渐出现了蓝牙耳机,而且这玩意变得越来越多,真有点“忽如一夜春风来,千树万树梨花开”的味道。 蓝牙音频包…

车载蓝牙音频系统测试

1、介绍 随着汽车影音娱乐信息技术的发展,车载音频系统的需求趋势越来越明显。因此,针对汽车音频娱乐系统的新兴技术,对应的测试需求也在不断提升。本文将针对汽车车机的蓝牙音频系统和车机A2B总线系统,做出相应的应用测试介绍。…

一文读懂蓝牙音频

一、蓝牙简介 蓝牙是一种无线通讯技术标准,用来让设备之间在短距离内交换资料,最早由瑞典的爱立信公司在 1994 年发布。提出蓝牙标准的目的很简单,就是简化电子设备之间的数据交互过程。那个时候手机刚刚开始流行,用手机跟耳机或电…

# 蓝牙音频相关知识

蓝牙音频相关知识 文章目录 蓝牙音频相关知识1 音频源2 蓝牙音频编解码器3 一些标准4 蓝牙音频其他相关知识4.1 蓝牙版本4.2 ANC(主动降噪)4.3 音响相关参数4.4 音质评价4.5 HI-Fi声音特点4.6 耳机线材4.7 耳机分类4.8 IP防尘防水等级4.9 噪音与量化噪音…

一篇深入读懂蓝牙音频!

一、蓝牙简介 蓝牙是一种无线通讯技术标准,用来让设备之间在短距离内交换资料,最早由瑞典的爱立信公司在 1994 年发布。提出蓝牙标准的目的很简单,就是简化电子设备之间的数据交互过程。那个时候手机刚刚开始流行,用手机跟耳机或…

system.ArgumentException:DataGridViewComboBoxCell值无效

原因是初始化的时候给ComboboxCell绑定了一系列的值,但是真正赋值的时候却给了一个不在那一系列值范围中的值,所以就报了这个错 在开发的时候难免会因为数据的问题出现这个问题,为了不让系统崩掉,就要处理这个错误信息 但是怎么…

“System.ArgumentException”类型的未经处理的异常在 mscorlib.dll 中发生

报错图示: 项目描述: 公司项目,买的个性化框架,从SVN拉取之后,在VS中重新生成了下解决方案(补全缺少的文件),运行就报这个错误了。 错误原因: 开始怀疑app.config里面…

VRTK4.0报错ArgumentException: Input Axis Tilia.Input.UnityInputManager_Axis1 is not setup.

VRTK4.0使用Input.UnityInputManager.OpenVR.LeftController预制体运行报错 ArgumentException: Input Axis Tilia.Input.UnityInputManager_Axis1 is not setu To change the input settings use: Edit -> Settings -> Input 这是因为inputManger里面的Axes不对&#x…