2022秋季《人工智能》_ch3

本文探讨了图搜索过程中的Open表重排及其原则,通过实例展示了爬山法和分支界限搜索在从A到J的路径寻找中应用。同时,深入解析了用天平找假币的方法,并结合状态空间和逻辑推理策略。最后,详细讲解了A*算法在有限与无限图中的应用及最优路径保证。
摘要由CSDN通过智能技术生成

题目

  1. 什么是图搜索过程?其中,重排Open表意味着什么?重排的原则是什么?

    图搜索过程:一种系统地探索图的点和边、在图中寻找路径的过程

    重排Open表:根据评价函数 f f f,重新对当前的搜索状态进行评估,以期找到当前最有希望的结点

    重排的原则:评价函数 f f f

  2. 试给出爬山法和分支界限搜索算法搜索图所示的从A到J的搜索路径,其中g(n)用节点深度表示,h(n)的值在图中显示。

    在这里插入图片描述

    在这里插入图片描述

  3. 怎么用一架天平3次称出13个硬币中唯一的然而未知轻重的假币(已知有标准的硬币)
    方法一:状态空间
    状态设置:
    • 标记每枚硬币的状态为

      • 标准币: S S S

      • 标准币或轻币: L S LS LS

      • 标准币或重币: H S HS HS

      • 标准币或轻币或重币: L H S LHS LHS

    • 记当前剩余称量次数为 t t t

    用五元组 ( l h s , l s , h s , s , t ) (lhs,ls,hs,s,t) (lhs,ls,hs,s,t)描述当前状态,其中 l h s , l s , h s , s , t lhs,ls,hs,s,t lhs,ls,hs,s,t表示对应状态的硬币的枚数。则题设可以翻译为由初始状态 ( 13 , 0 , 0 , 0 , 3 ) (13,0,0,0,3) (13,0,0,0,3)到目标状态 ( 0 , 1 , 0 , 12 , 0 ) (0,1,0,12,0) (0,1,0,12,0) ( 0 , 0 , 1 , 12 , 0 ) (0,0,1,12,0) (0,0,1,12,0),约束条件为 t ≥ 0 t\geq0 t0

    变化设置:

    用函数PICKUP([lhs_1,ls_1,hs_1,s_1],[lhs_2,ls_2,hs_2,s_2])表示本次分别从 ( l h s , l s , h s , s , t ) (lhs,ls,hs,s,t) (lhs,ls,hs,s,t)中取出了 l h s 1 , l s 1 , h s 1 , s 1 lhs_1,ls_1,hs_1,s_1 lhs1,ls1,hs1,s1个硬币放到了天平的左边,取出了 l h s 2 , l s 2 , h s 2 , s 2 lhs_2,ls_2,hs_2,s_2 lhs2,ls2,hs2,s2个硬币放到了天平的右边。令PICKUP()=-1,0,1分别表示天平左倾、平衡、右倾,每次称量后状态转化为 ( l h s ′ , l s ′ , h s ′ , s ′ , t − 1 ) (lhs',ls',hs',s',t-1) (lhs,ls,hs,s,t1)

    1. 左倾

      PICKUP=-1
      s ′ = s + l s 1 + h s 2 + ( l h s − l h s 1 − l h s 2 ) + ( l s − l s 1 − l s 2 ) + ( h s − h s 1 − h s 2 ) = s + l s − l s 2 + h s − h s 1 + l h s − ( l h s 1 + l h s 2 ) l s ′ = l s 2 + l h s 2 h s ′ = h s 1 + l h s 1 l h s ′ = 0 \begin{aligned} s' &= s+ls_1+hs_2+(lhs-lhs_1-lhs_2)+(ls-ls_1-ls_2)+(hs-hs_1-hs_2) \\ &= s+ls-ls_2+hs-hs_1+lhs-(lhs_1+lhs_2) \\ ls' &= ls_2+lhs_2 \\ hs' &= hs_1+lhs_1 \\ lhs' &= 0 \end{aligned} slshslhs=s+ls1+hs2+(lhslhs1lhs2)+(lsls1ls2)+(hshs1hs2)=s+lsls2+hshs1+lhs(lhs1+lhs2)=ls2+lhs2=hs1+lhs1=0

      • 在左天平状态为 L S LS LS的硬币,在右天平的状态为 H S HS HS和天平下的硬币都是标准型;
      • 右天平原有的 l s 2 ls_2 ls2个轻标准型硬币仍然为轻标准型,右天平的 l h s 2 lhs_2 lhs2个轻重标准型硬币改为轻标准型;0
      • 左天平原有的 h s 1 hs_1 hs1个重标准型硬币仍然为重标准型,左天平的 l h s 1 lhs_1 lhs1个轻重标准型硬币改为重标准型;
      • 只要不平衡,就不存在轻重标准型的硬币, l h s ′ = 0 lhs'=0 lhs=0
    2. 平衡

      PICKUP=0
      s ′ = s + l s 1 + l s 2 + h s 1 + h s 2 + l h s 1 + l h s 2 l s ′ = l s − l s 1 − l s 2 h s ′ = h s − h s 1 − h s 2 l h s ′ = l h s − l h s 1 − l h s 2 \begin{aligned} s' &= s+ls_1+ls_2+hs_1+hs_2+lhs_1+lhs_2 \\ ls' &= ls-ls_1-ls_2 \\ hs' &= hs-hs_1-hs_2 \\ lhs' &= lhs-lhs_1-lhs_2 \end{aligned} slshslhs=s+ls1+ls2+hs1+hs2+lhs1+lhs2=lsls1ls2=hshs1hs2=lhslhs1lhs2

      • 在天平上的所有硬币都是标准型
      • 左右天平上的轻标准型、重标准型均改为标准型
      • 平衡情况下,轻重标准型硬币需要减去天平上的轻重标准型
    3. 右倾

      PICKUP=1
      s ′ = s + l s − l s 1 + h s − h s 2 + l h s − ( l h s 1 + l h s 2 ) l s ′ = l s 1 + l h s 1 h s ′ = h s 2 + l h s 2 l h s ′ = 0 \begin{aligned} s' &= s+ls-ls_1+hs-hs_2+lhs-(lhs_1+lhs_2) \\ ls' &= ls_1+lhs_1 \\ hs' &= hs_2+lhs_2 \\ lhs' &= 0 \end{aligned} slshslhs=s+lsls1+hshs2+lhs(lhs1+lhs2)=ls1+lhs1=hs2+lhs2=0

      • 与天平左倾情况对称
    搜索路径

    与或图中省略:

    • 不可能情况

    • 部分称量中的对称情况

    在这里插入图片描述

