第零篇-算法全景图

算法全景图:300+算法知识体系总览

本文是专栏《算法》的第零篇文章。不深入讲解具体实现,而是带你俯瞰整张算法知识地图------14 大领域、300+ 算法一次看全,帮你建立体系化认知,找到自己的学习路径。


前言

算法不只有排序和二分查找。从经典的图论字符串,到工程中的分布式共识与缓存淘汰;从推荐系统的深度学习模型,到密码学的零知识证明------算法的世界远比你想象的广阔。

本专栏将算法划分为 14 大领域 ,覆盖 300+ 经典与前沿算法 。本文作为专栏的「第 0 篇」,不讲解具体实现细节,而是带你鸟瞰全局:每个领域有哪些算法、解决什么问题、彼此如何关联。读完本文,你将拥有一张清晰的算法学习导航图。


一、算法全景概览

先用一张表看看算法世界的 14 大领域:

# 领域 算法数量 核心关键词 典型应用场景
1 经典排序 ~20 快排、归并、TimSort、IntroSort 数据处理、数据库排序
2 查找与搜索 ~15 二分、BFS/DFS、A*、回溯 检索、路径规划、游戏AI
3 高级数据结构 ~35 红黑树、B+树、线段树、主席树、LCT 数据库、区间查询、动态维护
4 图论与网络流 ~30 Dijkstra、Tarjan、Dinic、匈牙利算法 路由、社交网络、资源分配
5 字符串处理 ~25 KMP、AC自动机、后缀数组、Manacher 文本搜索、敏感词过滤、生物信息
6 算法设计范式 ~25 DP、分治、贪心、MCTS、博弈论 最优化问题、博弈AI
7 启发式优化 ~15 模拟退火、遗传算法、蚁群、粒子群 NP-hard问题、调度优化
8 推荐与检索 ~25 协同过滤、HNSW、DeepFM、DIN 推荐系统、搜索引擎
9 机器学习与深度学习 ~45 SVM、XGBoost、Transformer、PPO 预测、分类、生成、决策
10 大数据与概率 ~12 HyperLogLog、布隆过滤器、Count-Min Sketch UV统计、去重、流式计算
11 系统架构与分布式 ~35 一致性哈希、令牌桶、Paxos、Raft、CRDT 高并发、分布式系统
12 密码学与安全 ~25 RSA、AES、SHA、zk-SNARKs、国密 加密通信、数字签名、隐私计算
13 数学与数论 ~25 GCD、素数筛、莫比乌斯反演、博弈论 数论计算、组合计数
14 图形学与几何 ~20 光线追踪、凸包、Voronoi、BVH 渲染、游戏、GIS

💡 提示:不必一次性掌握所有领域。建议先通读本文建立全局认知,再根据自身需求选择重点领域深入学习。


二、经典排序算法

排序是最基础的数据处理操作,几乎所有程序都会用到。排序算法可分为比较类 (基于元素间比较)和非比较类(利用元素特性直接定位)两大阵营。

算法 类别 简要说明
冒泡排序 (Bubble Sort) 比较 相邻元素两两比较交换,O(n²),稳定
鸡尾酒排序 (Cocktail Sort) 比较 双向冒泡,左右交替扫描
快速排序 (Quick Sort) 比较 分治法选基准分区,平均 O(n log n)
归并排序 (Merge Sort) 比较 分治分割后合并有序子序列,稳定
堆排序 (Heap Sort) 比较 利用堆结构选择排序,O(n log n)
插入排序 (Insertion Sort) 比较 逐元素插入已排序部分,适合小规模数据
选择排序 (Selection Sort) 比较 每轮选最小元素放到前部,O(n²)
希尔排序 (Shell Sort) 比较 分组插入,逐步缩小增量
梳排序 (Comb Sort) 比较 递减间隔改进冒泡排序
圈排序 (Cycle Sort) 比较 原地排序,每个元素只写一次
奇偶排序 (Odd-Even Sort) 比较 交替比较奇/偶位置,可并行
耐心排序 (Patience Sort) 比较 基于纸牌游戏,可求 LIS
TimSort 混合 归并+插入混合,Python/Java 默认排序
IntroSort 混合 快排+堆排+插入,C++ std::sort 基础
块排序 (Block Sort) 混合 归并的块化变体,可原地稳定
计数排序 (Counting Sort) 非比较 统计频次还原,O(n+k)
桶排序 (Bucket Sort) 非比较 分桶后各自排序,适合均匀分布
基数排序 (Radix Sort) 非比较 按位多轮计数排序
鸽巢排序 (Pigeonhole Sort) 非比较 值域与元素数相近时直接入巢
快速选择 (Quickselect) 选择 平均 O(n) 查找第 K 大/小元素
BFPRT 算法 选择 中位数的中位数,最坏 O(n) 选择
多路归并排序 (K-way Merge) 外部 海量磁盘数据外部排序
双调排序 (Bitonic Sort) 并行 适合 GPU 的排序网络算法

三、查找与搜索算法

查找解决「在哪里」的问题,搜索解决「怎么找路径」的问题。从简单的线性查找到游戏中的 A* 寻路,搜索算法是 AI 与路径规划的基础。

