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