У меня есть пара вопросов о поиске в графиках / деревьях:
Предположим, у меня пустая шахматная доска, и я хочу переместить пешку из точки А в В.
A. При использовании поиска по глубине или по ширине мы должны использовать открытые и закрытые списки? Это список, в котором есть все элементы, которые нужно проверить, и другие со всеми другими элементами, которые уже были проверены? Возможно ли это сделать даже без этих списков? А как насчет A *, это нужно?
B. При использовании списков, после того как вы нашли решение, как вы можете получить последовательность состояний от A до B? Я предполагаю, что когда у вас есть элементы в открытом и закрытом списке, вместо того, чтобы просто иметь (x, y) состояния, у вас есть «расширенное состояние», сформированное с помощью (x, y, parent_of_this_node)?
C. Состояние A имеет 4 возможных хода (вправо, влево, вверх, вниз). Если я сделаю первый шаг влево, должен ли он в следующем состоянии вернуться в исходное состояние? Это «правильный» ход? Если нет, то должен ли я каждый раз пересекать дерево поиска, чтобы проверить, в каких штатах я был?
D. Когда я вижу состояние на дереве, где я уже был, должен ли я просто игнорировать его, поскольку знаю, что это тупик? Я полагаю, что для этого мне нужно всегда вести список посещенных состояний, верно?
E. Есть ли разница между деревьями поиска и графиками? Это просто разные взгляды на одно и то же?