《人工智能现代方法(第4版)》 第4章 复杂环境中的搜索 学习笔记

复杂环境中搜索算法解析

AI的出现,是否能替代IT从业者? 10w+人浏览 1.4k人参与

🎯 本章灵魂拷问:“当你不知道自己在哪、世界还爱跟你开玩笑时,该怎么找路?”


一、局部搜索:别管怎么来的,告诉我终点在哪!

🔍 核心思想转变

  • 第3章:“我怎么从A到B?”(关心路径);
  • 第4章:“我要最好的B!”(只关心最终状态);

就像找对象:第3章是规划追人步骤,第4章是直接刷约会APP照片,看到心动的就右滑。

🎮 四大“登山”算法(找最高点)

1. 愣头青爬山法
def 爬山():
    当前位置 = 随便找个地方站着
    while True:
        邻居们 = 上下左右走一步看看
        最高邻居 = 找最陡的上坡路
        if 最高邻居 <= 当前位置:
            return "我到顶了!"  # 可能是小山包
        else:
            当前位置 = 最高邻居  # 继续爬

致命伤

  • 局部最高点陷阱:爬到个小土坡就以为登顶珠峰;
  • 高原迷茫症:四周都一样高,不知道该往哪走;
  • 山脊困局:得同时往两个方向走,但一次只能走一步;
2. 爱冒险的随机爬山法
  • 策略:不是总选最陡的,而是“看起来不错就试试”;
  • 优点:能探索更广,可能找到更高峰;
  • 缺点:慢得像在景区闲逛;
3. 大聪明首选爬山法
  • 改进:不是看“谁最高”,而是“先看到谁不错就选谁”;
  • 结果:比愣头青快,但本质上还是可能困在小山包;
4. 开挂的随机重启爬山法
def 随机重启爬山():
    历史最佳 = -∞
    for _ in range(100):  # 重开100次
        本次结果 = 爬山()
        if 本次结果 > 历史最佳:
            历史最佳 = 本次结果
    return 历史最佳

精髓:“如果一次爬不到珠峰,我就传送到世界不同地方重爬100次,总有一次在珠峰脚下开始!”


二、模拟退火:物理学家的浪漫

🔥 核心比喻:打铁与爱情

铁匠打铁时:

  1. 高温阶段:使劲锤,允许犯错(让铁变形);
  2. 降温阶段:慢慢来,精雕细琢;
  3. 最终成型:一把好剑;

算法版

def 模拟退火():
    当前状态 = 随便开始
    温度 = 1000度  # 开始时很“狂热”
    
    while 温度 > 0.01度:  # 慢慢“冷静下来”
        随机邻居 = 随便选个方向走走
        高度差 = 邻居高度 - 当前高度
        
        if 高度差 > 0:  # 邻居更高,肯定去!
            当前状态 = 随机邻居
        else:  # 邻居更低,但有概率去
            接受概率 = exp(高度差 / 温度)
            if random() < 接受概率:  # 赌一把!
                当前状态 = 随机邻居
                
        温度 = 温度 × 0.99  # 降温,越来越理智

为什么有效

  • 开始时:允许“犯错”下坡,探索更多区域;
  • 结束时:几乎只上坡,稳固在高峰;
  • 数学魔法:理论上能找到全局最优(只要降温够慢);

三、束搜索与进化算法:群众的力量

👥 束搜索(局部束搜索)

def 束搜索(k=3):
    人群 = [随机起点] * k  # k个人一起爬山
    
    while not 所有人到顶:
        所有后代 = []
        for 人 in 人群:
            后代.extend(人的所有邻居)
        
        # 精英主义:只留最好的k个后代
        人群 = 排序(所有后代)[:k]  # 优胜劣汰

问题:可能k个人全挤在同一个山沟里 → 变成“k倍慢的爬山法”。

🧬 进化算法(生物模拟版)

def 进化算法():
    种群 = [随机个体] * N  # 一群生物
    
    for 世代 in range(1000):
        # 1. 交配重组
        后代们 = []
        for i in range(N):
            爸 = 轮盘赌选择(种群)  # 适应度越高越可能被选
            妈 = 轮盘赌选择(种群)
            孩子 = 基因混合(爸, 妈)  # 各取一半基因
            后代们.append(孩子)
        
        # 2. 偶尔突变
        for 孩子 in 后代们:
            if random() < 突变率:
                孩子.基因[随机位置] = 随机值
        
        # 3. 自然选择
        种群 = 排序(后代们)[:N]  # 保留最好的N个

生物学术语翻译表

算法术语生物意义实际意义
个体一只生物一个候选解
基因DNA编码解的表示(如二进制串)
适应度生存能力目标函数值
选择适者生存保留好解
重组有性繁殖混合两个解
突变基因突变随机微调解

