python实现 深度优先算法

来源:互联网 发布:北京哪里体检好 知乎 编辑:程序博客网 时间:2024/06/05 06:47


python 小程序,实现简单的dfs算法

    from game import Directions
    from util import Stack
    stack = Stack()
    fatherStack = Stack()
    moveDir = []    # record  the pacman move direction
    result = []        # the correct lines
    temp = {}
    startState = problem.getStartState() #  start the position 
    moveStart = [startState, Directions.STOP, 0]
    stack.push(moveStart)
    fatherStack.push(moveStart)
    flag = False
    while True:
        if  stack.isEmpty():
            print "can not find food"
        if flag==False:
            movement = stack.pop()
            fatherNode = fatherStack.pop()
        else:
           fatherNode = fatherStack.pop()
           movement = stack.pop()
           while  True:
               temp = moveDir.pop()
               if  temp == fatherNode:
                   moveDir.append(temp)
                   break
        if problem.isGoalState(movement[0]):
            moveDir.append(movement)
            for each in moveDir:
                result.append(each[1])
            return result[1:]
        moveDir.append(movement)   
        nextMovements = problem.getSuccessors(movement[0])
        if nextMovements != None:
            for i in nextMovements:
                print i
                if i[0] not in problem._visitedlist:
                   fatherStack.push(movement)
                   stack.push(i)
                else:
                    flag = True

原创粉丝点击