Итак, у меня есть проблема, которую я хочу использовать для поиска первого глубины, возвращая первый путь, который находит DFS. Вот моя (неполная) функция DFS:
start = problem.getStartState()
stack = Stack()
visited = []
stack.push(start)
if problem.isGoalState(problem.getStartState):
return something
while stack:
parent = stack.pop()
if parent in visited: continue
if problem.isGoalState(parent):
return something
visited.append(parent)
children = problem.getSuccessors(parent)
for child in children:
stack.push(child[0])
Переменные startState и goalState - это просто набор координат x, y. Проблема - это класс с различными методами. Важными здесь являются getSuccessors (который возвращает дочерние элементы заданного состояния в виде списка из 3-х кортежей элементов. Однако для этой части проблемы используется только первый элемент кортежа (child [0]), который возвращает состояние дочернего элемента в координатах x, y) и isGoalState (который предоставляет координаты x, y состояния цели).
Итак, я ДУМАЮ (на данный момент трудно проверить), что эта функция, учитывая правильную реализацию всего остального, вернется, как только она достигнет состояния цели. Пожалуйста, дайте мне знать, если я что-то упустил. Моя самая большая проблема, однако, - ЧТО вернуться. Я хочу, чтобы он выводил список всех состояний, необходимых для достижения состояния цели, начиная с самого начала и до конца. Похоже, что просто возврат моего стека будет трюк, так как в стек войдут многие незаинтересованные дети. Также мой список не принесет ничего полезного, так как вполне возможно, что я смогу достичь тупиков, придется отступать, но все еще есть тупиковые кортежи в посещенном списке. Как я могу получить список, который мне нужен?