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

INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.

Hasonló előadás


Az előadások a következő témára: "INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai."— Előadás másolata:

1 INFOÉRA 2006 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai képzések a ELTE-n

2 Gráfok bejárása Gráfbejárás: Demonstrálás színekkel:
INFOÉRA 2006 Gráfok bejárása Gráfbejárás: kiindulunk egy tetszőleges pontból, éleken haladva eljutunk az összes ponthoz. Demonstrálás színekkel: Fehér pontok: ahova még nem jutottunk el. Szürkék: ahova már eljutottunk, de még „dolog van vele”. Feketék: ahova már eljutottunk, s minden belőlük kivezető élt is megvizsgáltunk. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2

3 Gráfok bejárása Demonstrálás színekkel:
INFOÉRA 2006 Gráfok bejárása Demonstrálás színekkel: A gráfbejárás kiinduló állapotában egyetlen pont szürke, az összes többi pedig fehér. A végállapotban minden pont fekete (ha elérhető a kezdőpontból). A színekkel tehát a pontok halmazát három részhalmazra bontottuk. A gráfbejárás pontokat sorol át egyik részhalmazból egy másik részhalmazba. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3

4 INFOÉRA 2006 Mélységi bejárás Mélységi bejárás: Adatszerkezet, amiből a legutoljára bekerült lép ki először – verem. Tároljuk a szürke pontokat egy veremben! Van még feldolgozatlan pont = van még szürke pont = nem üres a verem! A bejárás egy feszítőfát hoz létre (mélységi feszítőfa). A verem megtakarítható rekurzióval. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4

5 Mélységi bejárás Bejárás csúcsmátrix esetén. Futási idő: O(Pontszám2)
INFOÉRA 2006 Mélységi bejárás Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) és Szín(i)=fehér akkor Mélységi bejárás(i) Ciklus vége Szín(p):=fekete Eljárás vége. Mélységi bejárás indítása(p): Szín:=(fehér,…,fehér); Mélységi bejárás(p) Bejárás csúcsmátrix esetén. Futási idő: O(Pontszám2) Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

6 Mélységi bejárás Bejárás csúcslista esetén. Futási idő: O(Élszám)
INFOÉRA 2006 Mélységi bejárás Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig Ha Szín(Szomszéd(p,i))=fehér akkor Mélységi bejárás(Szomszéd(p,i)) Ciklus vége Szín(p):=fekete Eljárás vége. Mélységi bejárás indítása(p): Szín:=(fehér,…,fehér); Mélységi bejárás(p) Bejárás csúcslista esetén. Futási idő: O(Élszám) Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

7 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Körmentes-e egy irányított gráf? Alapötlet: Ha a bejárás során nincs visszamutató él, akkor a gráf körmentes. Körmentes?(p): km:=igaz; Honnan(1):=1 Mélységi bejárás(1,km) Körmentes?:=km Eljárás vége. Feltétel: erősen összefüggő vagy összefüggő (a példában) az 1. pontból. Az előremutató és a kereszt-élek nem okoznak kört (fekete pontba vezetnek). Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

8 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p,km): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Ha km akkor Honnan(j):=p Mélységi bejárás(j,km) különben Ha szín(j)=szürke akkor km:=hamis Ciklus vége Szín(p):=fekete Eljárás vége. Gráfok, gráfalgoritmusok : :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8

9 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Körmentes-e egy irányítatlan összefüggő gráf? Alapötlet: Ha a bejárás során nincs visszamutató él, akkor a gráf körmentes. Körmentes?(p): km:=igaz; Honnan(1):=1 Mélységi bejárás(1,km) Körmentes?:=km Eljárás vége. Itt előremutató él és kereszt-él nincs. Gráfok, gráfalgoritmusok : :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9

10 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p,km): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Ha km akkor Honnan(j):=p Mélységi bejárás(j,km) különben Ha szín(j)=szürke és Honnan(p)≠j akkor km:=hamis Ciklus vége Szín(p):=fekete Eljárás vége. A szülőbe vezető él nem visszamutató! Gráfok, gráfalgoritmusok : :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

11 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Topologikus rendezés Alapötlet: Egy irányított gráf mélységi bejárásakor az elhagyási idők szerinti sorrend pontosan a topologikus sorrend ellentettje – elhagyáskor tegyük a pontokat egy verembe! Topologikus rendezés(p): Mélységi bejárás(p) Veremkiírás Függvény vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

12 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Mélységi bejárás(j) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

