Я читаю о поиске пути A* с использованием эвристики и манхэттенского метода и не могу понять логика в одном конкретном месте в статье.
Я застрял сразу после изображения ниже
а чтобы лучше понять вот цитата
На этот раз, когда мы проверяем соседние квадраты, мы обнаруживаем, что тот, что находится непосредственно справа, является квадратом стены, поэтому мы его игнорируем. То же самое касается и того, что чуть выше. Мы также игнорируем квадрат чуть ниже стены. Почему? Потому что вы не можете добраться до этого квадрата прямо с текущего квадрата, не пересекая угол ближайшей стены. Вам действительно нужно сначала спуститься, а затем перейти к этому квадрату, двигаясь за угол в процессе. (Примечание. Это правило обрезания углов необязательно. Его использование зависит от того, как расположены узлы.)
и - я выделил часть, которая меня смущает
Остаются пять других квадратов. Два других квадрата под текущим квадратом еще не находятся в открытом списке, поэтому мы добавляем их, и текущий квадрат становится их родителем. Из остальных трех квадратов два уже находятся в закрытом списке (начальный квадрат и тот, что находится чуть выше текущего квадрата, оба выделены синим цветом на диаграмме), поэтому мы их игнорируем. Кроме того, проверяется последний квадрат, расположенный слева от текущего квадрата, чтобы увидеть, не станет ли показатель G ниже, если вы пройдете через текущий квадрат, чтобы попасть туда. Нет кубиков. Итак, мы закончили и готовы проверить следующую клетку в нашем открытом списке.
Таким образом, автор предполагает, что F ( G + H ) непосредственно слева теперь больше, чем F справа внизу. Логически, посмотрев на это ДА, даже ребенок согласится, что вы должны идти к КРАСНОМУ, поэтому идите вниз и через СИНЮЮ стену, но математически (если нет чего-то очевидного, что я пропустил) я видеть это таким образом в этот момент
Итак, если бы я писал этот алгоритм на C#, я бы застрял, потому что и слева, и снизу от «здесь и сейчас» будет возвращаться одно и то же число, 60? Как я узнаю, какой из них принесет мне наибольшую пользу?
Даже в этом сценарии число по-прежнему будет равно 60.
10 идти прямо налево + 50 (H)
10, чтобы пойти прямо вниз + 50 (H)
Я что-то пропустил здесь? Что я делаю не так?