关于用队列实现农夫过河的广度优先搜索算法的小问题

Last_stardust 2015-07-29 10:26:07
书上给出的广度优先是这样说的:总是首先搜索搜索当前步骤的所有可能状态,再考虑下一步及再以后的各种状态。农夫、狼、白菜、羊(船只能载2个对象,只有农夫能划船,无农夫时狼吃羊,羊吃菜)抽象成0000~1111的15种状态以后(0是起点岸,1是终点岸),搜索从0000开始,终点是1111,目的是求出一个安全的搬运顺序。第一次需要尝试1100,1010和1001(也就是这三个数分别进入队列),那这个时候问题来了:
所谓的广度优先的队列实现,是否就是按树的观点进行层序遍历呢?比如书上给出的答案是这样的:
第一层0000
第二层1001
第三层0001
第四层1101(1.0),1011(2.0)
第五层0100(1.1),0010(2.1)
第六层 void 1110(2.2)
第七层 void 0110(2.3)
第七层 void 1111(2.4)
那是不是抽象的队列顺序就是这样的:1.0←2.0←1.1←2.1←2.2←2.3←2.4
是这样的吗?
...全文
333 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly_dragon_fly 2015-07-30
  • 打赏
  • 举报
回复
广搜确实是层序的,
/* 线性表的顺序表示:类型和界面定义*/ /* 线性表的顺序表示:函数实现*/ /* 线性表的单链表表示:类型和界面函数定义*/ /* 线性表的单链表表示:函数实现*/ /* 线性表的顺序表示:类型和界面定义*/ /* 线性表的顺序表示:函数实现*/ /* 用顺序表解决josephus问题算法*/ /* 用循环单链表解决josephus问题算法*/ /*字符串的顺序表示*/ /* 字符串的链接表示 */ /* 顺序栈表示:类型和界面函数声明 */ /* 顺序栈表示:函数定义 */ /* 栈链接表示:类型和界面函数声明 */ /*栈链接表示:函数定义*/ /* 简化背包问题的递归算法*/ /* 简化背包问题的非递归算法*/ /* 迷宫问题的递归算法*/ /* 迷宫问题的非递归算法(栈实现)*/ /* 队列的顺序表示:类型和函数声明 */ /* 队列的顺序表示:函数定义 */ /*队列链接表示:类型和界面函数声明*/ /*队列链接表示:函数定义*/ /* 用队列解决农夫过河问题算法*/ /* 树的长子-兄弟表示法*/ /* 树的父指针表示法*/ /* 树的子表表示法*/ /* 树的后根周游的递归算法*/ /* 树的先根周游的非递归算法*/ /* 树的中根周游的递归算法*/ /* 树的后根周游的递归算法*/ /* 树的广度优先周游算法*/ /* 二叉树的链接表示*/ /* 二叉树的顺序表示*/ /* 线索二叉树的定义,构造算法和中根周游算法*/ /* 二叉树前根周游的递归算法*/ /* 二叉树对称根周游的递归算法*/ /* 二叉树后根周游的递归算法*/ /* 二叉树后根周游的非递归算法*/ /* 本程序提供了用顺序表实现字典的存储表示定义*/ /* 本程序是用开地址法解决碰撞的散列表示方法, 提供了字典的一些基本操作*/ /* 字典的二叉排序树实现,本程序实现了二叉排序树的基本操作的算法*/ /* 字典的AVL树实现*/ /* 本程序提供了用顺序表实现字典的情况下 的顺序检索算法*/ /* 本程序提供了用顺序表实现字典的情况下 的二分法检索算法*/ /* 本程序是用开地址法实现散列的检索算法*/ /* 二叉排序树的检索算法*/ /* AVL树的检索算法*/ /* 最佳二叉排序树是具有最佳检索效率的二叉排序树, 本程序提供了最佳二叉排序树的构造方法*/ /* 直接插入排序的算法源程序*/ /* 二分法插入排序的算法源程序*/ /* 表插入排序的算法源程序*/ /* shell排序的算法源程序 */ /* 直接选择排序的算法源程序*/ /* 堆排序的算法源程序*/ /* 起泡排序的算法源程序*/ /* 快速排序的算法源程序*/ /* 基数排序的算法源程序*/ /* 二路归并排序算法的源程序*/ /* 用图邻接矩阵表示实现的一些基本运算*/ /* 用图邻接表表示实现的一些基本运算*/ /* 用邻接矩阵表示的图的广度优先周游算法*/ /* 用邻接表表示的图的广度优先周游算法*/ /* 用邻接矩阵表示的图的深度优先周游的递归算法*/ /* 用邻接矩阵表示的图的深度优先周游的非递归算法*/ /* 用邻接表表示的图的深度优先周游的非递归算法*/ /* 用邻接矩阵表示的图的Kruskal算法的源程序*/ /* 用邻接矩阵表示的图的prim算法的源程序*/ /* 用邻接矩阵表示的图的Dijkstra算法的源程序*/ /* 用邻接矩阵表示的图的Floyd算法的源程序*/ /* 用邻接表表示图的拓扑排序算法*/ /* 用邻接矩阵表示图的拓扑排序算法*/ /* 图的关键路径问题算法*/ /* 背包问题的贪心法算法*/ /* 用动态规划法求组和数的算法*/ /* 用回溯法解决骑士周游问题算法*/ /* 0/1背包问题的回溯法算法*/ /* 0/1背包问题的动态规划法算法*/ /* 0/1背包问题的分支定界法算法*/

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