• 全部
  • 问答

一个有意思的问题

cbc 2005-04-10 09:22:21
假定有一个猎人带着一只狼、一头山羊和一棵白菜来到一条河的左岸,拟摆渡过河,而岸边只有一条小船,其 大小仅能装载人和其余三件东西中的一件,也就是说,每一次猎人只能将随行者中的一件带到彼岸。若猎人将狼和山羊留在同一岸上而无人照管,那么,狼就会将羊吃掉;如果猎人把山羊和白菜留在同一岸,山羊也会把白菜吃掉。现在,请你用状态转换图作为工具,描述猎人可能采取的种种摆渡方案,并从中找出可将上述三件东西安全地带到右岸的方案来
...全文
285 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
yuzl32 2005-04-13
初中的时候做过这道体
回复
mmmcd 2005-04-13
刚学过数理逻辑
这类问题可以用消解原理做

本质上也就是寻找初状态向终状态转移的过程。
直接用BFS也是可行的。
回复
jp1984 2005-04-12
That is original model of what we call backtracking
回复
galois_godel 2005-04-11
老问题了,你可以查查以前的帖子
回复
cosio 2005-04-11
人A 狼B 羊C 白菜D

1.A+C     留C
2.A返回
3.A+B     留B
4.A带C返回       --只有B
5.A+D     留D  
6.A返回 --只有B\D
7. A+C     A\B\C\D
回复
寻开心 2005-04-11
galois_godel() ( ) 提供的就是一种解法
把各种物体在河的不同位置都表示出来,作为图的节点
有些节点是安全的,有些节点是不安全的状态(安全和不安全就是依靠是否能够共存为标记)
节点和节点之间是有连接的,如果一个状态能够通过猎人的一次摆渡,变成了另外一个状态,那么这两个状态之间就是连通的

这样问题就是找一条通过安全节点的通路问题了,这个可以用计算机来解决的。
回复
cbc 2005-04-11
对,问题是要用有限自动机理论来解决该问题
回复
MagicCarmack 2005-04-11
可以查查以前的帖子
回复
newmeteor 2005-04-11
大家考虑一下,找出正解很容易,但是考虑一下,用状态图呢?
好像有点意思啊!
回复
galois_godel 2005-04-10
以河一边的情况为状态,一共2^4的状态,一开始状态是1111(二进制),目标状态是0000
如果能运过去,就连条边,比如1111和0101之间可以连条边,(假社第一个是人,第3个是山羊)然后就用Dijkstral或bfs就可以解决
回复
发帖
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2005-04-10 09:22
社区公告
暂无公告