人工智能-期末复习

本文详细介绍了人工智能中的搜索算法,重点讲解了启发式搜索和A*算法,同时探讨了博弈树的概念,包括Minimax算法和Alpha-Beta剪枝。此外,还涵盖了约束满足问题的解决方法,如回溯法和弧相容性。最后,概述了机器学习的基础知识,包括监督学习、无监督学习和强化学习的主要算法和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

搜索算法Heuristic Search

  • 启发式搜索

    • 定义: 利用问题拥有的启发信息来引导搜索,达到减少搜索范围、降低问题复杂度的目的,这种利用启发信息的搜索过程称为启发式搜索
    • 启发函数h(n)
      • 定义: 提供从给定节点到目标节点(当有多个目标节点时选取其中最小一个)的代价估计,而当该节点为目标节点时对应的值应为0
      • 形式: f(n) = h(n) + g(n),其中g(n)仅仅表示从开始节点到该节点的开销,但是h(n)可以表示从当前节点到目标节点的估计
    • 容许界限
      • 启发式函数的容许界限定义为,对于所有节点的h(n)必然小于该节点到目标节点的最优路径长度,也就是说容许界限决定了h(n)预估值必然小于实际花销
      • h*(n)为最优路径长度值,则对于所有节点n,都有h(n) <= h*(n)
  • 经典启发函数A*算法

    • A*算法中,通过从点A开始,检查相邻节点的方式,向外扩展直到找到目标节点且当且仅当目标节点从开启列表中移出时搜索结束
    1. 开启列表中找到f(n)值最小/大的节点,并寻找该节点的所有邻近且不在关闭列表中的节点
    2. 对邻近节点处理,设置其临时的f(n)值,其中h(n)为该邻近节点到目标节点的代价估值,g(n)则为1中找到的节点的g(no)值 + 该节点到该邻近节点的实际代价
    3. 检查开启列表,当邻近节点不在列表中时则加入,若在则检查临时的f(n)值是否大/小于列表中的值,若满足要求则更新节点信息
    4. 重复步骤1,直到从开启列表中找到的节点为目标节点时停止
  • 与贪心搜索比较,优缺点、实例:

    • 实例:
      • BFS(广度优先->一层接一层)是A*算法的特列,其中h(n)=0,同Dilkstra算法 -> f = g
      • 贪婪算法GBF则是f(n)=0,是最简单的启发式函数,可能陷入死循环 -> f = h
    • 优点:
      • A*算法结合二者优点,考虑当前代价以及预估代价,是最有效的直接搜索算法
    • 缺点:
      • A*算法空间增长是指数级别,且不保证获得最优解
  • 博弈树

    • 特征: 博弈树双方都有各自利益需求且冲突,博弈双方绝对理性以达到最优状态
    • 特质: 零和问题,一方获胜另一方必输->冲突,明确的不存在偶然因素且所有状态都可观察,不存在隐藏信息
  • MinMax

    • MinMax的基础是以先手A为视角建立决策树,具体为列出所有情况并作出奖惩值,此时再从下往上传递值并最终获得路径图即为于A的最优决策路径
    • 由于该决策树是以A为先手,树的叶子节点即末端节点则为当前A能取得的结果值,由于博弈是零和问题,A方会选择当前情况下的最优值,而另一方B则会选择A能获取的最小值
    • 在此基础上,即决策树向上值传递的方法即MinMax问题的关键,即当B选择时都会选择下一层中最小值以供上一层(下轮)的A选择其内的最大值在这里插入图片描述
  • Alpha-Beta剪枝

    • 剪枝则基于上述的零和问题中A方选择最大值,B方选择最小值 的规律对决策树的路径搜索的优化方案
    • A方选择时,当该层未有取值或下层取值中没有比该层取值集合中最小值大的值时,选择下层中最大的值并更新集合,当搜索下层取值时发现第一个比该层最小值大的值时,取该值并停止继续搜索,转而搜索下一个兄弟节点,B方类似,取第一个小于该层最大取值集合中最大的值的值作为该节点值
    • 无论是否取所能取得最优值,最终结果依然会被A/B方筛选,因此先一步筛选减少了后续的搜索层次,减少分支
    • 剪枝问题的根本在于博弈双方是理性的在这里插入图片描述
    • 剪枝的流程/规律
      1. 同一层的第一个节点为根的子树的枝不剪
      2. 除第一个节点外,从左到右查看子节点的值,直到遇到第一个符合当前情景的值,即比较当前流程下找到的最小值,根据α/β取第一个大/小于最小值的值作为子树根节点的值,剪掉剩余的枝(α部取第一个大于最小值)
      3. 以整棵树的根节点开始,从左到右处理 (上到下从左到右) ,类似中缀表达式的遍历过程,因此当前的最小值适用于整棵树无关那一层的问题在这里插入图片描述在这里插入图片描述
  • 约束满足问题CSP

    • 定义: 由一个变量集合和一个约束集合组成。问题的一个状态是由对一些或全部变量的一个赋值定义的完全赋值:每个变量都参与的赋值。问题的解是满足所有约束的赋值,或更进一步,使目标函数最大化。
    • 约束图: CSP问题的约束图则是由代表变量的圆以及代表约束关系的直线组成(无向边表示相互约束),即在这里插入图片描述
  • 回溯法解决CSP

    • 对于CSP的回溯法即从当前可取变量集中**(此时忽略约束条件,只观察下一层可取变量,与前向检测法相呼应)**选择一个赋值并弹出变量集合和更新变量约束集合,当变量集合不为空且无可赋值变量时则回溯上一层选取另一个变量赋值直到变量集合为空
    • CSP的回溯法处理关键在于下一个选取哪个变量赋值以及赋值后对其他变量约束条件的影响的判断
    • 基本原则:
    1. 变量排序:MRV 选择最少剩余值(可选值)的变量优先赋值
    2. 值排序:度启发 在上述选择变量的可选值集合中优先选择对其他变量产生最多约束的值给当前变量赋值 -> 减少后续的分支
    • 在这里插入图片描述
  • 前向检测

    • 前向检测是相对于回溯法中直接获取下层可选变量集合进行优化,即在获取集合前先通过约束条件缩减变量集合,若可选变量集合为空则回溯,直到变量集合为空则停止在这里插入图片描述
  • MAC 维持弧相容

    • 相容即不违反任何约束条件的赋值称为相容的或合法的赋值
    • 弧相容即某变量值域中的所有取值满足该变量的所有二元约束 -> 一元约束即类似 A != green只涉及一个变量A, 二元约束即类似A != B涉及两个变量A、B之间的关系
    • 弧可以看作是约束图中的两点与之间的直线
    • MAC就是用于对变量赋值后检测未赋值变量是否满足弧相容即是否有可取值,与前向检测略微不同,前者是判断整个约束图的剩余待赋值变量是否满足要求而后者只判断下一个变量的可取变量集合是否未空,其中前者通过AC-3算法检测弧相容
    • AC-3步骤
    1. 给定变量集合X、变量值域集合D、约束条件集合C即(X,D,C)->D为X取值的集合的集合
    2. 初始时,按照上述对当前选定变量Xj赋选定值后,修改该变量的值域集合Dj,将变量Xj产生约束的所有弧如(Xi,Xj)放入工作集worklist中(如Xi <= Xj,Xj取值对Xi有约束,Xi->Xj表示Xi受Xj约束
    3. 函数ac_3从工作集中弹出一个弧即(Xi,Xj),遍历检查Di中的所有取值判断是否在Dj中至少存在一个取值使得Di的取值和Dj取值满足变量(Xi,Xj)之间的约束(即函数revise),若有,则弹出下一个弧再次检查;若无则需要将Di中不存在满足约束的取值从Di中删除,处理完成后判断Di是否为空,若为空则表示该变量已无可取变量,弧不相容,若不为空则将变量Xi产生的约束放入到工作集中,继续步骤3
    • AC-3的时间复杂度为(c个二元约束,变量值域最大为d个元素)
      O ( c d 3 ) O(cd^3) Ocd3
    function ac_3 (X, D, C){
         
        while (!worklist_empty()){
         
            (Xi,Xj)=remove_first(worklist)
            if revise(csp,Xi,Xj){
         
                if (sizeof(Di)==o){
         
                    return false;
                }
                for each Xk in Xi.NEIGHBORD-{
         Xj} do{
         
                    add(Xk,Xi)to worklist;
                }
            }
        }
        return true;
    }
    function revise(csp,xi,xj){
         
        revised=false;
        for each x in Di{
         
            if(no value y in Dj allows(x,y) to satisfy the constraint between Xi and Xj){
         
                delete x from Di;
                revised=true;
            }
        }
        return revised;
    }  
    
  • GAC 通用弧相容

    • MAC是变量之间只满足二元约束,而GAC中变量之间可能满足多元约束即受多个变量约束
    • 当所有变量满足多元约束时称该CSP是通用弧相容
  • GAC算法

    • GAC算法原理同AC-3,更新所有弧直接工作集为空,条件不满足则回溯,也和前向检验类似
    • 经典实例问题
      • 数独 ,即变量之间相互约束,多元约束->GAC,与弧相容问题类似解法,每次取变量后都需要更新约束集合直到满足所有约束条件在这里插入图片描述
  • 贝叶斯准则
    P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) P ( X ) P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)} P(YX)=P(X)P(XY)P(Y)

    • 上述准则可用部分重叠的关系图理解,交叉面积S固定下通过X、Y之间的面积占比比例可以获得即
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值