状态空间表示法例题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请问,老农如何才能把它们全部安全摆渡到北 岸?
1.自然语言描述
1)老农携带羊羔过河,把狐狸和白菜留在南岸; 2)老农到达北岸,把羊羔留在北岸,并独自回到南岸; 3)老农携带狐狸过河,把白菜留在南岸; 4)老农到达北岸,把狐狸留下,并带上羊羔回到南岸; 5)老农把羊羔留在南岸,携带白菜过河; 6)老农到达北岸,把白菜和狐狸留在北岸,独自回到南岸; 7)老农最后携带羊羔过河,到达北岸。问题就此解决。
[例1] 重排九宫问题
2 83 1 64 2 7 ■5
初始状态
1 23 ■8 4 765
目标状态
要求:用尽可能少棋步能由初始状态到达目标 状态。
283 164 75
初始状态
283 164
75
283 14 765
283 164 75
283 64
175
283 14
765
23 184 765
283 14 765
(S,N,N,N):老农在南岸,其他三个对象在北岸 (N,S,S,S):老农在北岸,其他三个对象在南岸
羊羔和白菜在同一岸 (羊羔要吃白菜)
(S,S,N,N):老农和狐狸在南岸,羊羔和白菜在北岸 (N,N,S,S):老农和狐狸在北岸,羊羔和白菜在南岸
狐狸和羊羔在同一岸 (狐狸要吃羊羔)
(S,N,N,S):老农和白菜在南岸,狐狸和羊羔在北岸 (N,S,S,N):老农和白菜在北岸,狐狸和羊羔在南岸
234 18 765
28 14 3 765
28 163 754
2 3 283 283 684 64 674 175 175 1 5
目标状态
283 2 3 283 14 184 164
765 765 7 5
283 2 3 283 16 186 156
754 754 7 4
[例2] 农夫过河问题
一个老农携带一只狐狸、一头羊羔和一筐白菜, 要从南岸过河到北岸。岸边有一条小船,只有老农 自己能划船,而且除了老农以外,每次只能再带一 样东西过河。在整个渡河过程中,无论什么情况, 若老农不在场时,则不允许狐狸和羊羔单独相处, 否则羊羔会遭殃;羊羔也不得与白菜放在一起,否 则羊羔会吃白菜。
假设对方先走,我方是否有必胜策略?
对方先走 (6,1)
(7) (5,2)
2.状态和操作
用符号表示: M:代表老农(farmer) F:代表狐狸(fox) L:代表羊羔(lamb) C:代表白菜(cabbage) S:表示在南岸 N:表示在北岸 S-N:表示从南到北 N-S :表示从北到南
用(M,F,L,C)表示四个对象的一个状态, 可有S和N两个值;
改变状态的操作,可分别用1,0表示。表示 对象“在船上”和“不在船上”两个值。
如:初始状态:(S,S,S,S),
终止状态:(N,N,N,N),
中间状态:S-N(1,1,0,0)
3.状态约束分析
因老农、狐狸、羊羔和白菜都有2种状态,即在南岸和北岸,所 以4个对象的总状态数为2*2*2*2=16种,按条件要求,有几种状态不 能存在,如表所示。所以只有10种可能状态。
老农和其他三个对象不 在同一岸(狐狸要吃羊 羔,羊羔要吃白菜)
算符: A( i,j):表示把A从第i号针移到第j号针上
B(i,j):表示把B从第i号针移到第j号针上 共12个算符:
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)
i,j∈{1,2,3}
M(A 1 2)
1 23
S
' 1
B
A
1 2M ( B3 1 3 )
A
B
S
' 2
M(A 3 2) 1 23 S3 AB
1
M(A 2 3) 23
S
' 3
AB
目标状态
二阶汉诺塔问题的状态空间图
目标状态
[附录] 分钱币问题
假设有7个钱币,任一选手只能将已分好 的一堆钱币分成两堆个数不等的钱币,两 位选手轮流进行,直到每一堆都只有一个 或两个钱币,不能再分为止,哪个遇到不 能分的情况,则就为输。
283 16 754
83 264 175
283 64 175
83 214 765
283 714
65
23 184 765
23 184 765
283 14 765
28 14 3 765
283 16 754
28 163 754
83 264 175
83 214 765
283 123 714 84 6 5 765
S0=(1,1)
S1=(1,2)
S2=(1,3)
S3=(2,1)
S4=(2,2)
S5=(2,3)
S6=(3,1)
S7=(3,2)
S8=(3,3)
二阶梵塔问题状态表示
二阶梵塔状态空间图
12
A M ( A 1 3 )B 111 2 ) 2 3
B
S A
2
3
S0
初始状态
M(盘符,i, j) 盘符=A,B
5.操作约束
根据题意,在10种可能的安全状态里,只有4种 是有可能的操作: 1)老农独自过河(包括从南岸到北岸和从北岸到南岸,下同) 2)老农携带狐狸过河 3)老农携带羊羔过河 4)老农携带白菜过河
6.问题求解过程的表示
(S,S,S,S) S--N(1,0,1,0)
(N,S,N,S) N--S(1,0,0,0)
(S,S,N,S)
S--N(1,1,0,0)
S--N(1,0,0,1)
(N,N,N,S) N--S(1,0,1,0)
(N,S,N,N) N--S(1,0,1,0)
(S,N,S,S) S--N(1,O,0,1)
N-S(1,1,0,0) ( S , S , S , N )
S--N(1,1,0,0) (N,N,S,N)
N--S(1,0,0,0)
(S,N,S,N) S--N(1,0,1,0)
(N,N,N,N)
[例3] 二阶梵塔问题(P53)
解:设立柱 1、2和3以及两个圆盘A和B 。 用Sk=( Sk0, Sk1)表示问题状态,Sk0表示圆盘A所在的立柱,Sk1表 示圆盘B所在的立柱,全部可能的状态共有九种: S0=( 1,1), S1=( 1,2), S2=( 1,3) S3=( 2,1), S4=( 2,2), S5=( 2,3) S6=( 3,1), S7=( 3,2), S8=( 3,3) 问题的初始状态集合是S={S0},目标状态集合是G={S4,S8}。
1.自然语言描述
1)老农携带羊羔过河,把狐狸和白菜留在南岸; 2)老农到达北岸,把羊羔留在北岸,并独自回到南岸; 3)老农携带狐狸过河,把白菜留在南岸; 4)老农到达北岸,把狐狸留下,并带上羊羔回到南岸; 5)老农把羊羔留在南岸,携带白菜过河; 6)老农到达北岸,把白菜和狐狸留在北岸,独自回到南岸; 7)老农最后携带羊羔过河,到达北岸。问题就此解决。
[例1] 重排九宫问题
2 83 1 64 2 7 ■5
初始状态
1 23 ■8 4 765
目标状态
要求:用尽可能少棋步能由初始状态到达目标 状态。
283 164 75
初始状态
283 164
75
283 14 765
283 164 75
283 64
175
283 14
765
23 184 765
283 14 765
(S,N,N,N):老农在南岸,其他三个对象在北岸 (N,S,S,S):老农在北岸,其他三个对象在南岸
羊羔和白菜在同一岸 (羊羔要吃白菜)
(S,S,N,N):老农和狐狸在南岸,羊羔和白菜在北岸 (N,N,S,S):老农和狐狸在北岸,羊羔和白菜在南岸
狐狸和羊羔在同一岸 (狐狸要吃羊羔)
(S,N,N,S):老农和白菜在南岸,狐狸和羊羔在北岸 (N,S,S,N):老农和白菜在北岸,狐狸和羊羔在南岸
234 18 765
28 14 3 765
28 163 754
2 3 283 283 684 64 674 175 175 1 5
目标状态
283 2 3 283 14 184 164
765 765 7 5
283 2 3 283 16 186 156
754 754 7 4
[例2] 农夫过河问题
一个老农携带一只狐狸、一头羊羔和一筐白菜, 要从南岸过河到北岸。岸边有一条小船,只有老农 自己能划船,而且除了老农以外,每次只能再带一 样东西过河。在整个渡河过程中,无论什么情况, 若老农不在场时,则不允许狐狸和羊羔单独相处, 否则羊羔会遭殃;羊羔也不得与白菜放在一起,否 则羊羔会吃白菜。
假设对方先走,我方是否有必胜策略?
对方先走 (6,1)
(7) (5,2)
2.状态和操作
用符号表示: M:代表老农(farmer) F:代表狐狸(fox) L:代表羊羔(lamb) C:代表白菜(cabbage) S:表示在南岸 N:表示在北岸 S-N:表示从南到北 N-S :表示从北到南
用(M,F,L,C)表示四个对象的一个状态, 可有S和N两个值;
改变状态的操作,可分别用1,0表示。表示 对象“在船上”和“不在船上”两个值。
如:初始状态:(S,S,S,S),
终止状态:(N,N,N,N),
中间状态:S-N(1,1,0,0)
3.状态约束分析
因老农、狐狸、羊羔和白菜都有2种状态,即在南岸和北岸,所 以4个对象的总状态数为2*2*2*2=16种,按条件要求,有几种状态不 能存在,如表所示。所以只有10种可能状态。
老农和其他三个对象不 在同一岸(狐狸要吃羊 羔,羊羔要吃白菜)
算符: A( i,j):表示把A从第i号针移到第j号针上
B(i,j):表示把B从第i号针移到第j号针上 共12个算符:
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)
i,j∈{1,2,3}
M(A 1 2)
1 23
S
' 1
B
A
1 2M ( B3 1 3 )
A
B
S
' 2
M(A 3 2) 1 23 S3 AB
1
M(A 2 3) 23
S
' 3
AB
目标状态
二阶汉诺塔问题的状态空间图
目标状态
[附录] 分钱币问题
假设有7个钱币,任一选手只能将已分好 的一堆钱币分成两堆个数不等的钱币,两 位选手轮流进行,直到每一堆都只有一个 或两个钱币,不能再分为止,哪个遇到不 能分的情况,则就为输。
283 16 754
83 264 175
283 64 175
83 214 765
283 714
65
23 184 765
23 184 765
283 14 765
28 14 3 765
283 16 754
28 163 754
83 264 175
83 214 765
283 123 714 84 6 5 765
S0=(1,1)
S1=(1,2)
S2=(1,3)
S3=(2,1)
S4=(2,2)
S5=(2,3)
S6=(3,1)
S7=(3,2)
S8=(3,3)
二阶梵塔问题状态表示
二阶梵塔状态空间图
12
A M ( A 1 3 )B 111 2 ) 2 3
B
S A
2
3
S0
初始状态
M(盘符,i, j) 盘符=A,B
5.操作约束
根据题意,在10种可能的安全状态里,只有4种 是有可能的操作: 1)老农独自过河(包括从南岸到北岸和从北岸到南岸,下同) 2)老农携带狐狸过河 3)老农携带羊羔过河 4)老农携带白菜过河
6.问题求解过程的表示
(S,S,S,S) S--N(1,0,1,0)
(N,S,N,S) N--S(1,0,0,0)
(S,S,N,S)
S--N(1,1,0,0)
S--N(1,0,0,1)
(N,N,N,S) N--S(1,0,1,0)
(N,S,N,N) N--S(1,0,1,0)
(S,N,S,S) S--N(1,O,0,1)
N-S(1,1,0,0) ( S , S , S , N )
S--N(1,1,0,0) (N,N,S,N)
N--S(1,0,0,0)
(S,N,S,N) S--N(1,0,1,0)
(N,N,N,N)
[例3] 二阶梵塔问题(P53)
解:设立柱 1、2和3以及两个圆盘A和B 。 用Sk=( Sk0, Sk1)表示问题状态,Sk0表示圆盘A所在的立柱,Sk1表 示圆盘B所在的立柱,全部可能的状态共有九种: S0=( 1,1), S1=( 1,2), S2=( 1,3) S3=( 2,1), S4=( 2,2), S5=( 2,3) S6=( 3,1), S7=( 3,2), S8=( 3,3) 问题的初始状态集合是S={S0},目标状态集合是G={S4,S8}。