渡河问题的分析
来源:互联网 发布:java pdf在线预览功能 编辑:程序博客网 时间:2024/05/02 21:22
形式化的描述:
初始状态:河的两岸,一岸有3个野人3个传教士,和一条一次可渡过一个或两个人的船
目标测试:6人全部到达另一岸,摆渡过程中,任何地方野人数量不超过传教士的数量
后继函数:船载人从一岸到另一岸
耗散函数:船来回的次数
状态空间:(以数据代替图形更为直观)
考虑船上状态可转变,是中间状态(当与某一岸接触时可算作那一岸的一部分)最终可用人初始在的一岸的野人数,传教士人数,船的情况构成三元组来表示状态空间,则初始状态为(3,3,1),结束状态(0,0,0);所有的中间状态可以是:(渡字全部指自初始岸到要到的另一岸)
————自初始状态,
渡一人:(2,3,0),最终回到原来的状态(3,3,1)
渡二人:(1,3,0),然后回来一人(2,3,1);(2,2,0),回来传教士(2,3,1)
————自状态(2,3,1)
渡一人:(1,3,0),(2,2,0);最终回到(2,3,1);
渡二人:.(0,3,0),回来一人(1,3,1),两人(2,3,1)
————自状态(1,3,1)
渡一人:(0,3,0)最终与前同;
渡两人:若(1,1,0),回来2传教士(1,3,1)与前同;回来一传教士一野人(2,2,1)
————自状态(2,2,1)
渡一人:无
渡两人:到(1,1,0)回到原来与前同;到(2,0,0),接下了起另一段
可让要到的对岸的野人(1个)渡回到原岸通过两次来回的摆渡将原岸的两野人渡到对岸会;依次出现(3,0,1),(1,0,0),(2,0,1),(0,0,0);至此达到目的状态
在此过程中,当状态为(1,0,0),若一传教士回到原岸,出现(1,1,1)的状态,其他的可能要么无法出现(与后继函数矛盾),要么重复以前的状态,故一种最优的状态切换为(3,3,1),(1,3,0),(2,3,1),(0,3,0),(1,3,1),(1,1,0),(2,2,1),(2,0,0),(3,0,1),(1,0,0),(2,0,1),(0,0,0)
简单的思路便是,先让一个野人做船工到达(1,3,1),传教士两人到对岸,状态(1,1,0),此时回1传教士1野人,到(2,2,1),然后两传教士渡到对岸至(2,0,0),之后让已到到对岸的野人做船工,将原岸的两野人接来。
当然最优的路径不唯一,譬如第1次的野人的渡河工作的第一个野人被渡工作可以由传教士完成,第2次的野人的渡河工作的第二个野人被渡工作可以由传教士完成
如此,最优的渡河方案可有三种
总结一下,上面出现的所有状态,都满足题意,且已经完备,以此三元组(定义在开头)的形式将状态空间成功完全描述。
即:(3,3,1),(1,3,0),(2,3,1),(0,3,0),(1,3,1),(1,1,0),(2,2,1),(2,0,0),(3,0,1),(1,0,0),(2,0,1),(0,0,0)
另加:(2,2,0),(1,1,1)
上述的许多状态间可以循环重复
B.
由上述的推理过程可知,只要避免状态的重复出现,任意的搜索算法在按照后继函数的规定所产生的搜索路径进行,搜索总能实现目标状态的出现,剔除重复过程则一定是最优的。
为产生最优的求解方案,检查剔除重复状态是必须的。
C.
首先状态空间概念的定义难以把握,很难准确把握,即使准确不一定最简无重复说明。
在推理的过程中,推理类似搜索,可见人类在复杂搜索任务面前多么无力,很难判断是否重复,很多时候把握不住,以为问题无解。
问题条件复杂,因此找到问题的关键即找到问题解决的简单思路,极其困难,不得不走机器式的直接搜索试探方案,而非目标确定(向状态(1,1,0)、(2,2,1)靠近)的启发式(人脑的搜索优势)试探
此题的多解性,亦增加了问题的难度
- 渡河问题的分析
- 渡河问题
- 商人渡河问题
- 野人和传教士渡河问题的java实现
- bzoj1617[Usaco2008 Mar]River Crossing渡河问题
- 1617: [Usaco2008 Mar]River Crossing渡河问题
- [BZOJ1617] [Usaco2008 Mar]River Crossing渡河问题
- bzoj1617【Usaco2008 Mar】River Crossing 渡河问题
- usaco2008渡河问题(简单dp)
- BZOJ1617: [Usaco2008 Mar]River Crossing渡河问题
- 1617: [Usaco2008 Mar]River Crossing渡河问题
- bzoj1617 [Usaco2008 Mar]River Crossing渡河问题
- BZOJ1617: [Usaco2008 Mar]River Crossing渡河问题
- 1617: [Usaco2008 Mar]River Crossing渡河问题
- [Usaco2008 Mar]River Crossing渡河问题 简单DP
- BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题
- BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题
- DP-BZOJ-1617-[Usaco2008 Mar]River Crossing渡河问题
- java读取CSV文件
- 揭穿中国市场信息http://www.infocom.cn里面的骗局
- PMBOK(项目管理知识体系)
- 怎样使用hightlight高亮显示脚本代码?
- SAP CRM 项目实施笔记--上线
- 渡河问题的分析
- ubuntu9.10下安装eclipse
- Java实现的几种排序算法
- 二十几岁,我们用工作挣未来
- 云计算标准,为时尚早还是呼之欲出
- Bochs常用调试命令
- JQuery UI之(一)简介
- 在一个程序集中获取一个类的所有子类
- Replace函数