def solveAStart(self): """ Solve function, read the neighbours append the dist and moves to the queue Queue picks small distances and puzzle is solved """ startTime = time.time() board = Board(self.boardList, goalState=self.goalState, n=self.n) print("Start State .............") print(board) goal = Board(board.goalState, goalState=None, n=self.n) print("Goal State ..............") print(goal) queue = PriorityQueue() queue.put(board.getPriority(0)) i = 1 while not queue.empty(): board = queue.get()[2] if not board.isGoal(): for neighbour in board.getNeighbours(): if neighbour != board.previous: queue.put(neighbour.getPriority(i)) i += 1 else: self.analytics("A star", board.move, i, time.time() - startTime, board) return
def solveDFS(self): """ Solve function for DFS algorithm """ startTime = time.time() board = Board(self.boardList, goalState=self.goalState, n=self.n) visited = list() queue = LifoQueue() queue.put(board.getPriority(0)[2]) i = 1 while not queue.empty(): board = queue.get() if not board.isGoal(): for neighbour in board.getNeighbours(): if neighbour not in visited: visited.append(neighbour) queue.put(neighbour) i += 1 else: self.analytics("DFS", board.move, i, time.time() - startTime, board) return