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

algorytm djikstra w zadaniu

Object Storage Arubacloud
+1 głos
462 wizyt
pytanie zadane 24 kwietnia 2015 w C i C++ przez ziemjok Gaduła (4,160 p.)

Cześć

Jestem w trakcie (a raczej na początku :D) pisania pewnego algorytmu ale niestety nie od której strony to ugryźć.

Muszę napisać algorytm liczący najkrótszą drogę międzzy podanymi punktami. Program pobiera od użytkownika rozmiar (ilość kolumn i wierszy), punkt startowy i końcowy, wagi dla każdego pola.

Czytałem że należy użyć w tym zadaniu m. in algorytm djikstry, kopiec i listę, niestety nie wiem jak poprawnie to zaimplementować. Stworzyłem taką strukturę:

struct str{
	int wspx;
	int wspy;
	int indeks;
    int koszt_dojscia;
	int waga;
} pole[100];

zgodnie z tym co przecztałem w internecie ustawiam koszt_dojscia w każdym obiekcie pole na bardzo dużą wartość. Nie rozumiem jednak co mam robić dalej. Jak mam przesuwać się po tych polach(wg jakiej zasady) ,gdzie zapisywać obliczone odległości i co mam robićz polami które już obliczyłem?

 

z góry dzięki za pomoc

pozdrawiam

1 odpowiedź

+2 głosów
odpowiedź 24 kwietnia 2015 przez Qhoros Mądrala (7,110 p.)

Algorytm Dijkstry to inaczej algorytm Prima. Te dwie osoby wymyśliły ten algorym niezależnie od siebie. ;) A teraz w czym rzecz. W tym algorytmie na samym początku wybieramy sobie dowolny wierzchołek. Tak jak piszesz wybiera go użytkownik. Następnie masz do wyboru wszystkie możliwe wyjścia z tego wierzchołka. Jednak jest to rodzaj algorymtu szukający MINIMALNEGO drzewa spinającego, dlatego musisz iść po ścieżce z najmniejszą wagą. Po dotarciu do drugiego wierzchołka musisz sprawdzić, spośród wszystkich możliwych (zatem uwzględniając także pierwszy wierzchołek) kolejną minimalną krawędź. Doszedłwszy to trzeciego wierzchołka musisz sprawdzać drogi wychodzące zarówno z pierwszego, drugiego jak i trzeciego wierzchołka i wybrać tą o najmniejszej wadze. Możesz sobie przejrzeć notatki z ćwiczeń z matematyki dyskretnej. Tam gdzie masz algorytm Kruskala zrób sobie metodą Dijkstry/Prima. Wynik minimalnego drzewa powinien wyjść identyczny jak metodą Kruskala.

 

Dodatkowo obejrzyj sobie:

https://www.youtube.com/watch?v=gbPFyGP_EzU&list=PLROOIV7hGpZgpohulDygBjIHFxgwYP52T



Bardzo dobry kanał z matematyką w roli głównej. ;)
Pozdrawiam

Podobne pytania

+1 głos
1 odpowiedź 295 wizyt
0 głosów
1 odpowiedź 132 wizyt
pytanie zadane 7 lutego 2022 w C i C++ przez Mateusz_Abra Nowicjusz (120 p.)
0 głosów
1 odpowiedź 575 wizyt
pytanie zadane 2 listopada 2020 w C i C++ przez scuhcaj Nowicjusz (120 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!

...