Advertisement
Guest User

Untitled

a guest
Apr 18th, 2011
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.23 KB | None | 0 0
  1. class DFS():
  2.     ''' start the search '''
  3.     def search(self, start, end, graph):
  4.         self._fringe = [(start, [])]
  5.         self._visited = []
  6.         while len(self._fringe) > 0:
  7.             node = self._getNext()
  8.             if node is None:
  9.                 break
  10.             elif node[0] is not end:
  11.                 for neighbour in graph[node[0]]:
  12.                     self._fringe.append((neighbour, node[1]+[node[0]]))
  13.             else:
  14.                 return node[1] + [node[0]]
  15.         return None
  16.  
  17.     ''' Returns the next node from fringe '''
  18.     def _getNext(self):
  19.         while len(self._fringe) > 0:
  20.             node = self._fringe.pop()
  21.             if node[0] not in self._visited:
  22.                 self._visited.append(node[0])
  23.                 return node
  24.         return None
  25.  
  26. class BFS(DFS):
  27.     def _getNext(self):
  28.         while len(self._fringe) > 0:
  29.             node = self._fringe.pop(0)
  30.             if node[0] not in self._visited:
  31.                 self._visited.append(node[0])
  32.                 return node
  33.         return None      
  34.    
  35. maze = [
  36.  [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],
  37.  [1,1,1,1,0,1,1,1,1,0,1,1,1,1,0],
  38.  [0,0,0,1,0,1,0,0,0,0,1,0,0,0,0],
  39.  [0,1,0,0,0,0,0,1,1,0,1,0,1,1,1],
  40.  [0,1,0,1,1,1,0,0,1,0,1,0,0,0,0],
  41.  [0,1,0,0,0,1,1,1,1,0,1,1,1,1,0],
  42.  [0,1,1,1,0,0,0,0,0,0,0,1,0,0,0],
  43.  [0,1,0,1,1,1,1,1,1,0,1,0,0,1,1],
  44.  [0,1,0,1,1,0,1,0,1,0,1,0,1,1,1],
  45.  [0,1,0,0,0,0,0,0,1,0,1,0,0,0,0],
  46.  [0,1,0,1,1,1,1,0,1,0,1,1,1,1,0],
  47.  [0,1,0,1,0,0,1,0,1,0,1,0,0,0,0],
  48.  [0,1,0,1,0,1,1,0,1,0,1,1,1,1,1],
  49.  [0,1,0,1,0,1,1,0,1,0,0,0,0,0,0],
  50.  [0,0,0,1,0,0,0,0,0,0,1,1,1,1,0]]
  51.  
  52. graph = [[] for x in range(pow(15,2))]
  53. for node in range(len(graph)):
  54.     x = node % 15
  55.     y = node / 15
  56.     if maze[x][y] is 0:
  57.         if x > 0:
  58.             if maze[x-1][y] == 0:
  59.                 graph[node].append(node-1)
  60.         if x < 14:
  61.             if maze[x+1][y] == 0:
  62.                 graph[node].append(node+1)
  63.         if y > 0:
  64.             if maze[x][y-1] == 0:
  65.                 graph[node].append(node-15)
  66.         if y < 14:
  67.             if maze[x][y+1] == 0:
  68.                 graph[node].append(node+15)
  69.            
  70.  
  71. bfs = BFS()
  72. dfs = DFS()
  73.  
  74. bfsPath = bfs.search(0,224,graph)
  75.  
  76. dfsPath = dfs.search(0,224,graph)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement