这是一个古典问题。假设有n个修道士和n个野人准备渡河,但只有一条能容纳c人的小船,为了防止野人侵犯修道士,要求无论在何处,修道士的个数不得少于野人的人数(除非修道士个数为0)。如果两种人都会划船,试设计一个算法,确定他们能否渡过河去,若能,则给出一个小船来回次数最少的最佳方案。 要求: (1)用一个三元组(x1,x2,x3)表示渡河过程中各个状态。其中,x1表示起始岸上修道士个数,x2表示起始岸上野人个数,x3表示小船位置(0——在目的岸,1——在起始岸)。例如(2,1,1)表示起始岸上有两个修道士,一个野人,小船在起始岸一边。 (2)采用邻接表做为存储结构,将各种状态之间的迁移图保存下来。 (3)采用广度搜索法,得到首先搜索到的边数最少的一条通路。 (4)输出数据 若问题有解(能渡过河去),则输出一个最佳方案。用三元组表示渡河过程中的状态,并用箭头指出这些状态之间的迁移: 目的状态←…中间状态←…初始状态。 输出时,在状态迁移旁,说明渡河的动作和当前两岸的状态。 若问题无解,则给出“渡河失败”的信息。 (4)求出所有的解。
2022-12-07 22:59:22 10KB 传教士与野人问题-数据结构
1
有N个传教士和N个野人来到河边准备渡河,河岸有一条船,每次之多可供k个人乘渡。传教士为了安全起见,任何时刻,河两岸以及船上的野人数目总是不能超过传教士的数目(传教士数目为0除外)。求解一个可以令传教士和野人安全从左岸全部摆渡到右岸的过程。
2022-11-04 17:22:43 5KB 传教士,野人,渡河问题
1
A*算法解决传教士与野人过河问题 * 程 序 说 明 * * 功能: 用A*算法求解传教士与野人问题。M=C=5, K=3 * * 说明: * * 本程序按照《人工智能导论》一书所介绍的A*算法求解传教士与野人问题。
2022-10-05 23:04:07 3KB A算法求解传教士与野人问题
1
用C++实现传教士与野人渡河问题,附源码、可执行程序、实验报告。使用VS2012编写,VS2010上也可以编译成功。使用时需要自己新建工程,只需将相应文件加入工程即可编译运行。
2022-05-10 18:46:52 603KB 传教士与野人
1
大学课程人工智能小实验源码,实验内容是传教士与野人过河 案例,C#源码分享,使用编程工具为VS2012做的一个小小的demo。
2022-04-28 22:34:37 142KB 人工智能 传教士与野人过河 demo C#
1
人工智能的经典问题之一:传教士和野人过河C语言实现的。。。
2021-12-22 19:43:26 1KB 传教士和野人
1
传教士与野人问题的VC++代码,程序代码量少,格式清晰,较好地解决了人工智能课程里的传教士与野人问题。
2021-11-25 11:37:23 7KB VC++
1
电子科技大学,人工智能实验一,野人与传教士经典问题解决方案代码实现。
2021-11-25 11:27:08 3KB c++
1
人工智能 课程大作业 没有做OPEN表和CLOSED表的检查 开头参数可自己改,结果应该没问题。
1