一、定义:
1、深搜:深度优先搜索,会在一个方向一直搜下去,直到这条路走不通,才会考虑第二个方向
2、广搜:广度优先搜索,是先搜索每一个可行方向的第一步,然后再接着搜索每一个可行方向的第二步。以此类推。
二、广搜实现方法分析:
1、将搜索的初始化状态加到一个队列里面,然后每次从队列中取出一个状态,往可以前进的方向进一步,然后再将该状态放到队列。利用队列先进先出的特点,就可以实现广搜的效果。
2、如果队列空了,但是还没有找到出口,说明所有的方向都找不到,那么自然就无法胜利了
3、每一步都记录上一步的状态和这次的方向。这样在达到最终胜利状态的时候,可以找到这个状态的上一步。
三、代码实现:
#!coding=utf-8
import random,json
class HuaRongDao():
def __init__(self,arr):
self.__LEFT = 0
self.__RIGHT = 1
self.__UP = 2
self.__DOWN = 3
# 方向数组
self.__forwardArr = [[0,-1],[0,1],[-1,0],[1,0]]
# 3x3九宫格
self.__arr = []
# 空格位置
self.__x = 0
self.__y = 0
# 移动数组
self.__moveArr = []
# 终点状态
self.__WIN_STATE = 123456780
# 已经搜索过的状态
self.__statusSet = []
self.__statusToSearch = []
self.__arr = arr
self.__getXY()
# 链式存储