日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题)

發布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、定義

狀態空間常記為三元組:<S,F,G>。
其中,S為初始狀態的集合,F為操作的集合,G為目標狀態的集合。
問題的狀態空間圖是一個描述該問題全部可能的狀態及相互關系的有向圖。
如考慮操作的代價,狀態空間圖就是一個賦值有向圖。

2、例題講解

1、一個獵人要帶著一只狼、一只羊、一捆草過河,但是人不在的時候,狼會吃羊、羊會吃草,獵人每次只能帶一樣東西過河。試構造狀態空間圖,并給出他們能順利過河的方案。

對于這種過河的題目,我們一般默認剛開始都在左岸,也只用分析左岸的情況,因為右岸的情況可以根據左岸的情況推出,比如左岸有一個獵人和一只羊,那么右岸就肯定有一只狼和一捆草。

第一步:列出左岸獵人、狼、羊、草的所有可能出現的狀態。

0代表不在,1代表在
或者
0、1都代表數量

獵人狼羊草
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

第二步:在列出的所有狀態中找出不可能出現的、不合法的狀態并刪去。

不可能出現的狀態一般需要自己根據生活常識判斷,這道例題沒有不可能出現的狀態,但在修道士和野人問題中有。下面我簡單說一下修道士和野人問題中的一個不可能出現的狀態,方便大家理解。

比如說,修道士、野人、船:001,這種狀態是不可能出現的,因為不可能修道士和野人全都到右岸了,船卻在左岸。

不合法的狀態通常在題目中給出。當然了,如果題目沒有規定不合法的狀態,這一步可以省略。

題目給出的不合法狀態:人不在的時候,狼會吃羊、羊會吃草。
意思就是,人不在的時候,狼和羊只能一者在,羊和草也只能一者在。
那么,人=0時,狼=羊=1或者羊=草=1的狀態是不合法狀態。
所以0011、0110、0111不合法。

在過河的題目中,一般一種狀態不可能出現或者不合法,那么該狀態的反面也不可能出現或者不合法。
比如0011不合法,因為獵人不在,羊會吃草。
那么1100也是不合法的,因為如果左岸是1100,那么右岸就是0011了。
再比如上面講到的修道士和野人問題中的001是不可能出現的,那么它的反面330也是不可能出現的。

所以說0011、0110、0111不合法,那么1100、1001、1000也不合法。
刪去這些狀態之后得下表。

獵人狼羊草
0000
0001
0010
0100
0101
1010
1011
1101
1110
1111

第三步:定義操作集合,就是可能出現的所有操作。

過河問題一般定義兩個大操作:P、Q。
P代表從左岸到右岸。
Q代表從右岸到左岸。

然后再定義小操作:
Pr:人從左岸到右岸;
Pl:人帶著狼從左岸到右岸;
Py:人帶著羊從左岸到右岸;
Pc:人帶著草從左岸到右岸;
Qr:人從右岸到左岸;
Ql:人帶著狼從右岸到左岸;
Qy:人帶著羊從右岸到左岸;
Qc:人帶著草從右岸到左岸;

可以得出下表:獵人=r、狼=l、羊=y、草=c
r=1的意思就是人在左岸,只有人在左岸時才能進行P操作;
r=0的意思就是人在右岸。只有人在右岸時才能進行Q操作。

操作前提結果
Prr=1且l≠y且y≠cr=0
Plr=l=1且y≠cr=l=0
Pyr=y=1r=y=0
Pcr=c=1且l≠yr=c=0
Qrr=0且l≠y且y≠cr=1
Qlr=l=0且y≠cr=l=1
Qyr=y=0r=y=1
Qcr=c=0且l≠yr=c=1

我個人認為,要想全面地定義操作的前提還挺難的。
比如,對于Pr操作,一般就只能看出它的前提是r=1,其他的前提就需要仔細地考慮操作的過程了。
其實,我們可以在定義操作表時,只給出簡單的前提,等畫完狀態空間圖之后再來完善l≠y、y≠c這種更細節的前提。