算法 简要说明
线性查找 (Linear Search) 逐元素遍历比较,O(n)
二分查找 (Binary Search) 有序数组折半查找,O(log n)
三分查找 (Ternary Search) 三分区间求单峰函数极值
插值查找 (Interpolation Search) 自适应确定查找位置,适合均匀分布
斐波那契查找 (Fibonacci Search) 斐波那契数列分割区间
指数查找 (Exponential Search) 指数扩大范围再二分,适合无界序列
哈希查找 (Hash Search) 哈希表直接定位,平均 O(1)
块查找 (Block Search) 分块索引 + 块内顺序查找
深度优先搜索 (DFS) 递归深入到底再回溯
广度优先搜索 (BFS) 队列逐层扩展,可求无权最短路径
双向 BFS (Bidirectional BFS) 起点终点同时 BFS,相遇终止
迭代加深 DFS (IDDFS) 限制深度递增的 DFS
A* 寻路算法 (A-Star) 启发式搜索 f(n)=g(n)+h(n),游戏寻路
IDA* 算法 迭代加深版 A*,节省内存
D* 算法 (D-Star) 动态环境增量式路径规划,机器人导航
Jump Point Search (JPS) A* 的网格寻路优化,跳过对称路径
回溯算法 (Backtracking) DFS + 剪枝,系统性探索所有解

四、高级数据结构与树算法

数据结构是算法的载体。选对数据结构,算法效率可以差几个数量级。本领域涵盖从基础树结构到竞赛级高级数据结构。

4.1 二叉搜索树与平衡树

算法/结构 简要说明
二叉搜索树 (BST) 左 < 根 < 右,平均查找 O(log n)
AVL 树 严格平衡,高度差不超过 1
红黑树 (Red-Black Tree) 近似平衡,Java TreeMap / C++ map 底层
Treap 树+堆结合,随机优先级保持平衡
Splay 树 (伸展树) 访问后旋转至根,自适应访问模式
SBT (Size Balanced Tree) 以子树大小为平衡条件
替罪羊树 (Scapegoat Tree) 不平衡时直接重建子树
笛卡尔树 (Cartesian Tree) 堆+搜索树,可线性构造解决 RMQ

4.2 多路查找树

算法/结构 简要说明
B 树 / B+ 树 多路平衡查找树,数据库索引核心
B* 树 B 树变体,节点更满,空间利用率更高
跳表 (SkipList) 多层链表概率平衡,Redis 有序集合底层
LSM 树 写优化存储结构,LevelDB/RocksDB/HBase 核心

4.3 堆与优先队列

算法/结构 简要说明
二叉堆 (Binary Heap) 完全二叉树,Top-K 经典结构
斐波那契堆 (Fibonacci Heap) 摊还插入 O(1),Dijkstra 理论最优
配对堆 (Pairing Heap) 实际性能优秀的可合并堆
左偏树 (Leftist Heap) 可并堆,支持高效合并
二项堆 (Binomial Heap) 二项树组成的可合并堆
d 叉堆 (D-ary Heap) d 叉完全树,Dijkstra 中减少比较

4.4 区间查询与动态维护

