Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- visited = []
- def BFS(start, target, GRAPH, depth, maxDepth):
- global visited
- #print "\t"*depth,start, "||", GRAPH[start], "||", [BFS(neighbor,target,GRAPH,depth+1,maxDepth) for neighbor in GRAPH[start]]
- if start not in visited:
- visited.append(start)
- else:
- print 'start: ',start,'visited: ', visited
- #you've already visited it, so ignore
- return maxDepth
- if target in GRAPH[start]:
- #you found it
- print 'start: ',start,'visited: ', visited,' and I found it'
- return depth+1
- else:
- if depth == maxDepth:
- print 'start: ',start,'visited: ', visited,' and I reached maxDepth'
- return maxDepth
- else:
- #you haven't found it, so run a BFS on the neighbors
- return min([BFS(neighbor,target,GRAPH,depth+1,maxDepth) for neighbor in GRAPH[start]])
- print BFS(0,2,{0: [1,3], 1: [2], 2 : [0, 3], 3: [1]},0,3)
Add Comment
Please, Sign In to add comment