To jest przykład tego, co chcę robić za pomocą kodu. Wiem, że możesz użyć wyszukiwania punktu skoku, aby łatwo przejść z zielonego węzła do czerwonego węzła bez problemów, a nawet A *. Ale jak to obliczyć za pomocą osnowy.
Na obrazku widać, że przejście z zielonego węzła do czerwonego węzła zajmuje tylko 8 ruchów podczas podążania niebieską ścieżką. Niebieska ścieżka natychmiast przenosi twoją pozycję z jednego fioletowego węzła do następnego. Pole pośrodku, które kosztuje 2 ruchy, to punkt między dwiema strefami wypaczenia, do którego musisz się przesunąć, aby się do niego dostać.
Wybranie niebieskiej ścieżki jest wyraźnie szybsze, ponieważ wystarczy przesunąć się w połowie (z grubsza) aż do żółtej ścieżki, ale jak mam to zrobić programowo?
Aby rozwiązać ten problem, załóżmy, że wokół wykresu znajduje się wiele fioletowych „wypaczeń”, których możesz użyć, ORAZ wiemy dokładnie, gdzie każdy purpurowy punkt wypaczy się i gdzie są na wykresie.
Niektóre fioletowe osnowy są dwukierunkowe, a niektóre nie, co oznacza, że czasami możesz wejść w osnowę tylko z jednej strony, ale nie wracać po wypaczeniu.
Zastanawiałem się nad rozwiązaniem i doszedłem do wniosku, że będę w stanie obliczyć problem, sprawdzając odległość do każdego punktu wypaczenia (minus punkty jednokierunkowe) oraz różnicę między tymi punktami a punktami w ich pobliżu .
Program musiałby w jakiś sposób dowiedzieć się, że korzystniej jest wziąć drugą warp zamiast iść od pierwszego skoku. Tak więc zamiast przesunąć 6 miejsc, następnie wypaczać, a następnie przesuwać pozostałe 8 kroków pieszo (co jest również szybsze niż w ogóle nie używanie osnowy), zajmie to 6 ruchów, a następnie dwa ruchy do drugiej osnowy.
EDYCJA: Zdałem sobie sprawę, że niebieska ścieżka zajmie 12 ruchów zamiast 8, ale pytanie pozostaje takie samo.