python實現 深度優先算法


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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章