
一起动脑筋 · 先看一个小故事
两位暗号,每位只能是 0 或 1。机器人把 00、01、10、11 全部写出来。
把过程摊开来看
- 第一位 000、01
- 第一位 110、11
- 逐个检查共 4 种
暴力搜索直接检查所有候选,思路往往容易验证。
先估计候选数量,小规模时它可能很合适,也可作为检查更快算法的参照。
01什么是暴力搜索?
暴力搜索(Brute Force Search)就是把可能答案按规则一个一个检查。
例如从 0000 到 9999 尝试一个四位密码,最多要检查 10000 种情况。
02暴力搜索是不是很笨?
不一定。
如果候选数量不大,暴力方法可能最简单、最可靠,也最容易写对。
03暴力搜索和枚举有什么关系?
两者非常接近。
枚举强调“系统列出候选”,暴力搜索则更强调“把候选空间直接探索一遍”。在很多入门题里,两种说法可以描述相似思路。
04怎样保证不漏情况?
关键是定义清楚搜索空间。
候选是什么?
所有可能答案。
范围是什么?
起点和终点。
检查规则是什么?
如何判断是否满足题意。
05什么时候会变慢?
当选择层数变多时,候选数量可能迅速增长。
例如每一步有 2 种选择,连续做 n 步,就可能出现:
2^n 种组合
n 稍微变大,数量就会急剧增加。
06暴力方法还有什么用?
- 验证更复杂算法是否正确
- 处理小数据子任务
- 帮助发现问题规律
- 作为剪枝、动态规划等优化方法的起点
你已经知道了什么
- 暴力搜索会系统检查所有候选。
- 它不是乱试,而是完整覆盖搜索空间。
- 数据规模小时,暴力方法可能非常合适。
- 候选数量可能随问题规模指数增长。
- 暴力算法常是优化算法的重要基线。
下一篇:DFS:一条路走到底
轮到你来试一试
增加第三位,每位仍有两种选择,共多少种?
想好了吗?点开看解释
8 种。原来每一种都能再接 0 或 1,所以数量翻倍。