趣味数学--安全过河
2015-08-01 16:24
399 查看
四名商人各带一名随从乘船渡河,一只小船只能容纳二人,由他们自己划行。随从们密约, 在河的任一岸, 一旦随从的人数比商人多, 就杀人抢货. 但是乘船渡河的方案由商人决定,那么商人们怎样才能安全过河?如果可以安全渡河,请找出所有可行方案.如果是n名商人,小船只能容纳m人,情况又将如何?
分析:采用Dijkstra算法解决了商人和随从渡河问题,根据题意用三维向量表示商人、随从和船的状态,并且定义此岸允许状态集合、彼岸允许状态集合及决策变量集合。然后把此岸允许状态集合和彼岸允许状态集合中的每个元素视为节点,按照状态转移规律连接这些节点构成了一个连通图,寻找安全的渡河方案最终转化为从起始状态(节点)到最终状态(节点)的路径,用图论的Dijkstra算法找出最短路径,每一条路径对应一种渡河方案,整体方案如图1(实心点代表此岸,空心点代表彼岸,人数均为此岸人数)
思想,见了问题想一下有没有类似的题,若有就用以前的方法,思想,如有一点点区别,找出它们的区别,根据这个区别稍加处理转换一下就可以用,举一反三。
处理这类题的思路,把目标所处的状态看成一个点,转化为图论处理,用Dijkstra算法找出最短路径即可
状态:
(商人个数,随从个数,有船)对此岸而言:
开始 末
(4,4,1) (0,0,0)
分析:采用Dijkstra算法解决了商人和随从渡河问题,根据题意用三维向量表示商人、随从和船的状态,并且定义此岸允许状态集合、彼岸允许状态集合及决策变量集合。然后把此岸允许状态集合和彼岸允许状态集合中的每个元素视为节点,按照状态转移规律连接这些节点构成了一个连通图,寻找安全的渡河方案最终转化为从起始状态(节点)到最终状态(节点)的路径,用图论的Dijkstra算法找出最短路径,每一条路径对应一种渡河方案,整体方案如图1(实心点代表此岸,空心点代表彼岸,人数均为此岸人数)
思想,见了问题想一下有没有类似的题,若有就用以前的方法,思想,如有一点点区别,找出它们的区别,根据这个区别稍加处理转换一下就可以用,举一反三。
处理这类题的思路,把目标所处的状态看成一个点,转化为图论处理,用Dijkstra算法找出最短路径即可
状态:
(商人个数,随从个数,有船)对此岸而言:
开始 末
(4,4,1) (0,0,0)
相关文章推荐
- 在linux上移植xserver、tslib、gtk和桌面系统(用buildroot)
- 07 JAVA IO流 练习
- Linux Shell 文本处理工具集锦(转载)
- 互联网
- JSP 面试知识点
- 关于2的补码
- 【排序】二分插入排序模板
- http://www.w3school.com.cn/html5/index.asp
- 2015 暑假集训14级第一周周赛解题报告
- qt学习第五课:深入理解信号和槽
- Xcode中如何关闭ARC
- 图论中dfs判断是否可行一类问题的写法
- 插入排序
- JavaScript读取并解析XML文件
- Bootstrap组件之具有响应式特性的嵌入内容
- JVM内存模型及内存分配过程
- linux 常用(二)常用文件操作命令
- Android布局
- asp.net+swfupload 多图片批量上传(附源码下载)
- 01背包