- 4
- 0
- 约4.98千字
- 约 16页
- 2024-01-02 发布于浙江
- 举报
人工智能
(项目设计)
专业:?计算机科学与技术?
班级:?电计1203?????
学号:?201281303?????
姓名:?刘阳????????
一.问题描述与分析
传教士人数M,野人数C,M≥C,开始都在岸左边。
①船最多只能载K人,传教士和野人都会划船,当然必须有人划船
②两岸边保证野人人数不能大于传教士人数
把所有人都送过河,求解过河方案。
如果求取最优解应使用A*算法,但如果输出整个解空间使用DFS比较直接,并且对于大多数情况而言,几种过河方案代价基本相同。在程序中需要保证状态节点向下拓展以提高效率。
即如果搜索的状态在之前已经出现过了,就不深入下去了,否则会出现死循环。
搜索算法这里采用DFS的非递归描述,如果当前节点无法继续拓展或者已经拓展到目标状态,那么将当前解中位于栈顶第一个待拓展状态之前的状态全部出栈(栈非空的情况下),如果当前达到目标状态还需要将解压入解空间中。
程序中回溯不可避免因为总有不可继续拓展的节点,但是向上拓展必须避免因为这会导致搜索陷入错误的循环。
二.程序源码及注释
#includeiostream
#includevector
#includestring
#includestdio.h
#includeconio.h
#defineMAXSIZE50
usingna
原创力文档

文档评论(0)