据说是一个经典问题

fdm_sea 2002-07-07 09:29:15
这是我的一个实习题目,叫什么修道士和野人问题
说是有n个道士和n个野人过河,只有一条能装c个人的船
现在他们要过河,条件(当然有条件,不然会是经典?):
在船上的道士人数要>=野人人数
问最少要几次可以全部过去
题目的提示是用图来做,采用广度搜索法,并且用三元组查看渡河时的状态

可惜我对图是很不熟,看了3个小时什么眉目都没有,请教各位高手

请教请教!
具体思路是什么,如果不用图能不能做呢?网上哪里有没有可以看到的?

谢谢了
...全文
26 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
night_cat 2002-07-08
  • 打赏
  • 举报
回复
up
fangrk 2002-07-08
  • 打赏
  • 举报
回复
这个是我大学人工智能时候写的题目。
atlantis13579 2002-07-07
  • 打赏
  • 举报
回复
http://www.csdn.net/expert/topic/848/848507.xml?temp=.1146509
atlantis13579 2002-07-07
  • 打赏
  • 举报
回复
好.给你看看一个很相似的问题 : 人带狼 羊 菜过河的问题. 你看看人家是怎么设计的 :

设变量M代表人 W代表狼 S代表羊 V代表白菜 开始时设人和其他三样东西在河的左岸 这种情况用MWSV表示

用一个集合表示过河过程中左岸出现的情况.很显然 有下面16种情况:
[MWSV] [MWS] [MWV] [MSV] [WSV] [MW] [MS] [MV] [WS] [WV] [SV] [M]
[W] [S] [V] [空]

剔除下述6种可能发生狼吃羊 羊吃白菜的情况
[WSV] [MW] [MV] [WS] [SV] [M]

现在就来构造一个图G 它的顶点就是剩下的10种情况.G中的边是按下述规则来连接:如果甲经过一次渡河可以变成情况乙,那么就在情况甲与情况乙之间连一条边.

做出了图G以后 渡河问题就归结为:在图G中找一条连接顶点 MWSV 与 空 ,并且包含边数最少的路径. 又假设G各边的长度为1, 那么可以把渡河问题归结为 : 找一条连接 MWSV 到 空 的最短路.
atlantis13579 2002-07-07
  • 打赏
  • 举报
回复
把每一个可能状态写下来,作为顶点,若一种状态可一次变成另一种状态,就在两点连线,这样得到一个图,然后问题转化为在这个图中找一条最短路,用Moore-Dijkstra算法

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