第四步:畫狀態空間圖,從初始狀態開始,一步一步地利用某個操作得出新的狀態,直到走到目標狀態。

初始狀態:1111
如果前一步的操作表你已經完善好了,那么可以直接根據該表找出符合前提的操作,并由此操作的結果得到新的狀態。
由于初始狀態1111中,r=l=y=1,所以只有Py操作符合前提,此操作的結果是r=y=0,因此可以得出新狀態:0101
然后再接著考慮新狀態0101符合前提的所有操作,并由此得到新狀態,重復此步驟,直到得到了目標狀態。

如果操作表還未完善,也可以直接一個一個操作地看,如果某操作能得到在第二步的狀態表中的狀態,那么該操作就符合前提,可以畫出來。第二步得到的狀態表如下:

獵人狼羊草
0000
0001
0010
0100
0101
1010
1011
1101
1110
1111

比如初始狀態1111中,由于r=1,所以只考慮P操作。
如果執行Pr操作,那么得到0111,0111不在狀態表中,因此此操作不能執行。
如果執行Pl操作,那么得到0011,0011不在狀態表中,因此此操作不能執行。
如果執行Py操作,那么得到0101,0101在狀態表中,因此此操作可以執行。
如果執行Pc操作,那么得到0110,0110不在狀態表中,因此此操作不能執行。

然后對于得到的新狀態,再一個一個操作地考慮,最終也可以得到目標狀態如下:

這個時候可以再去完善一下我們的操作表。
比如對于Pr操作,先找出所有執行了Pr操作的狀態:
1101
1010
可以根據這些狀態總結出Pr操作的前提:
r=1且l≠y且y≠c
再比如Pl操作,先找出所有執行了Pl操作的狀態:
1101
1110
可以根據這些狀態總結出Pr操作的前提:
r=l=1且y≠c
其他同理。

第五步:根據狀態空間圖回答問題。

由狀態空間圖可以看出,順利過河的方案有兩個:
a、Py-Qr-Pc-Qy-Pl-Qr-Py
b、Py-Qr-Pl-Qy-Pc-Qr-Py

2、設有三根頭朝上的火柴,允許一次倒置兩根相鄰的火柴,問能否出現三根火柴的頭都朝下的狀態?畫出狀態空間圖(標明狀態、操作),并說明是否有解,如果有解給出解。

第一步:列出火柴所有可能出現的狀態。

假設0代表頭朝上,1代表頭朝下。

火柴1火柴2火柴3
000
001
010
011
100
101
110
111

第二步:刪去不可能出現的、不合法的狀態。

題目未給出不合法狀態,省略。

第三步:定義操作集合。

題目中說:允許一次倒置兩根相鄰的火柴。
所以可能的操作為:P12、P23
P12代表倒置前兩根火柴。
P23代表倒置后兩根火柴。
這道題的操作比較簡單,也沒有什么前提,就不畫操作表了。

第四步:畫狀態空間圖,從初始狀態開始,一步一步地利用某個操作得出新的狀態,直到走到目標狀態。

根據我在例題1中給出的方法做即可。

初始狀態:000
目標狀態:111
狀態空間圖如下:

第五步:根據狀態空間圖回答問題。

可以看到,在000可以到達的狀態里沒有111,因此此題無解。

3、設有三個開關一字排開,初始狀態為 “關,開,關”,問連按三次后是否會出現 “開,開,開”或“關,關,關”的狀態?要求每次必須按下且只能按下一個開關。請畫出狀態空間圖,并求出解的情況。

假設關0開1。

琴鍵1琴鍵2琴鍵3
000
001
010
011
100
101
110
111

題目中說:每次必須按下且只能按下一個開關。
所以操作有:P1、P2、P3
P1代表按下琴鍵1;
P2代表按下琴鍵2;
P3代表按下琴鍵3。

