关于野人与传教士问题的心得
2014-08-24 23:53
330 查看
关于野人与传教士问题,自己费了很长时间想这个问题,本以为解出了答案,没想到是错的,我理解错了提议。所以,什么事情,都要有一个正确的目标,否则即使胜力了,也是失败的。
其实,这是一个关于图论的问题。
关于图论的个人理解:
图论会有一个初始状态,还有一个目标状态,初始状态就是一个问题或事物刚开始的状态,目标状态是我们想要达到的状态。它们可以用坐标来表示。
解题过程:
首先,我们要做的是明确问题的初始状态和目标状态。
本题的初始状态是(3,3,1),即在河的左边有3个野人,3个传教士,和一支船。目标状态是(0,0,0),即河的左边有0个野人,0个传教士,和0支船,换句话说,野人、人和船都到了河的右边。
其次,我们要明确从某一状态到下一状态有几种可能的值。
因为船最多自能坐两个人,所以本题中一共有五种状态:1.把本岸的一个传教士送到对岸;2.把本岸的一个野人送到对岸;3.把一个野人和一个传教士送到对岸;4.把两个传教士送到对岸;5.把两个野人送到对岸。
第三,找出不满足条件的状态。本题中即使一岸的野人数大于传教士的状态和数量为负的情况,将其从解中排出。
第四,选取适当的算法,本题中用深度优先搜索就可以。
第五,最好有状态的记录,避免死循环。
其实,这是一个关于图论的问题。
关于图论的个人理解:
图论会有一个初始状态,还有一个目标状态,初始状态就是一个问题或事物刚开始的状态,目标状态是我们想要达到的状态。它们可以用坐标来表示。
解题过程:
首先,我们要做的是明确问题的初始状态和目标状态。
本题的初始状态是(3,3,1),即在河的左边有3个野人,3个传教士,和一支船。目标状态是(0,0,0),即河的左边有0个野人,0个传教士,和0支船,换句话说,野人、人和船都到了河的右边。
其次,我们要明确从某一状态到下一状态有几种可能的值。
因为船最多自能坐两个人,所以本题中一共有五种状态:1.把本岸的一个传教士送到对岸;2.把本岸的一个野人送到对岸;3.把一个野人和一个传教士送到对岸;4.把两个传教士送到对岸;5.把两个野人送到对岸。
第三,找出不满足条件的状态。本题中即使一岸的野人数大于传教士的状态和数量为负的情况,将其从解中排出。
第四,选取适当的算法,本题中用深度优先搜索就可以。
第五,最好有状态的记录,避免死循环。
相关文章推荐
- 关于学习MSDN中"创建自定义字段类型和字段控件"的一些心得跟问题。
- 野人传教士问题——盲目搜索
- 野人传教士过河问题
- 关于联想笔记本常见问题心得
- 传教士野人过河问题
- MapXtreme 2005 学习心得 关于地图投影坐标问题的解决方式(十四)
- [Craftor原创]关于一阶状态机跳转问题的研究与心得
- 关于jquery.AutoComplete插件的一些使用心得(编码问题,效率问题)
- 学习ORACLE中关于配置文件的读取和修改心得以及问题
- HSQLDB学习心得(1)-关于SERVER模式下多个数据库的启动问题与数据库连接
- (zt)关于Flash Socket通信的安全策略问题的一点心得
- 关于内存地址对齐的问题(2007年工作的心得)
- 关于eWebEditor常见的问题及其个人使用心得
- 关于两台路由器连接问题的心得
- 心得体会:关于开发效率和项目周期的问题
- 学习心得:关于C#中Queue的线程安全问题
- 关于structs和Spring框架整合中的模块装配问题心得
- [转载].Craftor - 关于一阶状态机跳转问题的研究与心得
- 关于ReentrantReadWriteLock两个问题及解决心得(转)
- 近期关于web服务器安全问题的心得