/ / Algorytm dla długiej ścieżki w konkretnym podglemie siatki kwadratowej - algorytm, szukanie ścieżki, gwiazda, najdłuższa ścieżka

Algorytm długiej ścieżki w konkretnym podglemie siatki kwadratowej - algorytm, szukanie ścieżki, gwiazda, najdłuższa ścieżka

Weź kwadratową dachówkę samolotu i wyobraź sobieskończony, podłączony i po prostu podłączony podzbiór D płytek. D można oczywiście również interpretować jako konkretny podgraph kwadratu siatki, biorąc węzeł dla każdego pola i łącząc sąsiednie węzły.

Powiedzmy, że mam węzeł początkowy / kafelek A i koniec płytki B oba w D i w granicy D.

Czy istnieje prosty, prosty algorytm znajdowania rozsądnie długich ścieżek samo-unikania w D między A i B?

Znalazłem literaturę odnoszącą się do znalezieniaabsolutnie najdłuższa ścieżka i nieoptymalne algorytmy, które przy bardzo dobrym wyglądzie są niezwykle złożone. Zastanawiałem się, czy istnieją algorytmy poskramiaczy, które czynią wystarczająco dobrze.

Moim jedynym pomysłem jest obliczenie najkrótszej ścieżki przez A *, a następnie jej zniekształcenie poprzez "złożenie" w bok, aby wypełnić jak najwięcej miejsca, ale nie jestem pewien, czy to dobry pomysł.

Innym pomysłem jest to, czy jest prawiegłupio łatwy wzór typu "scanline", który wypełnia przestrzeń między A i B, a zatem działa dobrze dla "prostokąta" D. Podejrzewam, że to istnieje, ale nie mogę go znaleźć.

Odpowiedzi:

0 dla odpowiedzi № 1

W przypadku siatki kwadratowej większej niż 2-wymiarowe:
Problem najdłuższej ścieżki jest uważany za NP-trudny; nie można go rozwiązać w czasie wielomianowym, chyba że P = NP dla jakiegoś dowolnego wykresu.

Powiedziawszy to, możesz zrobić DFS na każdym węźle w celu określenia najdłuższej ścieżki. Wszystko to przy założeniu, że wykres jest ważony (co nie zostało wskazane w poście). Ważne jest, aby pamiętać, że nie powinieneś pozwolić na powtarzanie wierzchołków.

Na końcu systemu plików DFS porównaj bieżącą najdłuższą ścieżkę z ścieżką, która wcześniej była uważana za najdłuższą. Zastąp ten wynik najdłuższym czasem, jaki jest potrzebny.

Czas pracy nie jest wielki; wykładniczy

W przypadku kwadratu siatki o wymiarach 2-wymiarowych