Files
hello-algo/docs/chapter_introduction/summary.md
Yudong Jin 350f483801 docs: explain why learning algorithms still matters with AI agents (#1977)
Add the AI agents and algorithm learning Q&A to all five language editions.

Related to #1928.
2026-10-11 05:15:17 +08:00

33 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 小结
### 重点回顾
- 算法在日常生活中无处不在,并不是遥不可及的高深知识。实际上,我们已经在不知不觉中学会了许多算法,用以解决生活中的大小问题。
- 查字典的原理与二分查找算法相一致。二分查找算法体现了分而治之的重要算法思想。
- 整理扑克的过程与插入排序算法非常类似。插入排序算法适合排序小型数据集。
- 货币找零的步骤本质上是贪心算法,每一步都采取当前看来最好的选择。
- 算法是在有限时间内解决特定问题的一组指令或操作步骤,而数据结构是计算机中组织和存储数据的方式。
- 数据结构与算法紧密相连。数据结构是算法的基石,而算法为数据结构注入生命力。
- 我们可以将数据结构与算法类比为拼装积木,积木代表数据,积木的形状和连接方式等代表数据结构,拼装积木的步骤则对应算法。
### Q & A
**Q**:作为一名程序员,我在日常工作中从未用算法解决过问题,常用算法都被编程语言封装好了,直接用就可以了;这是否意味着我们工作中的问题还没有到达需要算法的程度?
如果把具体的工作技能比作是武功的“招式”的话,那么基础科目应该更像是“内功”。
我认为学算法(以及其他基础科目)的意义不是在于在工作中从零实现它,而是基于学到的知识,在解决问题时能够作出专业的反应和判断,从而提升工作的整体质量。举一个简单例子,每种编程语言都内置了排序函数:
- 如果我们没有学过数据结构与算法,那么给定任何数据,我们可能都塞给这个排序函数去做了。运行顺畅、性能不错,看上去并没有什么问题。
- 但如果学过算法,我们就会知道内置排序函数的时间复杂度是 $O(n \log n)$ ;而如果给定的数据是固定位数的整数(例如学号),那么我们就可以用效率更高的“基数排序”来做,将时间复杂度降为 $O(nk)$ ,其中 $k$ 为位数。当数据体量很大时,节省出来的运行时间就能创造较大价值(成本降低、体验变好等)。
在工程领域中,大量问题是难以达到最优解的,许多问题只是被“差不多”地解决了。问题的难易程度一方面取决于问题本身的性质,另一方面也取决于观测问题的人的知识储备。人的知识越完备、经验越多,分析问题就会越深入,问题就能被解决得更优雅。
**Q**:现在几乎所有代码都让 AI Agent 写了,我们还有必要学习算法吗?
引用一下李沐老师的话:“agent 是能力放大器,就是能力 x10,而不是加法器,不是能力 +10。”
既然 AI 是能力放大器,那么作为基数的“能力”也很重要。我觉得两方面能力尤其值得积累:一是表达能力,尤其是和 AI 协作的能力。讲清目标、补足背景、及时纠偏。向 AI 解释问题,也是在帮自己想清楚问题。二是基础知识。细节可以让 AI 补,但基本概念得自己懂,才能问到点上、判断对错,把它的输出变成有用的成果。
AI 很特别的一点是,它不像过去的工具那样有清晰的功能边界。它有点像水,到了不同的人手里,会呈现出不同的形状。人的能力越强、taste 越好,AI 的放大效应就越明显。