传教士和野人问题思考逻辑
系列文章目录
提示:国科大其他课程资料整理
国科大高级AI——强化学习(格子问题)
国科大高级AI——博弈论以及相关考题
国科大高级AI——一阶谓词逻辑
国科大高级AI——证明题历年考题
国科大高级AI——深度学习整理
国科大高级AI——野人和传教士问题
国科大模式识别——历年考题以及课后题整理
文章目录
- 系列文章目录
- 前言
- 问题描述
- 求解
- 问题形式化
- 让船动起来!
前言
其实这道野人与传教士的搜索题往届的师兄师姐已经在求解的很好了,比如这个野人
,之所以还要写,是当时我再看文档的时候看的很懵。并不是因为他是错的,相反他非常对,如果考试真考了,上面哪些文档下的解就是正确答案。但是这些解并不是逻辑思考的过程,而是逻辑思考的结果,所以这篇文档的目的主要是希望解析一下传教士和野人问题的逻辑思考的过程。
问题描述
传教士和野人问题通常描述如下:三个传教士和三个野人在河的一边,还有一- 条能载-一个人或者两个人的船。找到一个办法让所有的人能渡到河的另一-岸,要求在任何地方野人数都不能多于传教士的人数。
a.精确地形式化该问题,只描述确保该问题有解所必需的特性。画出该问题的完全状态空间。
求解
问题形式化
首先是问题的形式化过程:
- 初始状态:六个人都在河的一侧(左岸)
- 目标状态:六个人均在河的另一侧(右侧)
- 后继函数:一个人或者两个人从河的一侧到另一侧;(可以是两个传教士或者两个野人一条船)
- 耗散函数:从一侧到另一侧耗散1个单位
- 关于合法空间和非合法空间:略
关于合法空间和非法空间为什么略,其实开始思考这个问题的时候,我们全面的列出所有的合法和非法的空间是困难的,我建议可以边运行边思考合法和非法,所以我建议让船先走起来。
形式化表述当前状态:
(左岸传教士数量,左岸野人数量,右岸传教士数量,右岸野人数量,“船舶状态“1在左岸,0在右岸” ”)船舶初始状态就可以表述成(3,3,0,0,1),结束状态可以写成(0,0,3,3,0)。(当然这么写有点冗余,但是这样是有利于人判断的)。
最后一个待解决的问题是重复,什么是重复呢?看这样一个过程:
(3,3,0,0,1) 初始状态
(2,2,1,1,0) 一个传教士一个野人来到了右岸
(3,3,0,0,1) 一个传教士带着一个野人回到了左岸
这个过程是没有任何意义的,同时我们还有耗散函数要考虑,所以这样的过程对于我们也是一种“不合法状态”。
让船动起来!
先让船向右边走一趟考虑所有可能的路径,并排除两项不合法的状态。
将船舶返回,考虑所有可能路径,并排除不合法状态。
在下面这一趟就出现了重复的状态了,我们需要把重复的状态和非法的状态剔除掉。
(红色框出来的这些就和初始状体重复了)
下面开始第三趟:
后面的结果就不再一一展示了,总之在船舶行驶的过程中逐步晒出所有不合法和重复的状态,最后得到了这样的一个路径
传教士和野人问题思考逻辑相关推荐
- 野人与传教士过河java_传教士和野人过河(经典MC问题)
这个问题本来是<人工智能技术导论>第三章的课后题,今天上午考试正巧考到了这道题,要我们画状态转换图,我之前思考过一点,所以写出的状态表示应该没有问题,但这些状态太多了.......,十来种 ...
- 人工智能实验二——prolog语言求解渡河问题(传教士和野人渡河,农夫渡河问题)实现详解
农夫渡河问题求解 这两个问题都是渡河问题,思路和方式是一样的:给出求解Prolog代码: 问题描述 一个农夫带着一匹狼.一只羊.一颗白菜要过河, 只有一条船而且 农夫每次最多只能带一个动物或物品过河, ...
- 【C++】人工智能实验一 猴子摘香蕉/传教士与野人(含完整代码与状态迁移图)
文章目录 一.猴子摘香蕉问题 1.问题描述 2.解题思路 3.实验结果及分析 实验结果一 实验结果二 实验结果三 4.实验结果 5.实验代码 二.传教士(牧师)与野人问题 1.问题描述 2.实验步骤 ...
- AI传教士和野人渡河问题-实验报告
一 题目要求: 设有m个传教士和n个野人来到河边,打算乘一只船从左岸渡到右岸去,该船每次最多载3人.在任何时候,如果野人人数超过传教士人数,那么野人就会把传教士吃掉.他们怎样才能用这条船安全地把所有人 ...
- C语言版,传教士与野人渡河问题,使用深度优先搜索法求解(DFS),变态版,随便输入人数和船的最大载人数,人工智能经典题目,简单易懂,注释到位,没有bug
目录 一.问题描述 二.迟来的代码 运行截图 三.简单分析 一.问题描述 有n个传教士和n个野人准备渡河,但只有一条能容纳c个人的小船,为了防止野人侵犯传教士,要求无论在何处,传教士的人数不得少于野人 ...
- 传教士与野人过河问题 人工智能实验算法
问题描述 有 N 个传教士和 N 个野人来到河边渡河,河岸有一条船,每次至多可供 k 人乘渡.问:传教士为了安全起见,应如何规划摆渡方案,使得任何时刻, 河两岸以及船上的野人数目总是不超过传教士的数目 ...
- 【算法】传教士和野人问题
有N个传教士和N个野人来到河边准备渡河,河岸有一条船,每次至多可供k人乘渡.问传教士为了安全起见,应如何规划摆渡方案,使得任何时刻,在河的两岸以及船上的野人数目总是不超过传教士的数目.即求解传教士和野 ...
- NLP项目流程及思考逻辑
把手写笔记搬上来,以后就用博客进行学习记录了,加油! 喜欢做NLP的项目,让机器读懂文字的感觉很奇妙. 做过文本分类.摘要生成.机器翻译和NER,写代码的过程中细想来其实所谓人工智能,真的就是让计算机 ...
- 传教士与野人过河问题(A*搜索 C++)
传教士与野人过河问题: 任意时刻,左岸.右岸.船上如果传教士人数少于野人人数,传教士就会被野人吃掉.当然野人会划船.传教士人数为0也是可以的. 启发函数 f=g+h. g当前结点所在解空间树的深度. ...
- python深度优先搜索传教士和野人_传教士和野人问题解题思路
传教士和野人渡河问题 刘宪国050422023 野人过河问题描述如下:有三个传教士和三个野人过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果野人的人数大于传教士的人数,那么传教士就会有危险 ...
最新文章
- 消息称中国商务部已批准高通收购恩智浦
- 验算双中心重叠积分程序
- Python 卡方检验演算
- Wechat的支付逻辑流程
- Ansible的Inventory管理
- VS2005混合编译ARM汇编代码
- 在业务层实现记录请求日志
- [你必须知道的.NET] 第四回:后来居上:class和struct
- Objective-C Runtime (三):Method Swizzling(方法替换)
- php由哪几部分组成,微型计算机通常是由哪几部分组成?
- centos5安装mysql 5.6.19 mysql-devel_Centos5.8 安装 MySQL5.6.19
- 机器人的分类、发展史、现状及国内外发展趋势
- 中国地产商寻找下一个春天
- 面试时应该如何进行自我介绍呢
- b站黑马Vue2后台管理项目笔记——(1)登录功能
- 最全大数据学习资源整理
- Linux--date命令
- 跟着Cell学作图|9.PPI分析(GeNets数据库)
- 《数据库系统概论》课程指南
- LeetCode-1104. Path In Zigzag Labelled Binary Tree