13 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Erősen összefüggő komponensek Erősen összefüggő komponens: bármely pontjából bármely másik pontjába vezet út. Két erősen összefüggő komponens között csak egyirányú kapcsolat lehet. Ha minden él irányát megfordítjuk, az az erősen összefüggő komponenseken nem változtat. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

14 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Erősen összefüggő komponensek Járjuk be a gráfot mélységi bejárással, elhagyási időket számolva! Állítsuk elő a gráf fordítottját! Járjuk be a fordított gráfot, a kezdőpontokat mindig az eredeti elhagyási idő szerint fordított sorrendben véve! Minden ilyen bejárás egy erősen összefüggő komponenst ad meg – ami kimaradt, azokra újabb bejárások. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

15 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Erősen összefüggő komponensek Körben levő pontok az élek megfordítása után is körben maradnak. Fában levő pontokból elhagyási idő szerinti fordított sorrendben nem vezet ki új él. Egyik irányú él a komponensek között Másik irányú él a komponensek között Nincs él a komponensek között Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

16 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Erősen összefüggő komponensek(Db,K): Szín():=(fehér,…,fehér); Db:=0 Ciklus i=1-től Pontszám-ig Ha Szín(i)=fehér akkor Mélységi bejárás1(i) Ciklus vége Élfordítás Veremből(p) Ha Szín(p)=fehér akkor Mélységi bejárás(p) Db:=Db+1; K(Db):=p Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

17 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás1(p): Szín(p):=szürke Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Mélységi bejárás1(j) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

18 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Elvágó élek irányítatlan gráfban Alapötlet: Egy (u,v) él akkor és csak akkor elvágó él, ha a mélységi feszítőfában a v pontból, valamint a v ponttól lefelé levő pontok közül legmagasabbra leg-feljebb a v-ig van visszamutató él. Jelölje l(v) a v gyökerű részfa legmagasabbra vezető éle elérési idejét! Megjegyzés: l(v)≤D(v). Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

19 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Elvágó élek irányítatlan gráfban Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

20 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke; idő:=idő+1; D(p):=idő; l(p):=D(p) Ciklus iKi(p) Ha Szín(i)=fehér akkor Táv(i):=Táv(p)+1; Mélységi bejárás(i) Ha l(i)<l(p) akkor l(p):=l(i) különben ha Szin(i)=szürke és Táv(i)<Táv(p)-1 akkor Ha l(p)<D(i) akkor l(p):=D(i) Ha l(i)=D(i) akkor Sorba(p,i) Ciklus vége Szín(p):=fekete Eljárás vége. A (p,i) akkor elvágó él, ha az i gyökerű részfából nem vezet vissza i fölé él. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

21 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Elvágó pontok Alapötlet: A gyökér elvágó pont, ha a mélységi feszítőfában legalább 2 gyereke van. Egy u pont akkor elvágó pont, ha legalább egy gyerekéből nem vezet él u fölé (azaz (u,v) él, amire: l(v)≥D(u)) Elvágó pontokat inkább a rekurzión kívül kellene. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

22 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke; idő:=idő+1; D(p):=idő; l(p):=D(p); van:=hamis; db:=0 Ciklus iKi(p) Ha Szín(i)=fehér akkor Táv(i):=Táv(p)+1; Szín(i):=szürke Mélységi bejárás(i); db:=db+1 Ha l(i)<l(p) akkor l(p):=l(i) különben ha Szin(i)=szürke és Táv(i)<Táv(p)-1 akkor Ha l(p)<D(i) akkor l(p):=D(i) Ha l(i)≥D(p) akkor van:=igaz Ciklus vége Szín(p):=fekete Ha van vagy Táv(p)=0 és db>1 akkor Sorba(p) Eljárás vége. Legalább 1 ág leszakad, vagy a gyökér-nek legalább 2 részfája van. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

23 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Euler séta Olyan út, amely az A pontból a B pontba vezet és a gráf minden élén pontosan egyszer halad át. Csak olyan gráfra van Euler séta, amelyben A és B foka páratlan, a többi ponté pedig páros. Megjegyzés: Euler körről beszélünk A=B, ekkor A foka is páros. Hamilton út, Hamilton kör, ha mindenhonnan van pontszám*2/3 él Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

24 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Keressünk egy utat A-ból B-be! A kimaradó élek biztos olyan utakon vannak, amelyek az (A,B) út adott pontjából indulnak és oda is érkeznek. A mélységi bejáráskor engedjük meg korábbi pontok újabb elérését – nem kellenek a színek! A mélységi bejárás során ugyanazt az élt kétszer nem használhatjuk – előre haladáskor töröljük az éleket! Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

