有三只母狼,各带着自己的一只小狼。这六只狼要渡河,河上有一艘船,船上一次只能站两只狼。三只母狼都会划船,只有一只小狼会划船。如果小狼离开自己的母狼就会被别的母狼咬死。那怎么样才能让这六只狼都安全的渡过河呢?
此类问题的一般解法
画出状态图,可以转化为图搜索问题,然后可运用各种搜索算法求最优解或全部解。
具体做法
先定义状态,初始状态,A边6狼,目标状态B边6狼。
排列组合一下,画出每个可能的(不管是否能达到)状态。
将不合法状态标记一下。
在能够互相转换的状态间,画上状态之间的连线。
到这里就完成了整个搜索空间的定义,
接下来无非是在一张(有向或无向)图上,求初始点到目标点的路径问题了。
技巧
某些问题的搜索空间很大,因此不宜或无法(由于物理限制)一下子生成整个搜索空间。
那么可以(按某种启发式算法)动态生成搜索空间,边查找边生成。
答案
母狼 A,B,C 都会划船
小狼 a,b,c 假设a会划船
ab过河,a回 对岸 b
ac过河,a回 对岸 bc
BC过河,Bb回 对岸 Cc
Aa过河,Cc回 对岸 Aa
BC过河,a回 对岸 ABC
ab过河,a回 对岸 ABbC
ac过河完工