三只母狼,各带着一只小狼,这六只狼要渡河

来源:互联网 发布:剑网三赵丽颖捏脸数据 编辑:程序博客网 时间:2024/04/30 05:04

有三只母狼,各带着自己的一只小狼。这六只狼要渡河,河上有一艘船,船上一次只能站两只狼。三只母狼都会划船,只有一只小狼会划船。如果小狼离开自己的母狼就会被别的母狼咬死。那怎么样才能让这六只狼都安全的渡过河呢?

 

此类问题的一般解法

画出状态图,可以转化为图搜索问题,然后可运用各种搜索算法求最优解或全部解。

具体做法

先定义状态,初始状态,A边6狼,目标状态B边6狼。
排列组合一下,画出每个可能的(不管是否能达到)状态。 
将不合法状态标记一下。
在能够互相转换的状态间,画上状态之间的连线。

到这里就完成了整个搜索空间的定义,
接下来无非是在一张(有向或无向)图上,求初始点到目标点的路径问题了。

技巧

某些问题的搜索空间很大,因此不宜或无法(由于物理限制)一下子生成整个搜索空间。
那么可以(按某种启发式算法)动态生成搜索空间,边查找边生成。

答案

母狼 A,B,C  都会划船小狼 a,b,c  假设a会划船ab过河,a回 对岸 bac过河,a回 对岸 bcBC过河,Bb回 对岸 CcAa过河,Cc回 对岸 AaBC过河,a回 对岸 ABCab过河,a回 对岸 ABbC ac过河完工