25 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Mélységi bejárás(p): Szín(p):=szürke Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) akkor Éltörlés(p,i) Mélységi bejárás(i) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

26 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Dominátor halmaz Minimális számú pontot tartalmazó halmaz, amelyből a gráf összes pontja elérhető. Rendezzük a pontokat elhagyási idő szerint csökkenő sorrendbe! Ekkor ha van él i-ből j-be, de nincs j-ből i-be, akkor i előbb lesz, mint j (azaz j nem lehet dominátor halmazbeli)! Ha mindkét irányú él van, akkor ha valamelyik dominátor halmazbeli, akkor bármelyik lehet. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

27 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Dominátor: Szín(1..Pontszám):=fehér Ciklus i=1-től Pontszám-ig Ha Szín(i)=fehér akkor Bejárás1(i) Ciklus vége db:=0 Veremből(j) ha Szín(j)=fekete akkor db:=db+1; D(db):=j Bejárás2(j) Függvény vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

28 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Bejárás1(p): Szín(p):=szürke Ciklus iKi(p) Ha Szín(i)=fehér akkor Bejárás1(i) Ciklus vége Szín(p):=fekete; Verembe(p) Eljárás vége. Bejárás2(p): Szín(p):=piros Ciklus iKi(p) Ha Szín(i)=fekete akkor Bejárás2(i) Ciklus vége Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

29 Mélységi bejárás alkalmazásai
INFOÉRA 2006 Mélységi bejárás alkalmazásai Hamilton kör, út A minden ponton pontosan egyszer átmenő út (kör) NP teljes feladat, azaz hatékonyan nem oldható meg. Ha mindenhonnan van pontszám*2/3 él, akkor viszont van rá egyszerű megoldás: A pontok számának kétharmadáig biztosam van olyan él, ami újabb pontba vezet. Ezután vagy van él további pontba, vagy minden él a már bejárt pontokba vezet. De ekkor létezni kell két szomszédos pontnak, amelyik mindegyikébe vezet él, azaz az új pont beszúrható közéjük! Pontszám/2 él esetén is van megoldás, de lényegesen bonyolultabb. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

30 Minimális költségű feszítőfa
INFOÉRA 2006 Minimális költségű feszítőfa Feszítőfa: Egy irányítatlan gráf azon részgráfja, amely fa (kör- mentes, összefüggő) és maximális (tartalmazza a gráf összes pontját). Minimális költségű feszítőfa: Súlyozott gráf azon feszítőfája, amely éleinek összköltsége minimális. Megjegyzés: A szélességi és a mélységi bejárás is egy-egy feszí- tőfát határoz meg, de nem feltétlenül – sőt általában nem – minimális költségűt. Ha a gráf nem összefüggő, akkor feszítő erdőről beszélhetünk. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

31 Minimális költségű feszítőfa Kruskal algoritmus
INFOÉRA 2006 Minimális költségű feszítőfa Kruskal algoritmus Ötlet: a feszítőfa kezdetben álljon Pontszám darab feszítő erdőből (mindegyikben 1-1 pont lesz); vegyük az éleket hosszuk szerint növekvő sorrendben; ha egy él a feszítő erdő két különböző feszítőfáját köti össze, akkor biztosan eleme a feszítőfának (mert nincs nála rövidebb, ami a két fát összeköti), különben biztosan nem; az ilyen fákat egyesítsük és vegyük fel az élt a feszítőfa élei közé! Legyen Fa(i) az i pontot tartalmazó feszítőfa azonosítója! Műveletigény: O(Élszám*log2(Pontszám)) Rendezés: O(Élszám*log2(Élszám)) Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

32 Minimális költségű feszítőfa Kruskal algoritmus
INFOÉRA 2006 Minimális költségű feszítőfa Kruskal algoritmus MinimálisFeszítőfa(F): Üres(F) Ciklus i=1-től PontSzám-ig szülő(i):=i Ciklus vége ÉlekRendezéseHosszSzerint(G) Ciklus e=1-től ÉlSzám-ig i:=Él(e,1); j:=Él(e,2) Ha Fa(i)≠Fa(j) akkor F:=F(i,j); Egyesít(i,j) Eljárás vége. A Fa(i) gyakori művelet, annyiszor hasz-náljuk, ahány éle van a gráfnak, az Egye-sít pedig ritkább, annyiszor használjuk, ahány pontunk van, azaz az előbbinek kell nagyon hatékonynak lenni. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

