![]() |
Dijkstra algoritam ("Dijkstra's Shortest Path Algorithm")
Ima li negdje kvalitetno hrvatsko objašnjenje (neka knjiga ili nešto) ili se moram osloniti na (za ovu tematiku težu) englesku literaturu? :stoopid:
hvala :beer: |
Covjek je imao vise "algoritama", sto onih u teoriji grafova, pa do onih za prebacivanje u postfix notacije... Koji algoritam tebe tocno zanima? :)
|
Citiraj:
|
http://www.megaupload.com/?d=GWVT44TR
Slajdovi 73-78. Ako budes imao kakvih pitanja javi mi se na MSN. EDIT: Uglavnom. Posjetiš prvi čvor, poslije njega posjetiš njemu najbliži čvor. Zatim provjeravaš koji ti je nabliži čvor dostižan direktno preko prvog čvora ili preko prvog i drugo. Onda posjetiš taj najbliži čvor, pa opet gledaš koji ti je najbliži čvor koji možeš posjetiti preko dosad posjećenih čvorova. I tako dok ne obiđeš čitav graf. Nije dozvoljeno ponavljanje iste grane u jednom prolazu kroz graf. |
Citiraj:
HTH. |
Sutra ću probati nešto skužiti s mentorom (inače sam program prijavio kao maturalni rad) :) ima gotov kod u PHPu, C/C++ itd. tako da to nije problem, ali moram razumijeti algoritam kako bih ga mogao prilagoditi svojim potrebama.
ali koliko sam čitao okolo, vidim da se može prilagoditi za javni prijevoz tj. rutiranje od stanice A do stanice B (ili modifikacije istog algoritma). ja sam to zamislio da "težine" između svake točke bude neki broj proračunat iz (npr) 1) udaljenosti između stanica 2) ista linija ili ne 3) presjedanje na istoj stanici ili hodanje "preko ceste" 4) vrijeme polaska iduće linije u slučaju presjedanja 5) approx. vrijeme između navedene dvije točke/stanice 6) vrsta prijevoznog sredstva (autobus/tramvaj/metro/vlak...) 7) ... jel bi to...klimalo? :) |
Citiraj:
|
Citiraj:
|
Citiraj:
|
Citiraj:
Citiraj:
probat ću složiti pa javim rezultate/brzine :beer: |
Da, za svaku granu računaš nezavisnu težinu (težinu koja nema veze sa ostalim granama). Inače, za optimizaciju protoka imaš neke druge algoritme (možeš ih naći u onom PPP što sam ti poslao).
|
Citiraj:
|
tnx. vidim da A* ima dio Dijkstrinog algoritma + heuristicki pristup (EDIT: ili on može koristiti i dinamičke težine?)
no, imam jedan problem - koliko sam shvatio, oba algoritma zahtijevaju unaprijed definirane težine između svih vrhova. ako ja imam 3 rute, ovisno s koje prethodne točke/vrha dolazim ovisit će mi težina između slijedeća dva vrha. što želim reći? ako imam ovu situaciju http://slike.hr/slike-male/i/imag0420_57e92.jpg zamislimo da linija br. 2 ide ravno do kraja - tada će težina od "središta" do slijedećeg vrha prema kraju biti najmanja (nema presjedanja), ako će pak ispitivati s linije 1 ili 3 - postoji presjedanje i automatski je težina veća, no međutim može li se definirati više težina za isti put (osim naravno smjera tamo/natrag)? |
Citiraj:
http://img98.imageshack.us/img98/608/69470387.th.png (ja sam crtao usmjereni graf, mozes isto to i sa neusmjerenim). vec sam rekao malo vise gore da mozes imat vise veza.. edit: malo sam razmisljao, i mozda bi ti bilo jednostavnije poigrat se sa grafom, recimo nesto ovako: http://slike.hr/slike-male/u/untitled_db107.png. ako bi tako prezentirao mrezu, onda nemas problema sa dinamickim tezinama ni sa icim drugim, samo pises sve tezine (na ove crvene crte, jelte) i pustis algoritam da se snalazi.. |
Citiraj:
http://slike.hr/slike-male/a/algoritam2copy_31e2c.jpg kako da ja algoritmu kažem da ako "dolazi" s donje strane, s plave linije uzima vrijednost 150, a ako "dolazi" s lijeva (s crne linije) uzima vrijednost 10. to me muči... :stoopid: |
Citiraj:
Citiraj:
hint: http://slike.hr/slike-male/u/untitled_dac36.png sad tek vidio, fali mi jos jedna crta, di plavi bus odlazi na iducu stanicu... |
nadasve zanimljivo rjesenje :) neznam zašto sam se ja (nesvjesno) ograničio na to da taj "imagnirani" graf mora odgovarati fizičkom obliku u stvarnosti... uglavnom, shvatio ideju, tnx. :)
javim se za par dana ;) Citiraj:
|
ima li netko ideju kako "unaprijed" izračunati težine rubova?
jer ako imam stanice A,B i C i ako idem direktno A -> C, rubovi (vremena polaska busa na stanicu) će biti drugačiji nego ako se ide A -> B -> C. Kako mogu odrediti rubove "unaprijed" jer ovisno kako se Dijkstra širi - tako se proračunavaju i rubovi tj. ovisno o ruti koju on pospoji - na taj način će se generirati i rubovi. Kako to izvesti? |
Nisam najbolje shvatio. Mozes li skicirati konkretan slucaj?
|
Sva vremena su GMT +2. Sada je 23:06. |
Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 1999-2024 PC Ekspert - Sva prava pridržana ISSN 1334-2940
Ad Management by RedTyger