这是一个古典问题。假设有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
A*算法解决传教士与野人过河问题 * 程 序 说 明 * * 功能: 用A*算法求解传教士与野人问题。M=C=5, K=3 * * 说明: * * 本程序按照《人工智能导论》一书所介绍的A*算法求解传教士与野人问题
2022-10-05 23:04:07 3KB A算法求解传教士与野人问题
1
传教士与野人问题的VC++代码,程序代码量少,格式清晰,较好地解决了人工智能课程里的传教士与野人问题
2021-11-25 11:37:23 7KB VC++
1
人工智能基础的传教士与野人问题.cpp
2021-06-21 14:10:58 5KB 人工智能
1
人工智能实验传教士与野人问题加猴子摘香蕉问题
2021-03-08 18:06:10 1.02MB 人工智能实验
1
A*搜索算法解决传教士与野人问题-Java-Swing编程-动画-多线程
2021-02-12 22:03:12 368KB A*算法 搜索算法 多线程 java
1
运行时请在test.java文件中修改参数n和k(分别代表传教士和野人的人数)此算法实现的结果为最优结果
2020-10-20 22:42:32 2KB 传教士与野人问题 Java 最优
1
问题:设有3个传教士和3个野人来到河边,打算乘一只船从右岸渡到左岸去。该船的负载能力为两人。在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉。他们怎样才能用这条船安全地把所有人都渡过河去? 综合上述信息提取限制信息为: 1、修道士和野人都会划船,但船一次只能载2人; 2、在任何岸边,野人数不能超过修道士数,否则修道士将会被野人吃掉
1
用Prolog求解传教士和野人问题,程序报告。
2019-12-21 20:59:42 80KB prolog
1