def greedy(self): visited = [] to_visit = [deepcopy(self.__root)] while len(to_visit) > 0: if len(to_visit) == 0: return None current_node = to_visit.pop(0) if current_node not in visited: visited.append(current_node) if Problem.get_final(current_node): return current_node for expanded in Problem.expand(current_node): if expanded not in visited: if Problem.get_final(expanded): return expanded visited.append(expanded) to_visit = [expanded] + to_visit to_visit = sorted(to_visit, key=lambda state: Problem.heuristics(state), reverse=True) return None
def dfs(self): visited = [] to_visit = [deepcopy(self.__root)] final = [] while len(to_visit) > 0: if len(to_visit) == 0: return None current_node = to_visit.pop() if current_node not in visited: visited.append(current_node) if Problem.get_final(current_node): final.append(current_node) for expanded in Problem.expand(current_node): if expanded not in visited: visited.append(expanded) to_visit += [expanded] return final