启发式(Heuristic)是在信息不完备或精确计算成本不可接受时,依据经验规则寻找可行解的方法。它不保证数学最优,而是在给定时间内获得满足要求的结果。
词源
这个词来自希腊语 heuriskein(εὑρίσκειν),意思是发现、找到。“尤里卡”(Eureka)也来自同一个词根。两者共享词源;启发式最初描述发现过程,不等同于演绎证明。
与算法的区别
启发式和算法(Algorithm)的差异体现在几个维度:
| 维度 | 算法(Algorithm) | 启发式(Heuristic) |
|---|---|---|
| 目标 | 精确、最优、可证明 | 快速、可行、够好 |
| 完备性 | 保证找到解(如果存在) | 不保证 |
| 最优性 | 保证最优 | 不保证 |
| 代价 | 时间/空间成本可能极高 | 可控的低成本 |
| 来源 | 数学演绎、形式逻辑 | 经验观察、直觉规则、领域知识 |
算法可以通过穷举保证正确性;启发式通过经验规则减少计算量,但不保证结果最优。
N 皇后和数独可以说明这个差异:
- 纯回溯是完备搜索算法:它会遍历所有可能,搜索空间较大时速度较慢。
- MRV(最小剩余值)是启发式:它优先填候选数最少的格子,可能减少搜索空间,但不保证一定更快。
三个学科中的用法
数学、心理学和人工智能分别使用“启发式”描述不同类型的方法。
1. 数学与运筹学:启发式算法
面对 NP-hard 问题(如 TSP 旅行商问题),精确算法可能需要指数级时间。贪心、局部搜索、模拟退火、遗传算法等方法在可控计算成本下寻找可行解,但不保证最优解,这类方法称为计算启发式。
2. 心理学与认知科学:启发式思维
1950 到 1970 年代,诺贝尔经济学奖得主 Herbert Simon 研究复杂决策中的人类行为,提出满意性原则(Satisficing):找到一个够好的选项就停止搜索。
此后 Kahneman 和 Tversky 的“启发式与偏见”(Heuristics and Biases)研究说明,人会通过代表性启发、可得性启发、锚定效应等捷径做决策,这类现象称为认知启发式。
3. 人工智能:启发式搜索
1960 年代人工智能研究初期,Newell 和 Simon 的“逻辑理论家”(Logic Theorist)程序使用启发式规则引导搜索树。A* 算法、Minimax 加 α-β 剪枝、博弈树的启发式评估函数,都将领域知识编码成规则以指导搜索或剪枝。
适用条件
精确算法在以下场景中成本过高或缺少必要前提:
- 组合爆炸:数独有 9^81 种可能状态,穷举在可接受的时间内算不完。
- 信息不完备:围棋、德州扑克中看不到对手的全部信息,无法精确计算。
- 实时性约束:自动驾驶需要在 10ms 内做出决策,不能等待 Dijkstra 算出全局最优路径。
- 问题本身缺少数学定义:“设计一个好看的 UI”没有最优解,只能依赖经验判断。
这些场景中,精确计算的成本过高或前提不满足;启发式可以在这些限制下给出可用结果。
常见题目中的对应
下表列出精确算法和启发式优化的对应关系:
| 题目 | 精确算法 | 启发式优化 |
|---|---|---|
| 组合求和 | 纯回溯枚举 | 排序后 break 剪枝(利用单调性) |
| N 皇后 | 逐行暴力试 | MRV 优先填约束最多的位置 |
| 数独 | 顺序填空格 | 候选最少优先+唯一候选数(Naked Single) |
| A* 寻路 | Dijkstra 全局最优 | 加 h(n) 启发函数引导搜索方向 |
限制
启发式将领域经验编码为规则,以减少搜索空间或决策成本。使用它会放弃完备性和最优性保证。选择启发式或精确算法时,需要根据问题规模、时间约束和对次优解的可接受程度判断。
相关阅读:
