[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: gryxon »

Witajcie,
W zadaniu mamy podany labirynt, oraz rozrzucone po nim skarby. Muszę znaleźć ścieżkę prowadzącą od wejścia do wyjścia, która pozwoli zebrać jak najwięcej skarbów.

Format zadania(a raczej wygląd grafu):

Kod: Zaznacz cały

###E#######
###   SSS #              
### #####W
###   SS  #
##########

E-Wejście
W-wyjście
S-skarby
#-ściana
Czy dobrze myślę, że to się sprowadza do znalezienia najdłuższej ścieżki między dwoma wierzchołkami? Czy może da się to rozwiązać w czasie wielomianowym?
Ostatnio zmieniony 16 gru 2014, o 15:22 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Awatar użytkownika
93Michu93
Użytkownik
Użytkownik
Posty: 222
Rejestracja: 2 sty 2013, o 19:33
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 12 razy
Pomógł: 25 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: 93Michu93 »

Najdłuższą ścieżkę pomiędzy E i W?

Kod: Zaznacz cały

#       E
#     # S
#     # S
#       W
jeżeli mamy taki przypadek, to w trzech ruchach możemy dojść do wyjścia, zbierając przy tym oba skarby lub możemy iść dłuższą drogą i nie zebrać żadnego skarbu. Może po prostu przejść ten labirynt rekurencyjnie, szukać wyjścia i jeżeli już się dojdzie do wyjścia, to zapisać ile skarbów się znalazło. Na końcu wybrać tą ścieżkę, gdzie skarbów było najwięcej. Pewnie prolog ładnie by sobie z tym poradził. Złożoność będzie jakaś masakryczna ale chyba żadna rozsądna wielomianowa nie jest możliwa.
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: gryxon »

Poprzez, sformułowanie sprowadzenie do problemu najdłuższej ścieżki w grafie, domyślnie dałem wagę skarbom jeden natomiast pozostałym wierzchołkom(krawędziom) zero.

Dzięki za opinie. ;p Jak ktoś będzie miał jeszcze inne zdanie to niech pisze. Najwyżej zaklepie wykładnika.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: Afish »

Nigdzie nie ma wymogu, że musi to być ścieżka prosta, więc po prostu idź kolei po wszystkie skarby omijając wyjście, a potem wyjdź z labiryntu.
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: gryxon »

Ścieżka oczywiście musi być prosta , nie można dwa razy stanąć na to samo pole
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: Afish »

No to obawiam się, że jest to , czyli NP.
Możesz spróbować przybliżać wykorzystując coś takiego:
1. Znajdujesz najkrótszą ścieżkę między wejściem a wyjściem.
2. Znajdujesz wszystkie mosty. Jeżeli most jest na ścieżce z punktu 1, to efektywnie rozbija graf na dwa rozłączne podgrafy, więc masz do rozwiązania dwa mniejsze problemy. Jeżeli most nie jest na ścieżce z punktu 1, to nie ma sensu przez niego przechodzić, więc wywalasz część grafu.
3. Pałujesz BFSem każdy graf i sprawdzasz wszystkie ścieżki. Można też próbować algorytmu zachłannego, zależy od charakterystyki danych i rozmiaru problemu.
Skąd to zadanie?
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[Algorytmy] Skarby, labirynty. Najdroższa ścieżka.

Post autor: gryxon »

Nie jest to żadne zadanie, raczej projekt z programowania na I semie. Początkowy projekt zakładał znalezienia jakiejkolwiek ścieżki z wejścia do wyjścia. Jako, że to raczej byłoby za proste jak na większy program to stwierdziłem, że sobie utrudnię temat. Prowadzący przedmiotu go zaakceptował . Tak myślałem, że to np. Trudno jeszcze pomyśle, może zaproponuje jakiś algorytm heurystyczny(albo zostawię wykładnika...) . Wielkie dzięki za pomoc.

btw. wykładnik jak nie ma dużych "komnat" to daje rade dla rozsądnych wymiarów plansz.
ODPOWIEDZ