Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Prim algoritmusa Gubicza József (GUJQAAI.ELTE). Jellemzők Cél: Adott egyszerű gráfban a min. költségű feszítőfa meghatározása. Algoritmikus szinten: 3.

Hasonló előadás


Az előadások a következő témára: "Prim algoritmusa Gubicza József (GUJQAAI.ELTE). Jellemzők Cél: Adott egyszerű gráfban a min. költségű feszítőfa meghatározása. Algoritmikus szinten: 3."— Előadás másolata:

1 Prim algoritmusa Gubicza József (GUJQAAI.ELTE)

2 Jellemzők Cél: Adott egyszerű gráfban a min. költségű feszítőfa meghatározása. Algoritmikus szinten: 3 tömb feltöltése; - d[1..n] a csúcsokhoz tartozó min. költségek ill. - π (parent) a csúcsokhoz tartozó szülők meghat. - a kész[1..n] segédtömb segítségével, amely azt mutatja, vizsgáltuk-e már az adott csúcsot. A gráf élcímkéi pozitív értékeket vehetnek fel, a csúcscímkék pozitív, ill. végtelent.

3 Az algoritmus A minimum keresés a d tömbbeli min. értékre vonatkozik  a legkisebb költségű csúcs, ami még nincs kész. A fő változás a Dijkstra algoritmushoz képest, hogy itt csak az adott él hosszát (ellenőrizzük) tároljuk le, nem pedig a d[u] –val vett összegét.

4 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d∞∞∞∞∞∞∞ π∕∕∕∕∕∕∕ Kész0000000 ∞ ∞∞ ∞ ∞ ∞∞ Kezdőállapot: minden csúcsot ∞-el címkézünk, szüleiket NIL- re állítjuk, valamint a Kész értékeket 0-kra, és kijelöljük a kezdőcsúcsot. s =

5 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0∞∞∞∞∞∞ π∕∕∕∕∕∕∕ Kész1000000 ∞ 0∞ ∞ ∞ ∞∞ A kezdőcsúcs értékét 0-ra állítjuk, így a FeltMinker(d[1..n], u, Kész[j] = 0) őt fogja megtalálni először. Ezt a csúcsot készre állítjuk. s =

6 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d05∞∞∞∞∞ π∕1∕∕∕∕∕ Kész1000000 5 0∞ ∞ ∞ ∞∞ A csúcs minden szomszédjára megnézzük (amelyek még nincsenek Kész, 5 és 3), hogy: c(u,v) < d[v] Tehát az él, javít-e a költségen? Ha igen, d[v] = c(u,v) és π[v] := u szülő jelölése s =

7 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d058∞∞∞∞ π∕11∕∕∕∕ Kész1000000 5 0∞ ∞ ∞ ∞ 8 Ha végeztünk az összes szomszéd vizsgálatával…. s =

8 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d058∞∞8∞ π∕11∕∕2∕ Kész1100000 5 0∞ 8 ∞ ∞8 Iterálunk még egyet, a legkisebb költségű még nem kész elem a 2-es csúcs (d{5}), még nem kész szomszédai: 6, 4, 3 s =

9 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584∞8∞ π∕112∕2∕ Kész1100000 5 0 4 8 ∞ ∞8 Mivel a 3-as csúcsba érés nem javítana a költségen 7 HAMIS, így tovább iterálunk. s =

10 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584∞8∞ π∕112∕2∕ Kész1101000 5 04 8 ∞ ∞8 Tovább iterálunk a 4-esre, és elkezdjük vizsgálni a 6, 5 csúcsokkal s =

11 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d058452∞ π∕11244∕ Kész1101000 5 04 2 ∞ 5 8 A 6-os csúcs költségén javít, így a 6-os szülője mostantól ő lesz (felülírás!), ill. az 5-ös költségén is. s =

12 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d058452∞ π∕11244∕ Kész1101010 5 04 2 ∞ 58 Tovább iterálunk a 6-osra, vizsgálandó szomszédai: 7, 5 s =

13 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584527 π∕112446 Kész1101010 5 04 2 7 58 A 7-es költségén javít, azonban az 5-ösön nem, mivel 8<5 hamis. s =

14 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584527 π∕112446 Kész1101110 5 04 2 7 58 Tovább iterálunk a 5-ösre, ami a 7-essel nem ér el javulást, többre nem is vizsgáljuk. s =

15 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584527 π∕112446 Kész1101111 5 04 2 7 58 A 7-esen nincs mit vizsgálni, csak készre jelöljük. s =

16 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584527 π∕112446 Kész1111111 5 04 2 7 58 Tovább iterálunk a 3-asra, készre jelöljük, és mivel nincs nem kész szomszédja, így… s =

17 1 4 5 6 3 2 7 7 5 8 8 4 3 4 2 5 8 7 9 1234567 d0584527 π∕112446 Kész1111111 5 04 2 7 58..végeztünk. Ezzel megkaptuk eredményül a min. költségű feszítőfát a gráfunkban. s =


Letölteni ppt "Prim algoritmusa Gubicza József (GUJQAAI.ELTE). Jellemzők Cél: Adott egyszerű gráfban a min. költségű feszítőfa meghatározása. Algoritmikus szinten: 3."

Hasonló előadás


Google Hirdetések