• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ścieżka o największym koszcie w grafie ważonym

Object Storage Arubacloud
0 głosów
291 wizyt
pytanie zadane 6 marca 2023 w Algorytmy przez pasjonat_algorytmiki Pasjonat (19,540 p.)
edycja 6 marca 2023 przez pasjonat_algorytmiki
Mam wydaje mi się, że ciekawy problem. Dużo uczy się algorytmów do najkrótszych / o najmniejszym koszcie scieżek, np BFS czy Dijkstra. Ale ostatnio zainteresowałem się najdłuższymi scieżkami, problem, gdzie krawędzie mają wagi jeden, i trzeba znaleźć najdłuższą scieżkę w takim grafie, już sobie z nim poradziłem: dzielę graf na SCC, wrzucam na kolejkę, z których nie wychodzą już żadne, mam licznik ile wychodzi krawędzi z każdego wierzchołka, i jak przetwarzam wierzchołek to idę po wszystkich krawędziech, którego do niego idą, i odejmuję jeden. I tak w kółko jak nic nie wychodzi to wrzucam na kolejkę, aktualizuje ile wchodzi..... - dynamik. Chodzi mi o to co jest w tym zadaniu: https://atcoder.jp/contests/dp/tasks/dp_g , tylko w tym zadaniu nie trzeba dzielić na SCC, bo nie ma cykli.

Zastanawiam się jak znaleźć ścieżkę o największym koszcie, intuicyjne wydaje się, żeby zrobić Dijkstrę, tylko zamiast od najmniejszych iść do największych, tylko nie wiem czy to jest dobre. Bo teorytycznie wydaje mi się, że na podobnej zasadzie jak w algorytmie Dijkstry, będziemy mieć pewność, że jest to ścieżka o największym koszcie. Więc mam pytania:

1- czy to jest dobre

2 - Czy da się to zrobić w złożonności szybszej niż Dijkstra?

Z góry dziękuję za pomoc i poświęcony czas!

edit: oczywiście zakładam, że po każdej krawędzi można przejść maksymalnie raz, bo tak to byśmy sobie w kółko chodzili i zrobili koszt nieskończoność.

3 - czy algorytmy najdłuższch / o największym koszcie pojawiają się w zadaniach?, bo ja np. jeszcze nigdy się z czymś takim nie spotkałem, oprócz tego z Atcodera.
komentarz 6 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
tylko z tą Dijkstrą od największych to wsm mam taki problem, że ciężko stwierdzić kiedy już w danej ścieżce szedłem przez dany wierzchołek, bo w Dijkstrze naturalnie to omijaliśmy, bo to niepotrzebnie podbijało wynik.
komentarz 6 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)

@pasjonat_algorytmiki, 

I teraz to się już wsm zastanawiam, czy nie można zrobić tego samego co w tym, gdzie krawędzie mają wagi 1.

komentarz 6 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
Na 90% wydaje mi się, że trzeba zrobić to samo co w tym zadaniu z atcodera, tylko brać pod uwagę krawędzie. Ale nie jestem pewien

1 odpowiedź

+1 głos
odpowiedź 6 marca 2023 przez Whistleroosh Maniak (56,980 p.)
wybrane 6 marca 2023 przez pasjonat_algorytmiki
 
Najlepsza

Nawet jeśli graf nie będzie ważony to znalezienie najdłuższej ścieżki z wierzchołka jest w zasadzie równoważne znalezieniu ścieżki Hamiltona co jest NP-zupełne, czyli nie da się tego rozwiązać w czasie wielomianowym.

Przykład dla którego Dijsktra nie działa

Natomiast jest inne ciekawe zadanie. Znajdź najdłuższą ścieżke w drzewie. Do tego jest bardzo proste i przyjemne rozwiązanie

komentarz 6 marca 2023 przez pasjonat_algorytmiki Pasjonat (19,540 p.)
No wsm tak ten case co gość opisał na stacku kończy moje próby zrobienia tego Dijkstrą....

Wydaje mi się, że rozwiązanie jest takie, że idziesz sobie jakimś DFS-em(z dowolnego wierzchołka) do dowolnego wierzchołka, który jest ostatni na skraju(bez sensu zacząć z nie będącego ostatnim na skraju, bo wtedy odległość będzie mniejsza) i z takiego obojętnie jakiego wierzchołka puszczamy DFS-a, który znajdzie najdłuższą ścieżkę, i to jest wynik. Przypomniałem sobie o zadaniu, taksamo z tych eliminacji EJOI 2020, po 14 OIJ i tam trzeba było znaleźć długość takiej najdłuższej ścieżki i jeszcze policzyć ile ich jest. Z tym policzeniem już mam problem i nie wiem jak to zrobić. Dasz jakiegoś hinta?
komentarz 6 marca 2023 przez Whistleroosh Maniak (56,980 p.)
Tak. Jeśli ten wierzchołek "ostatni na skraju" to najbardziej oddalony wierzchołek od źródła to tak się to robi. Jak trzeba liczyć ile ich jest to dp na drzewie

Podobne pytania

0 głosów
2 odpowiedzi 253 wizyt
pytanie zadane 29 października 2022 w Algorytmy przez Latarnik Użytkownik (650 p.)
0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 21 czerwca 2018 w Algorytmy przez k222 Nałogowiec (30,150 p.)
0 głosów
1 odpowiedź 446 wizyt
pytanie zadane 16 stycznia 2023 w C i C++ przez polandonion Mądrala (7,040 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...