野人和传教士过河问题实现1.pdfVIP

  • 168
  • 0
  • 约2.65万字
  • 约 21页
  • 2018-10-09 发布于浙江
  • 举报
野人和传教士过河问题实现1

目录 野人和传教士过河问题的实现 2 1 课程设计内容与要求 2 1.1 设计目的 2 1.2 设计内容 2 2 问题背景 2 2.1 深度优先算法 2 2.2 广度优先算法 3 2.3 A*算法 3 3 数学模型 3 3.1 状态空间 3 3.2 安全状态空间 4 3.3 渡河方案 4 3.4 安全渡河方案 4 3.5 渡河决策 5 4 数据结构 5 4.1 状态State 5 4.2 策略的头结点 6 4.3 最小化内存空间结构 6 5 算法实现 7 5.1 判断是否为安全状态的函数 7 5.2 显示所有的安全状态函数 8 5.3 显示状态函数 8 5.4 显示路径函数 9 5.5 递归算法函数 10 6 实验结果 13 武汉理工大学《计算机软件高级项目实践》课程设计说明书 7 展望 15 7.1 复杂度分析 15 7.2 问题的演变 15 7.2.1 求最快能过河的渡河方案 15 7.2.2 求一种能过河的渡河方案 16 8 总结 18 参考文献 19 附录1 求一种能过河的渡河方案 19 1 武汉理工大学《计算机软件高级项目实践》课程设计说明书 野人和传教士过河问题的实现 1 课程设计内容与要求 1.1 设计目的 设计有效的数据结构和算法实现野人和传教士过河问题。 1.2 设计内容 1. 深入理解野人和传教士过河问题的实质,调研该问题实现的相关算法; 2. 设计有效的数据结构和算法实现该问题; 3. 根据算法完成程序的编写和调试,要求输出实现的结果; 4. 按课程设计要求撰写报告。 2 问题背景 有三个传教士(MISSIONARYS )和三个野人(CANNIBALS )一起来到河边准备 渡河,河边有一条空船,且传教士和野人都会划船,但每次最多可供两人 (BOATCAPACITY )乘渡。河的任何一岸以及船上一旦出现野人人数超过传教士人数, 野人就会把传教士吃掉。 这就是很有名的野人和传教士过河问题,要解决这个问题,有很多方法。 2.1 深度优先算法 所谓深度优先算法(DFS )就是:从图中某个初始顶点v 出发,首先访问初始顶点v, 然后选择一个与顶点v相邻且没被访问过的顶点w为初始顶点,再从w 出发进行深度优先 搜索,直到图中与当前顶点v邻接的所有顶点都被访问过为止。实现这一算法,我们要用 到编程的另一大利器--递归。 在这个课程设计中我设计了一种最小内存的深度优先算法,用这个算法的优点是 可以找到所有的解。当然也包括全局最优解了。这个全局最优解可以作为一个评估指 标。 2

文档评论(0)

1亿VIP精品文档

相关文档