1. 题目描述:
一个农夫带着一只狼,一只羊和一筐菜,欲从河的左岸坐船到右岸,由于船太小,农夫每次只能带一样东西过河,并且没有农夫看管的话,狼会吃掉羊,羊会吃菜。设计一个方案,使农夫可以无损失的过河
左岸右岸2. 题目分析:
假设人、狼、菜、羊都在河岸a,要到b河岸去。
题中的食物链关系为: 菜羊狼
所以,第一次人只能带羊到b河岸;
回到a时,人不能再将刚带过来的羊带回去,所以人是空手回到a的;
在a河岸,人有两个选择
选择一:
(2) 再次回到a后,人再到b时,不能把羊和菜同时留下,所以只能带走菜;
(3) 再次回到a时,因为狼和菜可以同时留下,所以优先选择空手过河;到a后发现只剩下羊,所以带羊过河。
选择二:
(1) 带菜到b,人再回到a时,因为不能把菜和羊同时留下,所以只能带走羊;
(2) 再次回到a后,人再到b时,不能把羊和狼同时留下,所以只能带走狼;
(3) 再次回到a时,因为狼和菜可以同时留下,所以优先选择空手过河;到a后发现只剩下羊,所以带羊过河。
解:用四元组S表示状态,即S=(L,J,M,N)
其中L:农夫 J:狼 M:羊 N:菜
用0表示在左岸岸,1表示在右岸,即S=(0,0,0,0)
目标G=(1,1,1,1)
定义操作符L(i)表示农夫带东西到右岸:
其中L:农夫 J:狼 M:羊 N:菜
用0表示在左岸岸,1表示在右岸,即S=(0,0,0,0)
目标G=(1,1,1,1)
定义操作符L(i)表示农夫带东西到右岸:
i=0 农夫自己到右岸;
i=1 农夫带狼到右岸;
i=2 农夫带羊到右岸;
i=3 农夫带菜到右岸;
i=1 农夫带狼到右岸;
i=2 农夫带羊到右岸;
i=3 农夫带菜到右岸;
定义操作符R(i)表示农夫带东西到左岸:
i=0 农夫自己到左岸;
i=1 农夫带狼到左岸;
i=2 农夫带羊到左岸;
i=3 农夫带菜到左岸;
i=0 农夫自己到左岸;
i=1 农夫带狼到左岸;
i=2 农夫带羊到左岸;
i=3 农夫带菜到左岸;
约束状态如下:(1,0,0,1)狼、羊在左岸;
(1,1,0,0)羊、菜在左岸;
(0,1,1,0)狼、羊在右岸;
(0,0,1,1)羊、菜在右岸;
(1,0,0,0)狼、羊、菜在左岸;
(0,1,1,1)狼、羊、菜在右岸;
(1,1,0,0)羊、菜在左岸;
(0,1,1,0)狼、羊在右岸;
(0,0,1,1)羊、菜在右岸;
(1,0,0,0)狼、羊、菜在左岸;
(0,1,1,1)狼、羊、菜在右岸;
发布评论