Wpis z mikrobloga

Cześć, czy mógłby ktoś podrzucić jakieś wskazówki dotyczące znalezienia najkrótszej drogi, z punktu A, do punktu B, ale pomiędzy wieloma punktami (jadąc z punktu A, do punktu B, musi dojechać również do innych punktów, lub prościej - odwiedzić określone punkty, najkrótszą drogą)? Czytałem na temat algorytmu Dijkstry, ale on nie rozwiązuje tego problemu.
Dziękuję.

#programowanie #naukaprogramowania #cpp
  • 22
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Dede18: Nie da się tego (znaleźć najkrótszą trasę, żeby odwiedzić wszystkie punkty) zrobić na obecny stan wiedzy świata lepiej niż siłowo. To jest problem NP-zupełny.
  • Odpowiedz
@ponton: Więc może wiesz na czym opierają się różne nawigacje, gdzie wybieramy punkt A, i B oraz pośrednie? Rozumiem że to nie jest najlepsza droga, ale w pewnym stopniu optymalna.
  • Odpowiedz
@Dede18: Tam się po prostu ustala kolejność tych punktów pośrednich i oblicza się najkrótszą odległość między kolejnymi parami. Np. jak ustawisz kolejność Warszawa -> Poznań -> Łódź -> Berlin, to najpierw pojedziesz do Poznania, potem cofniesz się do Łodzi, a z niej dopiero do Berlina, mimo że szybciej byłoby najpierw przez Łódź, a dopiero potem Poznań. Znalezienie tej optymalnej kolejności punktów pośrednich jest możliwe tylko brute forcem.
  • Odpowiedz
Więc może wiesz na czym opierają się różne nawigacje, gdzie wybieramy punkt A, i B oraz pośrednie? Rozumiem że to nie jest najlepsza droga, ale w pewnym stopniu optymalna


@Dede18: Po pierwsze nie ma czegoś takiego jak w pewnym stopniu optymalna, albo jest optymalna albo nie jest (optymalna == najlepsza). A nawigacje stosują przeróżne heurystyki żeby znaleźć drogę bliską optymalnej w rozsądnym czasie. Mnóstwo prac naukowych istnieje na temat stosowania
  • Odpowiedz
@leoha: Raczej się przyjrzę bliżej algorytmowi genetycznemu, żeby rozwiązać ten problem (Chyba że istnieją inne, a również stosunkowo proste algorytmy?). Dzięki!
  • Odpowiedz
@Dede18: genetyczny sobie radzi, ale powyżej X punktów już jest nieopłacalny. Z tego co pamiętam. Ile będziesz miał tych punktów pośrednich?
  • Odpowiedz
@Dede18: mój różowy poleca symulowane wyżarzanie i jestem skłonny jej przyznać rację. Zaraz Ci powiem jak to w genetycznych mi wychodziło.
  • Odpowiedz
@Dede18 : ok, ja badałem dla 21 miast i wykonywało się to dłuugo. W zależności od operatorów krzyżowania i dobranych innych parametrów (liczebność populacji, procent nowych potomków, itd) po ok 300 generacjach wynik już znacząco się nie poprawiał.
Czystych genetycznych więc nie polecam.
  • Odpowiedz
@Anlak: @wnocy: Czy jestem w stanie jakąkolwiek metodą zejść do czasu kilku-kilkunastu minut przy kilkuset punktach? Oczywiście zakładam duży margines błędu wyniku końcowego, ale jak wspomniałem, to nie jest aż tak istotne przy dużej ilości.
  • Odpowiedz