狀態空間圖如下:

初始狀態:010
目標狀態:000、111
從初始狀態010開始連續按三次的所有可以得到000或111的情況如下,×表示不能得到000或111:

所以連按三次后可能會出現“關,關,關”的狀態,不可能出現“開,開,開”的狀態。

4、 在河的左岸有三個修道士、三個野人和一條船,修道士們想用這條船將所有的人都運過河去,但受到以下條件的限制:
(1)修道士和野人都會劃船,但船一次最多只能運兩個人;
(2)在任何岸邊野人數目都不得超過修道士,否則修道士就會被野人吃掉。
假定野人會服從任何一種過河安排,試規劃出一種確保修道士安全過河方案。

1、問題的狀態
可以用一個三元數組來描述:
S=(m, c, b)
m:左岸的修道士數
c:左岸的野人數
b:左岸的船數
右岸的狀態不必標出,因為:
右岸的修道士數 m’= 3-m
右岸的野人數 c’= 3-c
右岸的船數 b’= 1-b

圖中深藍色為不可能狀態,淺藍色為不合法狀態。

2.操作集F={p01, p10,p11,p02,p20,q01,q10,q11, q02,q20}

pmn表示船載著m個修道士、n個野人去右岸;
qmn表示船載著m個修道士、n個野人去左岸;

3.狀態空間
給出狀態和操作的描述之后,該問題的狀態空間是:
{{S0},{p01, p10,p11,p02,p20,q01,q10,q11, q02,q20},{S31}}。

4.狀態空間圖:

四條S0到S31長度相等的最短路徑,對應的操作序列就是該問題的四個最優解。

5、翻轉錢幣問題。三枚錢幣處于反、正、反狀態,每次只許翻動一枚錢幣,問連續翻動三次后,能否出現全正或全反狀態。

引入一個三元組(q0,q1,q2)來描述總狀態,錢幣正面為0,反面為1,全部可能的狀態為:
Q0=(0,0,0) ; Q1=(0,0,1); Q2=(0,1,0)
Q3=(0,1,1) ; Q4=(1,0,0); Q5=(1,0,1)
Q6=(1,1,0) ; Q7=(1,1,1)。

翻動錢幣的操作抽象為改變上述狀態的算子,
即F={a, b, c}
a:把錢幣q0翻轉一次
b:把錢幣q1翻轉一次
c:把錢幣q2翻轉一次
問題的狀態空間為<{Q5}, {a, b, c}, {Q0 Q7}>

狀態空間圖:

翻轉錢幣問題狀態空間圖的另一種表示:

6、二階梵塔問題。一號桿有A、B兩個金盤,A小于B。要求將A、B移至三號桿,每次只可移動一個盤子,任何時刻B不能在A上。

(1)有關狀態的知識:
用二元組(SA,SB)表示狀態,SA表示A所在桿號,SB表示B所在桿號。其中: SA ,SB?{1,2,3} , 則全部狀態如下:
(1,1),(1,2),(1,3)
(2,1),(2,2),(2,3)
(3,1),(3,2),(3,3)
初始狀態為(1,1),終止狀態為:(3,3) 。

(2)有關操作的知識(規則):
A(i,j)表示金盤A從第I號桿移到j號桿,B(i,j)表示金盤B從第i號桿移到j號桿,其中:i,j ∈{1,2,3},但i ≠j ,全部操作為:
A(1,2),A(1,3), A(2,1)
A(2,3),A(3,1), A(3,2)
B(1,2),B(1,3), B(2,1)
B(2,3),B(3,1), B(3,2)
分析每個操作的條件和動作,得到下表:

(3)狀態空間圖

總結

以上是生活随笔為你收集整理的人工智能:状态空间图(超详细经典例题讲解,通过例题教会你如何解决状态空间图问题)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。