33 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás Építsünk egy erdőt, amelyben azonos fában vannak az azonos részhalmazban levő elemek: Egyesít(1,4) hatása: Egyesít(3,4) hatása lehetne: Mi lehetne Egyesít(3,5)? Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

34 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás A megoldás: egyesítéskor mindkét fában menjünk a legfelső elemhez és ott hajtsuk végre az egyesítést! Egyesít(3,5) hatása: Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

35 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás Egyesít(u,v): Ciklus amíg u≠szülő(u) u:=szülő(u) Ciklus vége Ciklus amíg v≠szülő(v) v:=szülő(v) Ciklus vége Fa(u): szülő(v):=u Ciklus amíg u≠szülő(u) Eljárás vége. u:=szülő(u) Fa:=u Függvény vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 35

36 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás Amikor a fában felfelé megyünk, akkor még érdemes a megtett utat tömöríteni, azaz minden bejárt pontot a gyökérhez csatolni: Fa(u): v:=u Ciklus amíg v≠szülő(v) v:=szülő(v) Ciklus vége Ciklus amíg u≠szülő(u) w:=szülő(u); szülő(u):=v; u:=w Fa:=u Függvény vége. Ilyenkor az egyesítés is egyszerűbb lehet, nem kell hozzá ciklus! Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 36

37 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás Ugyanez az úttömörítés rekurzívan (nem kell kétszer felmenni): Fa(u): Ha u≠szülő(u) akkor F:=Fa(szülő(u)) szülő(u):=F; Fa:=F különben Fa:=u Függvény vége. Egyesítésként legfeljebb 1 távolságra vagyunk a gyökértől: Egyesít(u,v): Ha u≠szülő(u) akkor u:=szülő(u) Ha v≠szülő(v) akkor v:=szülő(v) szülő(v):=u Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 37

38 Diszjunkt halmazfelbontás
INFOÉRA 2006 Diszjunkt halmazfelbontás Fa(6) hatása A fa magassága így kisebb lehet, ami gyorsíthatja az algoritmust! Megjegyzés: a két művelet miatt hívják ezt a típust Unió-Holvan típusnak is. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 38

39 Minimális költségű feszítőfa Prim algoritmus
INFOÉRA 2006 Minimális költségű feszítőfa Prim algoritmus Ötlet: a gráf pontjait 2 halmazba soroljuk, a feszítőfában bent levő és a még azon kívül levő pontok halmazára; a két halmaz közötti legrövidebb él biztosan eleme a feszítőfának (mert a legközelebbi pontba vezet); vegyük fel az első halmazhoz legközelebbi pontot a feszítőfa pontjai közé és számoljuk újra a szomszédjai távolságát! Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 39

40 Minimális költségű feszítőfa Prim algoritmus
INFOÉRA 2006 Minimális költségű feszítőfa Prim algoritmus Tegyük a második halmazbeli pontokat egy prioritásai sorba, az első halmaztól való becsült távolságuk sorrendjében! A legközelebbi közülük biztosan a legrövidebb éllel kötődik az első halmazhoz, azaz ő lesz a következő első halmazbeli pont. Ezután a kivezető élei végén levő pontok becsült távolságát az első halmaztól újra számoljuk: ha az oda vezető él hossza kisebb, mint az eddig becsült legkisebb távolság, akkor ezt a távolságot csökkentjük és a prioritási sorban az adott pontot előre mozgatjuk. Műveletigény: O(Élszám*log2(Pontszám)) Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 40

41 Minimális költségű feszítőfa Prim algoritmus
INFOÉRA 2006 Minimális költségű feszítőfa Prim algoritmus MinimálisFeszítőfa(Honnan): Táv(1..PontSzám):=+; PrSorba az összes pont p:=1; Honnan(p):=p; Ciklus i=1-től PontSzám-1-ig PrSorból(p); Táv(p):=0 Ciklus j=1-től SzomszédPontokSzáma(p)-ig s:=SzomszédPont(p,j) Ha Táv(s)>0 és ÉlHossz(p,s)<Táv(s) akkor Táv(s):=ÉlHossz(p,s) Honnan(s):=p; PrSorbanElőre(s) Ciklus vége Eljárás vége. Gráfok, gráfalgoritmusok :36 Juhász István-Zsakó László: Informatikai képzések a ELTE-n 41

42 Programozási alapismeretek
Gráfok, gráfalgoritmusok III. előadás vége 2008/2009.


Letölteni ppt "INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok III. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai."

Hasonló előadás


Google Hirdetések