算法/结构 简要说明
线段树 (Segment Tree) 区间查询/修改,O(log n)
树状数组 / BIT 前缀和动态维护,常数更小
ST 表 (Sparse Table) 倍增静态 RMQ,O(1) 查询
莫队算法 (Mo's Algorithm) 离线区间查询,调整询问顺序优化
树链剖分 (HLD) 树链映射到线性区间,树上路径/子树操作
李超线段树 (Li Chao Tree) 维护线段/函数最值
ZKW 线段树 非递归线段树,常数极小
主席树 (Persistent Segment Tree) 可持久化线段树,保留历史版本
分块算法 (Sqrt Decomposition) 序列分 √n 块,平衡修改与查询
块状数组 / 块状链表 分块思想支持插入与区间操作

4.5 集合与连通性

算法/结构 简要说明
并查集 (Union-Find) 路径压缩+按秩合并,近 O(1) 连通性判定
带权/种类并查集 维护节点间关系权值与种类
差分数组 O(1) 区间修改,O(n) 还原
单调栈 (Monotonic Stack) 求下一更大/更小元素,O(n)
单调队列 (Monotonic Queue) 滑动窗口最值,DP 优化利器

4.6 动态树与高级结构

算法/结构 简要说明
Link-Cut Tree (LCT) 动态维护森林链操作,支持动态连边/断边
哈希表 (Hash Table) 哈希函数+冲突处理,平均 O(1) 查找

五、图论与网络流算法

图论算法处理网状关系数据,应用覆盖社交网络、路由规划、资源分配等场景。从最短路径到网络最大流,图论是算法竞赛和工程实践的重镇。

5.1 遍历与拓扑

算法 简要说明
DFS / BFS 基础图遍历
拓扑排序 (Topological Sort) DAG 排序,Kahn 入度法或 DFS 染色法
欧拉图判定与构造 判定奇度点数量决定欧拉回路/路径存在性

5.2 最短路径

算法 简要说明
Dijkstra 算法 单源最短路径,非负权图,O((V+E) log V)
Bellman-Ford 算法 支持负权边,可检测负权环,O(VE)
SPFA 算法 Bellman-Ford 队列优化版
Floyd-Warshall 算法 全源最短路径,动态规划,O(V³)
Johnson 算法 全源最短路径,适合稀疏图
差分约束系统 不等式约束转化为最短路径问题
次短路 / 第 K 短路 A*/可持久化堆求第 K 短路径

5.3 最小生成树 (MST)

算法 简要说明
Kruskal 算法 边权排序 + 并查集,适合稀疏图
Prim 算法 点集扩展贪心选最小边,适合稠密图
Borůvka 算法 多轮同时选最小边,适合并行
朱刘算法 (Edmonds) 有向图最小树形图,缩环递归
矩阵树定理 基尔霍夫矩阵行列式对生成树计数

5.4 连通性与环

算法 简要说明
Tarjan 算法 一次 DFS 求 SCC、割点、桥、LCA
Kosaraju 算法 两次 DFS 求强连通分量
圆方树 (Block Forest) 点双连通分量建树,处理割点/路径
虚树 (Virtual Tree) 关键点压缩树,优化树上 DP
Fleury 算法 欧拉回路朴素构造
Hierholzer 算法 欧拉回路高效构造,DFS 回溯入栈
2-SAT 算法 Tarjan SCC 求解布尔可满足性
支配树 (Dominator Tree) 求必经节点,用于编译优化
Stoer-Wagner 算法 无向图全局最小割,O(V³)

5.5 网络最大流

算法 简要说明
Ford-Fulkerson 算法 增广路法求最大流
Edmonds-Karp 算法 BFS 实现的 Ford-Fulkerson,O(VE²)
Dinic 算法 分层图 + 多路增广,O(V²E)
ISAP 算法 Dinic 改进版,无需重新分层
HLPP 算法 最高标号预流推进,理论更优
最小费用最大流 (MCMF) 费用图上增广,求最小费用最大流

5.6 图匹配

算法 简要说明
匈牙利算法 增广路法求二分图最大匹配,O(VE)
Hopcroft-Karp 算法 多路增广二分图匹配,O(E√V)
KM 算法 (Kuhn-Munkres) 带权二分图最优匹配,O(V³)
带花树算法 (Blossom) 一般图最大匹配,处理奇环开花
最小路径覆盖 拆点转二分图匹配求 DAG 最少路径

六、字符串与文本处理算法

字符串算法是文本搜索、敏感词过滤、基因序列分析的基础。从经典的 KMP 到后缀自动机,字符串算法的理论深度往往超出预期。

6.1 单模式匹配

算法 简要说明
KMP 算法 next 数组避免回溯,O(n+m)
扩展 KMP (ExKMP / Z 算法) 求各后缀与主串的最长公共前缀
Boyer-Moore 算法 (BM) 从后向前 + 坏字符/好后缀跳过
Sunday 算法 BM 变体,关注匹配段后一字符
Rabin-Karp 算法 滚动哈希匹配,适合多模式
字符串哈希 (String Hash) 多项式滚动哈希,O(1) 比较子串

6.2 多模式匹配与自动机

算法/结构 简要说明
Trie 字典树 多叉树存储前缀,支持自动补全
AC 自动机 (Aho-Corasick) Trie + KMP 失配指针,多模式匹配
后缀数组 (Suffix Array) 排序所有后缀,配合 LCP 解决子串问题
后缀自动机 (SAM) 最小 DFA 接受所有后缀,线性构造
广义后缀自动机 多串共建 SAM
后缀树 (Suffix Tree) 压缩 Trie 表示所有后缀
序列自动机 接受所有子序列的最小 DFA
有限状态自动机 (DFA/NFA) 正则表达式引擎理论基础

6.3 回文与子串

算法 简要说明
Manacher 算法 线性时间求最长回文子串
回文树 (Palindromic Tree) 存储所有不同回文子串,支持计数

6.4 字符串变换与分析

算法 简要说明
最小表示法 求循环同构的最小字典序表示
Lyndon 分解 划分为字典序非递增的 Lyndon 串
Z 函数 求各位置后缀与原串的最长公共前缀

6.5 距离与序列对齐

算法 简要说明
Levenshtein 距离 (编辑距离) 插入/删除/替换最小代价,拼写检查
Needleman-Wunsch 算法 全局序列对齐,基因序列对比
Smith-Waterman 算法 局部序列对齐
最长公共子串 (LCS-Substring) DP 求最长连续公共子串
Damerau-Levenshtein 距离 编辑距离加入相邻交换操作

6.6 数据压缩

算法 简要说明
游程编码 (RLE) 连续重复以"字符+次数"编码
Huffman 编码 贪心构建最优前缀编码树
LZ77 / LZ78 滑动窗口字典压缩,gzip 基础
LZW 算法 LZ78 改进,GIF 压缩算法
Deflate 算法 LZ77 + Huffman,ZIP/GZIP 核心
Brotli 算法 现代 Web 压缩,优于 gzip
算术编码 浮点数表示整条消息,接近熵极限
PPM 上下文建模统计压缩

6.7 相似度与去重

算法 简要说明
SimHash 算法 局部敏感哈希,海量网页去重
MinHash 集合 Jaccard 相似度近似计算
Jaccard 相似系数 交集/并集衡量集合相似度
感知哈希 (pHash) 图片/音频相似度比较,以图搜图
余弦相似度 文本向量相似度计算

七、算法设计范式与技巧

设计范式是算法的「思想方法论」。掌握动态规划、分治、贪心等范式,就掌握了解决新问题的思维武器。

7.1 动态规划 (DP)

算法/模型 简要说明
0-1 背包 / 完全背包 / 多重背包 经典物品选择优化
最长公共子序列 (LCS) 两序列最长公共子序列,O(mn)
最长上升子序列 (LIS) 二分优化至 O(n log n)
区间 DP 按区间长度递推,如石子合并
状态压缩 DP 二进制表示集合状态,如 TSP
数位 DP 按数字位递推,统计区间满足条件的数
树形 DP 树上动态规划,如最大独立集
概率 DP / 期望 DP 基于概率/期望的递推
插头 DP 逐格转移轮廓线状态,网格连通性
计数 DP 方案数/组合数递推计数
斜率优化 DP 凸壳/单调队列优化转移
决策单调性优化 决策点单调性 + 分治/二分优化
矩阵快速幂加速 DP 转移写成矩阵幂,O(log n) 加速
CDQ 分治 时间分治处理三维偏序等离线问题
整体二分 多询问二分答案并行处理

7.2 分治与数学变换

算法 简要说明
快速傅里叶变换 (FFT) O(n log n) 多项式乘法
快速数论变换 (NTT) 模意义下 FFT,避免浮点误差
快速沃尔什变换 (FWT) 位运算卷积的快速变换
Karatsuba 大数乘法 分治降至 O(n^1.585)
Strassen 矩阵乘法 分治降至 O(n^2.807)
莫队二次离线 / 带修莫队 莫队进阶变种,支持修改

7.3 贪心算法

算法/问题 简要说明
活动安排问题 按结束时间排序贪心选择
区间合并算法 按起点排序后合并重叠区间
Huffman 编码树构建 每次合并频率最小的两棵树
Dijkstra / Prim / Kruskal 图论经典贪心算法

7.4 回溯与搜索剪枝

算法 简要说明
回溯法 (Backtracking) DFS 系统枚举所有解 + 剪枝
分支限界法 (Branch and Bound) BFS/优先队列 + 上下界剪枝
Dancing Links (DLX) 精确覆盖高效回溯,数独求解利器
启发式搜索剪枝 估值函数排序与剪枝加速搜索

7.5 博弈与搜索

算法 简要说明
Minimax (极小化极大) 博弈树搜索,双方轮流最优化
Alpha-Beta 剪枝 Minimax 剪枝优化
蒙特卡洛树搜索 (MCTS) 随机模拟 + UCT,AlphaGo 核心
Expectimax 含随机节点的博弈搜索
博弈论 (SG 函数 / Nim) 公平组合博弈判定先手必胜

7.6 倍增与 LCA

算法 简要说明
倍增算法 (Binary Lifting) 预处理 2^k 祖先,O(log n) 跳跃
Tarjan LCA 算法 离线并查集求最近公共祖先
重链剖分 LCA 树链剖分求 LCA,在线查询

八、启发式与元启发式优化算法

🆕 补充领域:这是很多算法资料忽略的一整块版图。当问题属于 NP-hard、精确求解不可行时,启发式算法是工程实践中的主力工具。

算法 类别 简要说明
爬山算法 (Hill Climbing) 单点 贪心向更优邻域移动,易陷局部最优
模拟退火 (SA) 单点 以概率接受较差解跳出局部最优
禁忌搜索 (Tabu Search) 单点 记忆机制避免重复,允许穿越次优
遗传算法 (GA) 进化 选择/交叉/变异模拟自然进化
差分进化 (DE) 进化 差分变异向量的实数编码进化
进化策略 (ES) 进化 自适应步长高斯变异
蚁群算法 (ACO) 群智能 信息素正反馈,适合 TSP 等路径优化
粒子群算法 (PSO) 群智能 惯性+个体最优+群体最优更新粒子
人工蜂群算法 (ABC) 群智能 采蜜蜂/观察蜂/侦察蜂分工搜索
萤火虫算法 群智能 基于亮度和吸引度的随机搜索
变邻域搜索 (VNS) 元启发式 系统切换邻域结构突破局部最优
迭代局部搜索 (ILS) 元启发式 局部搜索 + 扰动重启
灰狼优化 (GWO) 群智能 模拟灰狼等级与围捕机制
梯度下降法 精确 一阶迭代优化,ML 参数寻优基础

九、推荐系统与信息检索算法

推荐系统是互联网公司的核心算法链路。从召回、排序到重排,每一步都有大量经典算法。

9.1 召回与协同过滤

算法 简要说明
UserCF 找相似用户推荐其喜欢的物品
ItemCF 找相似物品根据用户历史推荐
SVD (奇异值分解) 矩阵分解降维提取隐语义特征
FunkSVD 梯度下降优化矩阵分解
BiasSVD FunkSVD + 用户/物品偏置项
SVD++ BiasSVD + 隐式反馈
ALS (交替最小二乘法) 交替求解大规模矩阵分解
NMF (非负矩阵分解) 分解结果非负,语义可解释
BPR (贝叶斯个性化排序) 优化 pairwise 排序损失
Swing 算法 共同点击用户"秋千"结构计算相似度

9.2 向量召回 / 近似最近邻 (ANN)

算法 简要说明
HNSW 多层图结构 ANN,工业界主流
IVF-PQ 倒排索引 + 乘积量化,Faiss 常用
Annoy 随机投影树,Spotify 开源
LSH (局部敏感哈希) 相似项哈希到同一桶
ScaNN Google 开源,各向异性量化
DiskANN 面向磁盘的大规模向量索引

9.3 排序与点击率预估 (CTR)

算法 简要说明
LR (逻辑回归) 浅层 CTR 基线模型
GBDT + LR GBDT 特征工程 + LR 分类
FM (因子分解机) 自动学习特征二阶交叉
FFM FM 改进,引入特征域
Wide & Deep 宽模型(记忆) + 深模型(泛化)
DeepFM FM 替代 Wide 侧,端到端特征交叉
xDeepFM CIN 模块显式学习高阶交互
DCN (Deep & Cross) Cross 网络自动构建特征交叉
AutoInt 自注意力机制学习特征高阶交互
DLRM Meta 开源深度推荐框架
YouTube DNN 召回与排序两阶段深度网络
DIN (深度兴趣网络) 注意力机制捕获多样化兴趣
DIEN (深度兴趣演化网络) DIN + GRU 建模兴趣演化
DSIN (深度会话兴趣网络) 按会话切分建模兴趣
SASRec 基于 Self-Attention 的序列推荐
BST Transformer 建模用户行为序列

9.4 重排与搜索相关性

算法 简要说明
TF-IDF 评估词语对文档的重要程度
BM25 算法 TF-IDF 概率论改进,ES 默认打分
PageRank 网页排名,基于链接结构迭代
HITS 算法 区分权威页面与枢纽页面
MMR (最大边界相关性) 兼顾相关性与多样性
DPP (行列式点过程) 核矩阵行列式优化多样性
LTR (Learning to Rank) RankSVM / LambdaMART 排序学习
倒排索引 词项到文档列表的检索核心结构

十、机器学习与深度学习算法

机器学习算法是 AI 时代的核心生产力。从传统监督学习到大模型时代的 Transformer 与 RLHF,本领域覆盖最广。

10.1 监督学习 (传统)

算法 简要说明
线性回归 最小二乘法拟合线性关系
逻辑回归 Sigmoid 分类,二分类基线
朴素贝叶斯 贝叶斯定理 + 特征独立假设
K 近邻 (KNN) 距离投票分类/回归,懒惰学习
支持向量机 (SVM) 最大间隔超平面 + 核函数
决策树 (ID3/C4.5/CART) 信息增益/增益率/基尼系数分裂
感知机 (Perceptron) 线性二分类,神经网络基础

10.2 集成学习

算法 简要说明
随机森林 Bagging + 随机特征选择
AdaBoost 序列训练弱分类器提升错分权重
GBDT 拟合负梯度迭代提升
XGBoost GBDT + 正则化 + 二阶导数 + 并行
LightGBM 直方图 + 叶子优先生长,快且省内存
CatBoost 类别特征原生支持
Stacking 多基模型输出作为元模型输入
Blending 留出集生成元特征,简化版 Stacking

10.3 无监督学习

算法 简要说明
K-Means / K-Means++ 迭代质心聚类
DBSCAN 基于密度聚类,发现任意形状簇
OPTICS DBSCAN 改进,支持多密度聚类
层次聚类 凝聚/分裂式构建聚类树
EM 算法 含隐变量最大似然估计,GMM 核心
PCA 线性降维,最大化方差方向投影
LDA 有监督降维
t-SNE 非线性降维,高维可视化首选
UMAP 比 t-SNE 更快且保留全局结构
自编码器 编码-解码重构的无监督表示学习
谱聚类 拉普拉斯矩阵特征向量图划分聚类

10.4 关联规则与异常检测

算法 简要说明
Apriori 算法 频繁项集挖掘 + 关联规则
FP-Growth FP 树压缩存储,比 Apriori 高效
Isolation Forest 随机划分的异常检测
LOF (局部异常因子) 基于局部密度的离群点检测

10.5 神经网络优化算法

算法 简要说明
SGD 小批量随机采样梯度下降
Momentum 累积历史梯度方向加速收敛
NAG (Nesterov) 超前一步计算梯度的 Momentum
AdaGrad 自适应学习率
RMSProp 指数加权移动平均梯度平方
AdaDelta 无需全局学习率的自适应方法
Adam Momentum + RMSProp 融合,最常用
AdamW Adam + 解耦权重衰减
NAdam Adam + Nesterov 动量
学习率调度 Warmup / Cosine Annealing 动态调整

10.6 深度学习模型与架构

算法/模型 简要说明
多层感知机 (MLP) 全连接神经网络基础架构
卷积神经网络 (CNN) 卷积核提取局部特征,图像识别核心
经典 CNN LeNet / AlexNet / VGG / Inception
RNN / LSTM / GRU 序列建模,处理时序/文本
Transformer 自注意力机制,取代 RNN
Attention 机制 加权关注重要部分
ResNet 跳跃连接解决梯度消失,训练超深网络
BERT 双向 Transformer 预训练语言模型
GPT 系列 自回归生成式预训练,ChatGPT 基础
Vision Transformer (ViT) Transformer 应用于图像分类
GAN 生成器与判别器对抗训练
VAE 变分推断生成模型
Diffusion Model 逐步去噪生成,Stable Diffusion 核心
MoE 稀疏激活混合专家,扩展模型容量
U-Net 编码-解码 + 跳跃连接,医学分割与扩散骨干

10.7 图神经网络

算法/模型 简要说明
GCN (图卷积网络) 图上卷积操作,节点特征聚合
GraphSAGE 采样邻居归纳式学习
GAT (图注意力网络) 注意力机制加权聚合邻居
GIN (图同构网络) 与 WL 测试等价的强表达力 GNN

10.8 序列模型与 NLP

算法/模型 简要说明
隐马尔可夫模型 (HMM) 含隐状态序列模型,语音识别经典
维特比算法 HMM 动态规划解码,求最优状态序列
前向-后向算法 HMM 概率计算与参数学习
CRF (条件随机场) 序列标注概率图模型,NER 分词
Word2Vec CBOW / Skip-gram 词向量预训练
GloVe 基于全局共现矩阵的词向量
ELMo 双向 LSTM 上下文词向量
对比学习 拉近正样本、推远负样本的自监督学习

10.9 强化学习

算法 简要说明
Q-Learning 无模型离策略 TD 学习
SARSA 在策略 TD 学习
DQN Q-Learning + 神经网络 + 经验回放
DDPG 深度确定性策略梯度,连续动作空间
A3C / A2C 异步/同步优势演员-评论家
PPO 限制策略更新幅度,OpenAI 首选
SAC 最大熵强化学习,兼顾探索与利用
TD3 DDPG 改进,双 Q 网络缓解过估计

10.10 前沿学习范式

算法/范式 简要说明
联邦学习 数据不出本地,交换参数保护隐私
元学习 "学会学习",MAML 提升小样本泛化
Prompt Tuning / LoRA 参数高效微调大模型
RLHF 人类反馈强化学习对齐大模型
RAG 检索增强生成,缓解大模型幻觉
Agent / 多智能体 LLM 驱动工具调用与协同决策

十一、大数据统计与概率算法

🆕 补充视角:大数据场景下,精确计算往往不可行,概率数据结构以极小空间换取近似结果,是工业界处理海量数据的利器。

11.1 基数估计与集合存在性

算法 简要说明
HyperLogLog (HLL) ~12KB 估算十亿级 UV 基数
布隆过滤器 (Bloom Filter) 位数组+多哈希,集合存在性判定
布谷鸟过滤器 (Cuckoo Filter) 支持删除的布隆过滤器替代
Counting Bloom Filter 计数版布隆过滤器,支持删除

11.2 频次统计与 Heavy Hitters

算法 简要说明
Count-Min Sketch 多哈希计数矩阵,频次估计
Top-K (Misra-Gries) 流式数据维护频繁项
SpaceSaving 高效 Top-K 频繁项追踪
Count Sketch 中位数估计减少偏差

11.3 分位数与摘要

算法 简要说明
T-Digest 流式分位数估计,P99 延迟监控
GK 算法 流式分位数近似,可控误差界
Q-Digest 二叉树定量摘要,适合分布式聚合

11.4 随机抽样与洗牌

算法 简要说明
蓄水池抽样 (Reservoir Sampling) 流式等概率均匀采样 k 个元素
Fisher-Yates 洗牌 原地公平随机打乱数组
加权蓄水池抽样 按权重概率进行流式抽样

十二、系统架构、分布式与高并发算法

🆕 工程必备:这是面试高频、工程核心,却很少被纳入「算法」体系的领域。后端工程师必学。

12.1 负载均衡

算法 简要说明
轮询 (Round Robin) 依次分配请求
加权轮询 按服务器性能权重分配
平滑加权轮询 Nginx 默认,避免突发集中
最小连接数 分配给连接数最少的服务器
源地址哈希 (IP Hash) 同一 IP 固定分配,会话保持
一致性哈希 (Consistent Hashing) 虚拟节点环形哈希,最小化数据迁移
Maglev 一致性哈希 Google 查表法,均匀且 O(1)
P2C (Power of Two Choices) 随机选两个取较优者

12.2 高并发限流

算法 简要说明
令牌桶 (Token Bucket) 固定速率生成令牌,允许突发
漏桶 (Leaky Bucket) 固定速率漏水,平滑流量
滑动时间窗口 精确统计窗口内请求数
滑动窗口计数器 近似滑动窗口,内存更低
固定窗口计数器 最简单限流,存在边界突刺
Guava RateLimiter 带预热的令牌桶
Sentinel 冷启动 / 匀速排队 阿里 Sentinel 多种限流策略

12.3 网络传输与拥塞控制

算法 简要说明
TCP Tahoe / Reno 经典拥塞控制,慢启动+拥塞避免+快重传
TCP Cubic Linux 默认,三次函数窗口增长
Google BBR 基于带宽和延迟的拥塞控制
QUIC 拥塞控制 UDP 之上可靠传输
Nagle 算法 合并小包减少网络开销
慢启动/拥塞避免/快重传快恢复 TCP 拥塞控制四大核心机制

12.4 缓存置换

算法 简要说明
LRU 淘汰最久未访问,HashMap+双向链表
LFU 淘汰访问频次最低
FIFO 淘汰最早进入缓存
MRU 淘汰最近访问,适合扫描型访问
2Q 算法 双队列分离冷热数据
ARC 自适应调整 LRU 与 LFU 比例
Clock 时钟置换 近似 LRU,访问位+循环指针
W-TinyLFU Caffeine 使用,Count-Min Sketch+LRU
LIRS 基于 IRS 区分热块与冷块
缓存策略 Cache Aside / Read-Through / Write-Through / Write-Behind

12.5 分布式 ID 生成

算法 简要说明
雪花算法 (Snowflake) 时间戳+机器ID+序列号,64位唯一ID
UUID 标准化唯一标识符,无需中心协调
Leaf (美团) 号段+Snowflake 双 buffer
Tinyid / UidGenerator 号段/雪花变体开源方案

12.6 分布式共识与同步

算法/协议 简要说明
Paxos 分布式一致性基石,多数派投票
Multi-Paxos / Fast Paxos Paxos 多实例/快速路径优化
Raft Paxos 工程化简化,领导者选举+日志复制
Zab 协议 ZooKeeper 原子广播,类 Paxos 主备
Gossip 协议 流言传播式最终一致性
两阶段提交 (2PC) 预提交+正式提交,阻塞式强一致
三阶段提交 (3PC) 2PC + CanCommit + 超时机制
TCC 补偿型分布式事务
Saga 模式 长事务拆分子事务+补偿
Vector Clock 分布式事件因果关系判定
Lamport 时钟 逻辑时钟定义事件先后顺序
CAP / BASE 理论 一致性-可用性-分区容忍权衡
CRDT 无冲突复制数据类型,自动合并
Quorum NWR 读写法定数保证一致性
租约 (Lease) 机制 带期限授权,主备切换与心跳容错

十三、密码学、安全与哈希算法

安全是系统的底线。理解密码学算法原理,才能做出安全的设计决策。

13.1 非对称加密与密钥协商

算法 简要说明
RSA 大数分解难题,公钥加密/私钥解密
ECC (椭圆曲线) 相同安全强度密钥更短
Diffie-Hellman 不安全信道协商共享密钥
ECDH ECC 版本的 DH,更高效
ElGamal 离散对数的非对称加密与签名
国密 SM2 中国国标椭圆曲线非对称加密

13.2 对称加密

算法 简要说明
AES 分组对称加密全球标准
DES / 3DES 传统分组加密,已不推荐
ChaCha20 流密码,移动端性能优
RC4 流密码,已发现漏洞
国密 SM4 中国国标分组对称加密
AES-GCM / ChaCha20-Poly1305 AEAD 认证加密
分组密码工作模式 ECB/CBC/CTR/CFB/OFB

13.3 哈希与消息认证

算法 简要说明
SHA-256 / SHA-512 安全哈希,数字签名与区块链
SHA-3 (Keccak) 海绵结构哈希,SHA-2 备选
MD5 已不抗碰撞,不推荐安全场景
HMAC 哈希消息认证码
MurmurHash 非加密哈希,广泛用于哈希表
CityHash Google 开源,短字符串优化
xxHash 极速非加密哈希
FxHash / FNV 简单快速非加密哈希
国密 SM3 中国国标密码杂凑,256 位

13.4 密码存储与防彩虹表

算法 简要说明
Bcrypt 自带盐+可调成本因子
Scrypt 内存硬函数,抗 GPU/ASIC
Argon2 PHC 冠军,内存硬+抗侧信道
PBKDF2 基于 HMAC 的密钥派生

13.5 数字签名与零知识证明

算法 简要说明
ECDSA 椭圆曲线数字签名,TLS/区块链
Ed25519 高性能 EdDSA,确定性签名
RSA 签名 PKI 体系常用
zk-SNARKs 简洁非交互零知识证明
zk-STARKs 透明抗量子零知识证明
国密 SM9 基于身份的标识密码
同态加密 密文上直接计算
秘密共享 Shamir 门限方案,n 份 k 份恢复
安全多方计算 (MPC) 多方不泄露输入共同计算

13.6 后量子密码

🆕 前沿补充:量子计算威胁下,后量子密码已成为 NIST 标准化的热点方向。

算法 简要说明
格密码 (Kyber / ML-KEM) NIST 后量子密钥封装
Dilithium / ML-DSA NIST 后量子数字签名
基于编码/哈希的签名 后量子其他候选方向

十四、数学与数论算法

数论算法是密码学、竞赛编程的基础。组合数学则为计数问题提供系统方法。

14.1 基础数论

算法 简要说明
欧几里得算法 (GCD) 求最大公约数,O(log min(a,b))
扩展欧几里得 (ExGCD) 求 ax+by=gcd(a,b) 整数解
快速幂 二进制分解指数,O(log n)
矩阵快速幂 快速幂推广到方阵,加速递推
埃拉托斯特尼筛法 筛素数,O(n log log n)
欧拉筛 (线性筛) 严格 O(n) 筛素数
Miller-Rabin 素性测试 概率性素数判定
AKS 素性测试 确定性多项式时间素数判定
中国剩余定理 (CRT) 求解模数互质同余方程组
卢卡斯定理 (Lucas) 组合数取模 p 高效计算
费马小定理 模逆元与素性判定基础
欧拉函数 / 欧拉降幂 计算 ≤n 与 n 互素的整数个数
BSGS 算法 (大步小步) O(√p) 求解离散对数

14.2 积性函数与数论分块

🆕 竞赛进阶:以下算法是算法竞赛数论部分的核心,普通资料很少涉及。

算法 简要说明
莫比乌斯反演 利用莫比乌斯函数反演数论求和
杜教筛 亚线性时间求积性函数前缀和
Min_25 筛 亚线性求积性函数前缀和,适用更广
狄利克雷卷积 数论函数卷积运算,反演理论基础
整除分块 O(√n) 计算 Σ⌊n/i⌋ 求和

14.3 线性代数

算法 简要说明
高斯消元法 解线性方程组,O(n³)
线性基 异或空间基底,求最大异或和
矩阵乘法与快速幂 方阵乘法及幂运算加速递推

14.4 最优化与近似

算法 简要说明
线性规划 / 单纯形法 线性约束下最优化求解
牛顿迭代法 求方程根/极值的迭代逼近
拉格朗日乘数法 等式约束下极值求解
蒙特卡洛算法 随机采样近似统计
拉斯维加斯算法 随机化但结果总正确
素数定理 素数分布密度 π(n) ~ n/ln(n)

14.5 组合数学

算法/定理 简要说明
Catalan / Stirling 数 经典组合计数数列
容斥原理 多集合并集大小反演计算
康托展开 / 逆康托展开 排列与字典序排名双向映射
生成函数 (母函数) 幂级数表示数列求解计数
Pólya 计数定理 群作用下等价类计数

十五、计算机图形学与几何算法

图形学算法支撑着游戏、渲染、GIS 等领域。计算几何则是竞赛与 CAD 的基础。

15.1 光栅化与绘图

算法 简要说明
Bresenham 划线/画圆 整数运算高效绘制,无浮点误差
中点画圆算法 对称性八分画圆
Wu 反走样算法 抗锯齿直线绘制
DDA 数值微分划线 浮点增量绘制直线
多边形填充扫描线 扫描线与边交点配对填充

15.2 渲染与光照

算法 简要说明
光线追踪 (Ray Tracing) 模拟光线传播,真实反射/折射
路径追踪 (Path Tracing) 蒙特卡洛积分完整光线传输
辐射度算法 (Radiosity) 能量守恒漫反射全局光照
光子映射 (Photon Mapping) 两阶段全局光照
Phong / Blinn-Phong 经典局部光照经验模型
PBR 基于物理的渲染 微表面 BRDF 真实感渲染

15.3 计算几何

算法 简要说明
Graham 扫描法 极角排序+栈维护求凸包,O(n log n)
Jarvis 步进法 逐步包裹求凸包,O(nh)
Andrew 凸包算法 水平排序的凸包算法
最近点对 分治法 O(n log n) 求最近点对
扫描线算法 (Sweep Line) 求线段交点/面积并
Fortune 算法 扫描线构建 Voronoi 图
Delaunay 三角剖分 最大化最小角的三角剖分
旋转卡壳法 凸多边形对踵点遍历,求直径/最远点对
半平面交 线性规划可行域/多边形裁剪
Pick 定理 格点多边形面积公式
自适应辛普森积分 自适应精度数值积分
射线法 / 转角法 点在多边形内判定

15.4 空间加速结构

算法/结构 简要说明
KD-Tree 多维空间二叉分割,最近邻加速
BVH (层次包围盒) 光线追踪加速结构
Octree (八叉树) 三维空间八叉分割
QuadTree (四叉树) 二维空间四叉分割
R-Tree 矩形索引树,空间数据库核心
Uniform Grid 简单空间划分,均匀分布碰撞检测

总结

本文是专栏的开篇导航,带你俯瞰了算法世界的 14 大领域、300+ 算法。核心要点:

  1. 算法不止排序和二分------从分布式共识到零知识证明,算法的世界远比想象中广阔
  2. 体系化认知是关键------先有地图,再上路;知道每个算法属于哪个领域、解决什么问题
  3. 按需深入学习------根据岗位和目标选择重点领域,不必面面俱到
  4. 工程与理论并重------既要有竞赛选手的算法功底,也要有工程师的系统视角

📌 如果这篇文章对你有帮助,欢迎 点赞、收藏、关注,支持专栏持续更新!

📖 完整专栏导航请见:算法


文章标签算法 数据结构 排序算法 图论 机器学习 分布式 后端开发

相关推荐
Shell运维手记1 小时前
Linux 常用基础命令学习笔记
linux·运维·笔记·学习·算法·github
船厂电气自动化ai大模型2 小时前
AI大模型与数学 第32课 函数凹凸性与二阶导数:拐点求解、凹凸区间计算(10道二阶导数计算题)
数据结构·人工智能·python·深度学习·算法
旖旎夜光2 小时前
LeetCode 3:无重复字符的最长子串(滑动窗口) —— 题解
数据结构·c++·算法·leetcode·滑动窗口
叠层归一研究院4 小时前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
zlinear数据采集卡4 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构
杨石兴5 小时前
31、玩具MoM:用2x2矩阵串起全套流程
人工智能·算法·矩阵·电磁学
江畔柳前堤5 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
Navigator_Z5 小时前
LeetCode //C - 1192. Critical Connections in a Network
c语言·算法·leetcode
zander2585 小时前
LeetCode 739:每日温度——为什么单调栈要持续弹出
开发语言·python·算法
2601_955759885 小时前
如何降低 Claude API 批量生产返工率
大数据·人工智能·算法