Forum » Programiranje » [C++] Pomoč pri nalogi razveji in omeji
[C++] Pomoč pri nalogi razveji in omeji
hurlimannxt ::
Pozdrav,
prosil bi, če bi se našel nekdo, ki bi mi pomagal pri naslednji nalogi...nikakor ne najdem prave rešitve (
http://pastebin.com/wg9zYfG2
na zgornjem linku je tudi možno videti kodo
navodila:
Za predstavitev grafa bomo tudi tukaj uporabili matriko sosednosti C.
Psevdokod samega algoritma je naslednji:
Izpis 1: Psevdokod funkcije RAZVEJI_IN_OMEJI
Algoritem v izpisu 1 ima pet parametrov, tri vhodne in sicer G predstavlja podatke o
grafu, s izhodiščno vozlišče, g pa ciljno vozlišče. Zadnja dva parametra sta izhodna
parametra. V spremenljivki R vrnemo najdeno najkrajšo pot, v spremenljivki
cena_resitve pa ceno te najkrajše poti. Predstavljeni algoritem
RAZVEJI_IN_OMEJI najde vse poti z isto ceno. V ta namen služi funkcija
DODAJ_RESITEV, ki k trenutno poti doda novo pot z isto ceno. Funkcija
VSTAVI_NOVO_RESITEV počisti vrsto z rešitvijo in vstavi novo pot. Funkcija
DODAJ_VOZLISCE zadnjemu vozlišču v poti doda novo vozlišče. Pot hranimo v
statičnem polju. Če določenih povezav v grafu ni, to označimo z vrednostjo 9999.
Če bi kdo želel videti še graf, ga imate na spodnji povezavi
http://pastebin.com/krpJxsv5
jutri imam zagovor, delam že kar nekaj časa in sem se odločil, da se obrnem za kakršnokoli možno pomoc na vas
prosil bi, če bi se našel nekdo, ki bi mi pomagal pri naslednji nalogi...nikakor ne najdem prave rešitve (
http://pastebin.com/wg9zYfG2
na zgornjem linku je tudi možno videti kodo
navodila:
Za predstavitev grafa bomo tudi tukaj uporabili matriko sosednosti C.
Psevdokod samega algoritma je naslednji:
function RAZVEJI_IN_OMEJI(G, s, g, R, cena_resitve) begin pot.vozlisca := 〈s〉 pot.dolzina := 0 R := ∅ cena_resitve := ∞ VSTAVI_V_VRSTO(Q, pot) while not(PRAZNA(Q)) begin p := VZAMI_IZ_VRSTE(Q) u := zadnje vozlišče v poti p for each vozlišče v ∈ G.Sosedi(u) do if not(v ∈ p.vozlisca) then begin p1 := DODAJ_VOZLISCE(p, v) p1.dolzina := p.dolzina + C[u,v] if v = g then begin if p1.dolzina < cena_resitve then VSTAVI_NOVO_RESITEV(R, p1) else if p1.dolzina = cena_resitve then DODAJ_RESITEV(R, p1) end else if p.dolzina < cena_resitve then VSTAVI_V_VRSTO(Q, p1) end end end
Izpis 1: Psevdokod funkcije RAZVEJI_IN_OMEJI
Algoritem v izpisu 1 ima pet parametrov, tri vhodne in sicer G predstavlja podatke o
grafu, s izhodiščno vozlišče, g pa ciljno vozlišče. Zadnja dva parametra sta izhodna
parametra. V spremenljivki R vrnemo najdeno najkrajšo pot, v spremenljivki
cena_resitve pa ceno te najkrajše poti. Predstavljeni algoritem
RAZVEJI_IN_OMEJI najde vse poti z isto ceno. V ta namen služi funkcija
DODAJ_RESITEV, ki k trenutno poti doda novo pot z isto ceno. Funkcija
VSTAVI_NOVO_RESITEV počisti vrsto z rešitvijo in vstavi novo pot. Funkcija
DODAJ_VOZLISCE zadnjemu vozlišču v poti doda novo vozlišče. Pot hranimo v
statičnem polju. Če določenih povezav v grafu ni, to označimo z vrednostjo 9999.
Če bi kdo želel videti še graf, ga imate na spodnji povezavi
http://pastebin.com/krpJxsv5
jutri imam zagovor, delam že kar nekaj časa in sem se odločil, da se obrnem za kakršnokoli možno pomoc na vas
- spremenil: hurlimannxt ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] Iskalno DrevoOddelek: Programiranje | 2126 (1692) | Ciklamen |
» | DIJKSTROV_ALGORITEMOddelek: Programiranje | 2237 (1471) | krneki0001 |
» | [C++] Iskalno drevo implementacijaOddelek: Programiranje | 2329 (1887) | eXoo |
» | Ciklično routanje po grafu ali nekaj podobnegaOddelek: Programiranje | 1211 (1052) | Sergio |
» | pomoc pri skladuOddelek: Programiranje | 1347 (1272) | NoUse4AName |