四、连续空间搜索:微积分上场了

📏 问题:机场建在哪?

“要在罗马尼亚建3个机场,让所有城市到最近机场的距离平方和最小”。

挑战

  • 每个机场有(x,y)坐标 → 6维连续空间;
  • 无限多个可能位置;
  • 传统“走一步看看”失效;

三大武器

1. 网格离散化法
把地图画成格子:
原来:机场可以建在(47.123, 28.456)
现在:只能建在(47,28)、(47,29)...
  • 优点:变回离散问题,能用老方法;
  • 缺点:精度低,网格太细则点太多;
2. 梯度上升法(最陡爬坡)
def 梯度上升():
    当前位置 = (x1,y1,x2,y2,x3,y3)
    while True:
        梯度 = 计算最陡方向()  # 微积分求导
        if 梯度几乎为0:
            break  # 到顶了!
        当前位置 += 学习率 × 梯度  # 朝着最陡方向走一步

物理意义:就像在山坡上倒一桶水,看水流向哪,就往哪走。

3. 牛顿法(开天眼)
  • 普通梯度:只知道“这个方向最陡”;
  • 牛顿法:知道“顶峰大概在那边,一步跳过去”;
  • 数学:用二阶导数(曲率)预测最优位置;
  • 风险:可能跳过头或跳到坑里;

五、非确定性环境:当世界爱开玩笑

🤪 新敌人:不稳定的吸尘器

  • 正常吸尘器:吸→干净(确定)
  • 抽风吸尘器
    • 70%概率:吸→干净
    • 20%概率:吸→左右都干净
    • 10%概率:吸→反而弄脏了

🌳 与或搜索树:准备Plan B

现在我是谁? → 我能做什么? → 世界会怎么反应? → 每种情况我该怎么办?
    OR节点           OR节点           AND节点              OR节点
(我的选择)     (我的动作)     (世界的反应)       (我的应对)

示例:抽风吸尘器的应变计划

如果我在[脏,脏]位置:
    选择:吸尘
    结果1(70%):[干净,脏] → 去右边再吸
    结果2(20%):[干净,干净] → 胜利!
    结果3(10%):[脏,脏](没变化)→ 再吸一次

关键:每个“世界可能反应”的分支都必须有应对方案!


六、部分可观测环境:我在哪?我是谁?

🕶️ 新挑战:蒙眼寻路

  • 你只知道:“我可能在北京、上海或广州”;
  • 每个动作后,根据有限感知更新“可能在哪”;

信念状态:我的可能性清单

时刻0信念:{北京,上海,广州}  # 可能性3选1
动作:坐高铁2小时
时刻1信念:{北京→天津,上海→南京,广州→长沙}
感知:听到“煎饼果子”叫卖声
时刻2信念:{天津}  # 只有天津有煎饼果子!

信念状态搜索

搜索的不是具体状态,而是信念状态的转换:
{可能性集合1} → 动作A → {可能性集合2} → 感知P → {可能性集合3}

核心困难:信念状态数量 = 2^(实际状态数) → 指数爆炸!


七、在线搜索:一边走一边学

🧭 现实场景

  • 你被空投到陌生森林
  • 没地图,GPS没信号
  • 天黑前必须找到营地

在线 vs 离线

离线搜索(第3章)在线搜索(本章)
先规划完整路线再出发走一步看一步
像用地图APP规划全程像在迷宫摸墙走
“闭着眼睛”执行计划眼睛一直睁着

关键技术

  1. 爬山:在当前位置找看起来最好的方向
  2. 随机游走:防止困在局部
  3. 学习启发式:走过的路记住代价,更新地图
  4. 安全探索:留条返回已知区域的后路

🎪 第4章总结

环境类型搜索算法好比...
连续空间梯度上升蒙眼摸象,靠手感找最高点
多峰值地形模拟退火开始允许跳崖,慢慢变稳重
群体优化进化算法生物进化:交配+突变+自然选择
非确定性与或树制定带“如果...就...”的应变计划
部分可观测信念状态搜索玩“猜猜我在哪”游戏,不断排除选项
未知环境在线搜索探险家:探索+记录+学习

💡 生存法则金句

  1. 当世界确定时:用第3章,规划完整路线;
  2. 当世界抽风时:准备Plan B、Plan C...;
  3. 当你在迷雾中时:记录所有可能性,用感知排除;
  4. 当地图空白时:走一步记一步,慢慢填图;
  5. 当寻找最佳状态时:允许暂时后退,为了最终更高;
  6. 当一个人不够时:组队搜索,信息共享;

终极智慧:没有万能算法!根据环境的“调皮程度”选择合适的生存策略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值