方法二:逻辑推理

第一次称量:

将13个硬币(标记为 c 1 , c 2 , ⋯   , c 13 c_1,c_2,\cdots,c_{13} c1,c2,,c13)分为三堆,其中两堆各有 4 4 4枚,余下一堆有 5 5 5枚,三堆分别记为 C ( 1 , 4 ) , C ( 5 , 8 ) , C ( 9 , 13 ) C(1,4),C(5,8),C(9,13) C(1,4),C(5,8),C(9,13),称量 C ( 1 , 4 ) , C ( 5 , 8 ) C(1,4),C(5,8) C(1,4),C(5,8)

  • 若天平平衡,说明假币在 C ( 9 , 13 ) C(9,13) C(9,13)中。任取 C ( 9 , 13 ) C(9,13) C(9,13)中的 3 3 3枚,以 C ( 9 , 11 ) C(9,11) C(9,11)为例,与 C ( 1 , 3 ) C(1,3) C(1,3)称量,

    第二次称量:

    • 若天平平衡,说明假币为 c 12 c_{12} c12 c 13 c_{13} c13,称量 c 12 c_{12} c12 c 1 c_{1} c1

      第三次称量:

      • 若天平平衡,则假币为 c 13 c_{13} c13
      • 若天平不平衡,则假币为 c 12 c_{12} c12
    • 若天平不平衡,说明假币为 c 9 c_{9} c9 c 10 c_{10} c10 c 11 c_{11} c11;且若 C ( 9 , 11 ) C(9,11) C(9,11)更轻/重,则假币重量更轻/重。称量 c 9 c_9 c9 c 10 c_{10} c10

      第三次称量:

      • 若天平平衡,则假币为 c 11 c_{11} c11
      • 若天平不平衡,则 c 9 , c 10 c_9,c_{10} c9,c10中较重的那枚为假币。
  • 若天平不平衡,则 C ( 9 , 13 ) C(9,13) C(9,13)中均为良币;假设 C ( 1 , 4 ) C(1,4) C(1,4)更重,则 C ( 1 , 4 ) C(1,4) C(1,4)中有一枚重币或 C ( 5 , 8 ) C(5,8) C(5,8)中有一枚轻币。任取 C ( 1 , 4 ) C(1,4) C(1,4)中的 3 3 3枚和 C ( 5 , 8 ) C(5,8) C(5,8)中的 2 2 2枚,以 c 1 , c 2 , c 3 , c 5 , c 6 c_1,c_2,c_3,c_5,c_6 c1,c2,c3,c5,c6为例,与 C ( 9 , 13 ) C(9,13) C(9,13)称量,

    第二次称量:

    • 若天平平衡,则称量 c 7 , c 8 c_7,c_8 c7,c8

      第三次称量
      • 若天平平衡,则假币为 c 4 c_4 c4
      • 若天平不平衡,则 c 7 , c 8 c_7,c_8 c7,c8中较轻的那枚为假币。
    • 若天平不平衡,假设 c 1 , c 2 , c 3 , c 5 , c 6 c_1,c_2,c_3,c_5,c_6 c1,c2,c3,c5,c6重于 C ( 9 , 13 ) C(9,13) C(9,13),则假币更重,则假币在 C ( 1 , 3 ) C(1,3) C(1,3)中,称量 c 1 , c 2 c_1,c_2 c1,c2

      第三次称量:

      • 若天平平衡,则假币为 c 3 c_3 c3
      • 若天平不平衡,则 c 1 , c 2 c_1,c_2 c1,c2中较重的那枚为假币。
  1. 给定4升和3升的水壶各一个。水壶上没有刻度。可以向水壶中加水。如何在4升的壶中准确的得到2升水?

    ( X , Y ) (X,Y) (X,Y)表示当前两壶中的水量,其中 X X X表示 4 4 4升壶的水量, Y Y Y表示 3 3 3升壶的水量,题设可翻译为初始状态 ( 0 , 0 ) (0,0) (0,0)到目标状态 ( 2 , y ) (2,y) (2,y)的路径。用数组closed记录已出现过的状态,open记录当前状态可以转化成的状态。遍历open,将遍历到的状态移出open,若遍历到closed中的状态,那么当前搜索停止,探索open中的下一个情况;若遍历到新状态,则将新状态加入closed,在当前层搜索结束后更新open表。

    在这里插入图片描述

  2. 对于A* 算法,证明下面的结论:

    a) 对于有限图,A* 算法一定会在有限步内终止;

    b) 对于无限图,只要从初始节点到目标节点有路径存在,则A* 算法也必然会终止;

    c) 若存在路径,则A* 算法一定会终止在最优路径上。

    证明
    a)

    A*算法终止有两种情况:

    1. 成功找到解,退出;
    2. 查找失败,open表为空时退出。

    对于情况1,有限图条件下必然为有限步;对于情况2,每次循环会弹出open表中的一个结点,且open表中结点个数为有限个,于是循环次数一定有限。得证。

    b)

    下用反证法证明:假设无限图从初始节点到目标节点有路径存在,A*不终止,

    • 先证引理1:对无限图,若有从初始节点s到目标节点T的路径,则A*不结束时,在open表中即使最小的一个 f f f值也将增到任意大,或有 f ( n ) > f ∗ ( S ) f(n)>f^*(S) f(n)>f(S)

      nopen表中任意一点,记 d ∗ ( n ) d^*(n) d(n)为从初始节点Sn最短路径的长度,记 ϵ \epsilon ϵ​为边耗散值的最小值,则
      g ( n ) ≥ g ∗ ( n ) ≥ d ∗ ( n ) ⋅ ϵ g(n)\geq g^*(n)\geq d^*(n)\cdot \epsilon g(n)g(n)d(n)ϵ
      易得
      f ( n ) ≥ g ( n ) ≥ d ∗ ( n ) ⋅ ϵ f(n)\geq g(n)\geq d^*(n)\cdot \epsilon f(n)g(n)d(n)ϵ
      若A*不终止,open表中总有后续节点加入,又因为图为无限图,所以 d ∗ ( n ) d^*(n) d(n)会增加到任意大;又有 ϵ > 0 \epsilon>0 ϵ>0,所以 f ( n ) f(n) f(n)会增加到无限大。而因为小于当前 f f f值的结点都会被考察后放入closed表,所以 f ( n ) ≥ f ∗ ( S ) f(n)\geq f^*(S) f(n)f(S)

    • 再证引理2:若从初始节点到目标节点有路径存在,A*结束前,open表中必存在 f ( n ) ≤ f ∗ ( S ) f(n)\leq f^*(S) f(n)f(S)

      存在一个结点nn在最佳路径上,则有
      f ( n ) = g ( n ) + h ( n ) = g ∗ ( n ) + h ( n ) ≤ g ∗ ( n ) + h ∗ ( n ) = f ∗ ( n ) = f ∗ ( S ) \begin{aligned} f(n) &= g(n)+h(n) \\ &= g^*(n)+h(n) \\ &\leq g^*(n)+h^*(n) \\ &= f^*(n) \\ &= f^*(S) \end{aligned} f(n)=g(n)+h(n)=g(n)+h(n)g(n)+h(n)=f(n)=f(S)

    由引理1,若A*不结束,则对open表中的所有结点n f ( n ) > f ∗ ( S ) f(n)>f^*(S) f(n)>f(S);而由引理2,由于从初始节点到目标节点有路径存在,那么必存在结点n',使得 f ( n ′ ) ≤ f ∗ ( S ) f(n')\leq f^*(S) f(n)f(S)。矛盾,所以假设不成立。得证。

    c)

    根据a}和b),A*一定找到一条路径结束。

    下用反证法证明:假设找到的路径s → \rightarrow T不是最佳路径,则
    f ( T ) = g ( T ) > f ∗ ( S ) f(T)=g(T)> f^*(S) f(T)=g(T)>f(S)
    由引理2,open中存在结点n使得 f ( n ) ≤ f ∗ ( S ) f(n)\leq f^*(S) f(n)f(S),则
    f ( n ) ≤ f ∗ ( S ) < f ( T ) f(n)\leq f^*(S) < f(T) f(n)f(S)<f(T)
    此时A*应选择n扩展,而不是T,与A*选择了T作为结束矛盾,所以假设不成立。得证。

定找到一条路径结束。

下用反证法证明:假设找到的路径s → \rightarrow T不是最佳路径,则
f ( T ) = g ( T ) > f ∗ ( S ) f(T)=g(T)> f^*(S) f(T)=g(T)>f(S)
由引理2,open中存在结点n使得 f ( n ) ≤ f ∗ ( S ) f(n)\leq f^*(S) f(n)f(S),则
f ( n ) ≤ f ∗ ( S ) < f ( T ) f(n)\leq f^*(S) < f(T) f(n)f(S)<f(T)
此时A*应选择n扩展,而不是T,与A*选择了T作为结束矛盾,所以假设不成立。得证。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值