关于用队列实现农夫过河的广度优先搜索算法的小问题
书上给出的广度优先是这样说的:总是首先搜索搜索当前步骤的所有可能状态,再考虑下一步及再以后的各种状态。农夫、狼、白菜、羊(船只能载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
是这样的吗?