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

Slides:



Advertisements
Hasonló előadás
A Floyd-Warshall algoritmus
Advertisements


KÉSZÍTETTE: Takács Sándor
Matematika és Tánc Felkészítő tanár: Komáromi Annamária
Mellár János 5. óra Március 12. v
Készítette: Mester Tamás METRABI.ELTE.  Adott egy G irányított vagy irányítás nélküli, véges gráf. Az eljárás célja a G gráf összes csúcsának bejárása.
Rekurzió (Horváth Gyula és Szlávi Péter előadásai felhasználásával)
Euklidészi gyűrűk Definíció.
Minimális költségű feszítőfák
Készítette: Hanics Anikó. Az algoritmus ADT szintű leírása: A d[1..n] és P[1..n] tömböket, a korábban ismertetett módon, a távolság és a megelőző csúcs.
Gráfok szélességi bejárása
Programozási alapismeretek 10. előadás
Programozási alapismeretek 8. előadás. ELTE 2/  További programozási tételek További programozási tételek 
A tételek eljuttatása az iskolákba
Fák, bináris fák INFOÉRA Ez így 60 perc.
1. Univerzális nyelő Csúcsmátrixos ábrázolás esetén a legtöbb gráfalgoritmus futási ideje O(n2) azonban van kivétel. Egy irányított gráf egy csúcsa univerzális.
„Országos” feladat. Feladat: Egy tetszőleges, színes országokat tartalmazó térképen akar eljutni egy kommandós csapat egy országból egy másikba. Viszont.
Dijkstra algoritmusa Egy csúcsból a többibe vezető legkisebb költségű út megkeresése Az algoritmus működésének leírása és bemutatása LL.
Szélességi bejárás A szélességi bejárással egy irányított vagy irányítás nélküli véges gráfot járhatunk be a kezdőcsúcstól való távolságuk növekvő sorrendjében.
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
Készítette: Kosztyán Zsolt Tibor
szakmérnök hallgatók számára
Gráf szélességi bejárása
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Készítette: Lakos Péter.  Adott egy irányított vagy irányítatlan, véges gráf.  Írjuk ki a csúcsokat egy kezdőcsúcstól való távolságuk növekvő sorrendjében.
Egyszerű gráfok ábrázolása Pascalban:
Struktúra nélküli adatszerkezetek
Hierarchikus lista Kétféle értelemezése van:
Gráf szélességi bejárása SzB(G,p). Tetszőleges gráf, melyben a p csúcsot választottam kiindulónak: A gráfnak megfelelő fa:
Programozási alapismeretek 11. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 11.2/ Tartalom  Rendezési.
Feladat: Adott egy város, benne metrók és állomások. Írjunk algoritmust amely megszámolja hogy mennyi az a legkevesebb átszállás amellyel egy tetszőleges.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
SZÉLESSÉGI BEJÁRÁS Gréczy Ákos – JKR7ZR. MESE Van egy középkori kisváros, ahol az utcai lámpákat egy korosodó lámpagyújtogató ember gyújtja fel. Egyik.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Nevezetes algoritmusok: Fa megvalósítása Készítette: Várkonyi Tibor Zoltán.
Gráfok 1. Szlávi Péter ELTE IK Média- és Oktatásinformatika Tanszék
Előadó: Nagy Sára Mesterséges intelligencia Kereső rendszerek.
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
Az ábrán az inicializáló blokk lefutása utáni állapotot láthatjuk. A KÉSZ halmazhoz való tartozást színezéssel valósítjuk meg. A nem KÉSZ csúcsok fehérek,
Mélységi bejárás Az algoritmus elve: Egy kezdőpontból kiindulva addig megyünk egy él mentén, ameddig el nem jutunk egy olyan csúcsba, amelyből már nem.
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Algoritmizálás, adatmodellezés tanítása 8. előadás.
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Háló- (gráf-) algoritmusok
Gráfok ábrázolása teljesen láncoltan
Horváth Bettina VZSRA6.  Célja: Az eljárás célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben.
Útkeresések.
Programozási alapismeretek 8. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 8.2/  További programozási.
Programozási alapismeretek 10. előadás. ELTE Szlávi-Zsakó: Programozási alapismeretek 10.2/  Kiválogatás + összegzés.
Projektmenedzsment gráf általában súlyozott irányított
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Gráf szélességi bejárása. A szélességi bejárás elmélete Célja egy véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő.
Algoritmusok és adatszerkezetek
Készítette : Giligor Dávid Neptun : HSYGGS
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) Juhász István-Zsakó László: Informatikai.
Szélességi bejárás. Véges gráf összes csúcsának bejárása a kezdőcsúcstól való távolságuk szerinti növekvő sorrendben Egy csúcsot egyszer járunk be Egyenlő.
Gráf Szélességi bejárás Készítette: Giligor Dávid Neptun : HSYGGS.
Kvantitatív módszerek
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
Gráfalgoritmusok Tassy Gergely Veres Péter Gimnázium, Budapest június 30.
A Dijkstra algoritmus.
INFOÉRA Gráfok, gráfalgoritmusok II. (Horváth Gyula és Szlávi Péter előadásai felhasználásával) IDE KELL: prioritási sor kupaccal. Juhász.
INFOÉRA 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.
Gráfok 2. Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
Informatikai gyakorlatok 11. évfolyam
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Előadás másolata:

INFOÉRA 2006 2006.11.18 Gráfok, gráfalgoritmusok I. (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

INFOÉRA 2006 2006.11.18 Gráfok A gráf fogalma: Gráf(P,E): P pontok (csúcsok) és EPP élek halmaza Fogalmak: Irányított gráf : (p1,p2)E-ből nem következik, hogy (p2,p1)E Irányítatlan gráf : (p1,p2)E → (p2,p1)E Út: (p1,p2), (p2,p3), …, (pk-1,pk)E élsorozat Kör : (p1,p2), (p2,p3), …, (pk-1,p1)E élsorozat Hurokél: : (p,p)E Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 2

INFOÉRA 2006 2006.11.18 Gráfok Fogalmak: Fok: pP-hez csatlakozó élek száma irányítatlan gráfban Befok, Kifok: egy pP pontba bevezető, illetve kivezető élek száma irányított gráfban Összefüggő gráf: p,qP: út(p,q) – irányítatlan gráf Erősen összefüggő gráf: p,qP: út(p,q) – irányított gráf Összefüggő komponens: (R,F)(P,E) összefüggő gráf Erősen összefüggő komponens: (R,F)(P,E) erősen összefüggő irányított gráf Összefüggő gráf: pP: qP: út(p,q) – irányított gráf Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 3

Gráfok Fogalmak: Súlyozott gráf: (P,E,s:E→R mérték) INFOÉRA 2006 2006.11.18 Gráfok Fogalmak: Súlyozott gráf: (P,E,s:E→R mérték) Fa: összefüggő körmentes gráf Erdő (liget): körmentes gráf Feszítőfa: a gráf összes pontját tartalmazó fa Forrás: irányított gráf pontja, amelyből csak kivezető él van Nyelő: irányított gráf pontja, amelybe csak bevezető él van Háló: körmentes irányított gráf, egy forrással és nyelővel Izolált pont: legfeljebb hurokél kapcsolódik hozzá Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 4

Gráfok ábrázolása Csúcsmátrix (szomszédsági mátrix): Súlyozott gráfra: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcsmátrix (szomszédsági mátrix): Súlyozott gráfra: Megjegyzés: Nemdef= 0 vagy -1 vagy +∞ vagy … Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 5

Gráfok ábrázolása Csúcsmátrix: i Gráfok, gráfalgoritmusok INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcsmátrix: i Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 6

Gráfok ábrázolása Csúcsmátrix súlyozott gráfra: 2 5 1 9 8 INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcsmátrix súlyozott gráfra: 2 5 1 9 8 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 7

Gráfok ábrázolása Csúcsmátrix irányított gráfra: i INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcsmátrix irányított gráfra: i Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 8

Gráfok ábrázolása Tapasztalatok a csúcsmátrixról: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Tapasztalatok a csúcsmátrixról: irányítatlan gráf esetén szimmetrikus irányított gráf esetén nem feltétlenül szimmetrikus Fok, Kifok: soronként az igaz értékek száma Befok: oszloponként az igaz értékek száma könnyű új éleket hozzávenni, éleket törölni, élek súlyát megváltoztatni nehéz új pontokat hozzávenni, pontokat törölni kevés él esetén memória-pazarló Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 9

INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcslista (szomszédsági lista) – tömbös megvalósí-tásban: L(i).db= az i-ből kivezető élek száma L(i).él(j)= az i-ből kivezető j. él végpontja Súlyozott gráfra: L(i).él(j).pont= az i-ből kivezető j. él végpontja L(i).él(j).súly= az i-ből kivezető j. él súlya Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 10

Gráfok ábrázolása Csúcslista: 4 2 3 7 1 6 5 Gráfok, gráfalgoritmusok INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcslista: 4 2 3 7 1 6 5 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 11

Gráfok ábrázolása Csúcslista súlyozott gráfra: 4 2,2 3,5 4,1 7,9 2 1,2 INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcslista súlyozott gráfra: 4 2,2 3,5 4,1 7,9 2 1,2 3 1,5 2,5 4,2 1,1 3,2 1 6,8 5,8 1,9 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 12

Gráfok ábrázolása Csúcslista irányított gráfra: 4 2 3 7 1 6 5 INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcslista irányított gráfra: 4 2 3 7 1 6 5 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 13

Gráfok ábrázolása Tapasztalatok a csúcslistáról: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Tapasztalatok a csúcslistáról: irányítatlan gráf esetén mindkét végpontnál szerepel a másik Fok, Kifok: soronként a darabszám Befok: nehezen számítható könnyű új éleket hozzávenni, élek súlyát megváltoztatni nehéz éleket törölni (sőt irányítatlan gráfnál 2 helyről kell) nehéz pontokat törölni nagy mátrix kell, ha nincs jó korlát a kivezető élek számára Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 14

Gráfok ábrázolása Csúcslista (listás megvalósításban): INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Csúcslista (listás megvalósításban): L(i).lista= az i-ből kivezető élek listája Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 15

Gráfok ábrázolása Éllista (tömbös megvalósításban): INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Éllista (tömbös megvalósításban): E(i,j)= az i. él j. végpontja (j=1,2) Súlyozott gráfra: E(i).él(j)= az i. él j. végpontja (Lehetne: E(i).kezdő, E(i).vég is.) E(i).súly= az i. él súlya Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 16

Gráfok ábrázolása Éllista: 1 2 3 4 7 5 6 Gráfok, gráfalgoritmusok INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Éllista: 1 2 3 4 7 5 6 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 17

Gráfok ábrázolása Éllista súlyozott gráfra: 1 2 3 5 4 7 9 6 8 INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Éllista súlyozott gráfra: 1 2 3 5 4 7 9 6 8 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 18

Gráfok ábrázolása Tapasztalatok az éllistáról: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Tapasztalatok az éllistáról: irányítatlan gráf esetén csak egyszer szerepelnek az élek könnyű új éleket hozzávenni, élek súlyát megváltoztatni nehéz éleket törölni nehéz pontokat törölni Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 19

Gráfok ábrázolása Számított gráf Az élek halmazát nem tároljuk, mert INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Számított gráf Az élek halmazát nem tároljuk, mert van olyan számítási eljárás, amely p,qP-re kiszámítja Vanél?(p,q)-t; vagy van olyan számítási eljárás, amely pP-re létrehozza a Ki(p) halmaz elemeit, azaz azon pontokat, ahova p-ből vezet él. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 20

Gráfok ábrázolása Számított gráf – kannák – számítás INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Számított gráf – kannák – számítás Egy gazdának három különböző űrtartalmú tejeskannája van, amelyekbe teli állapotban A, B és C liter tej fér. Van továbbá egy negyedik kannája, ennek az űrtartalmát nem ismeri, csak azt tudja, hogy ez a legnagyobb kannája. Kezdetben a legnagyobb, ismert űrtartalmú kanna tele van, a többi pedig üres. Add meg, hogy minimum hány lépésben lehet kimérni X liter tejet! Hol itt a gráf? Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 21

Gráfok ábrázolása Számított gráf – kannák – számítás INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Számított gráf – kannák – számítás A 4 kanna pillanatnyi állapotát az (aa,bb,cc,dd) számnégyes írja le. Ebből elérhető állapotok – szabályos öntések: (0,bb+aa,cc,dd), ha bb+aa≤B A-ból mind B-be (0,bb,cc+aa,dd), ha cc+aa ≤C A-ból mind C-be (0,bb,cc,dd+aa) A-ból mind D-be (aa-(B-bb),B,cc,dd), ha a>B-bb A-ból B-t tele … … Azaz olyan pontba vezet él, ahova van szabályos öntés. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 22

Gráfok ábrázolása Számított gráf – labirintus – síkbeli elrendezés INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Számított gráf – labirintus – síkbeli elrendezés Egy négyzetrácsos terület bizonyos mezőin akadályok vannak. Egy járművet kell elvezetnünk az (1,1) pontból az (N,M) pontba. Hol itt a gráf? A gráf pontjai az (i,j) koordinátájú mezők. Az (i,j) pontból az (i-1,j), (i,j-1), (i+1,j), (i,j+1) pontokba vezet él, ha azok nem akadályok. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 23

INFOÉRA 2006 2006.11.18 Gráfok ábrázolása A gráftípus (statikus gráf – pontok, élek száma rög-zített): Értékhalmaza: Gráf(Sorozat(TÉl:THossz), Sorozat(TPont:TElem)) Változó Pontszám, Élszám: Egész Műveletei: Érték(Gráf,Pont) Vanél?(Gráf,Pont1,Pont2) Élhossz(Gráf,Pont1,Pont2) A pontok sorozata sokszor az 1..N számsorozat. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 24

Gráfok ábrázolása Műveletei: Speciális műveletek INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Műveletei: Szomszédpontokszáma(Gráf,Pont) Szomszéd(Gráf,Pont,i) Elsőszomszéd(Gráf,Pont) Következőszomszéd(Gráf,Pont) Speciális műveletek Felépít(Gráf1,Gráf2) éllistából csúcsmátrix éllistából csúcslista (tömbös) éllistából csúcslista (listás) A szomszéd súlyozatlan gráf esetén egy pont, súlyozott gráf esetén pedig egy rekord, ami a pontot és az oda vezető él súlyát tartalmazza. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 25

Gráfok ábrázolása Meggondolandók: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Meggondolandók: Bizonyos műveletek egyes ábrázolásoknál kézenfekvőek, egyszerűen megvalósíthatók, mások pedig nem. Érdemes-e minden műveletet minden ábrázolásra megírni? Ha nem: A gráfábrázoláshoz megvalósított műveletek alapján kiderül, hogy egyes gráf-algoritmusok melyik változata készíthető el. Ha igen: Bármely ábrázolásra bármely gráf-algoritmus változat elkészíthető. Közülük – ha szükséges – hatékonysági szempontok alapján választhatunk. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 26

Gráfok ábrázolása Felépítés: éllistából csúcsmátrix: Típus INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcsmátrix: Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcsmátrix=Tömb(1..Maxpont,1..Maxpont:Logikai) Változó Élszám,Pontszám Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 27

Gráfok ábrázolása Felépítés: éllistából csúcsmátrix: INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcsmátrix: Felépít(E,Cs,Fok): Cs:=(hamis,…,hamis); Fok():=(0,…,0) Ciklus i=1-től Élszám-ig Cs(E(i,1),E(i,2)):=igaz Cs(E(i,2),E(i,1)):=igaz Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Ciklus vége Eljárás vége. Irányított gráfra: Cs(E(i,1),E(i,2)):=igaz KiFok(E(i,1)):=KiFok(E(i,1))+1 BeFok(E(i,2)):=BeFok(E(i,2))+1 Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 28

Gráfok ábrázolása Felépítés: éllistából csúcslista (tömb): Típus INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcslista (tömb): Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcslista=Tömb(1..Maxpont:Rekord(db:Egész, él:Tömb(1..Maxpont:TPont))) Változó Élszám,Pontszám Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 29

Gráfok ábrázolása Felépítés: éllistából csúcslista (tömb): INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcslista (tömb): Felépít(E,L,Fok): L().db:=(0,…,0) Ciklus i=1-től Élszám-ig L(E(i,1)).db:=L(E(i,1)).db+1 L(E(i,1)).él(L(E(i,1)).db):=E(i,2) L(E(i,2)).db:=L(E(i,2)).db+1 L(E(i,2)).él(L(E(i,2)).db):=E(i,1) Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Ciklus vége Eljárás vége. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 30

Gráfok ábrázolása Felépítés: éllistából csúcslista (lista): Típus INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcslista (lista): Típus Éllista=Tömb(1..Maxél:TÉl) TÉl=Tömb(1..2:TPont) Csúcslista=Tömb(1..Maxpont:Lista(TPont)) Változó Élszám,Pontszám Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 31

Gráfok ábrázolása Felépítés: éllistából csúcslista (lista): INFOÉRA 2006 2006.11.18 Gráfok ábrázolása Felépítés: éllistából csúcslista (lista): Felépít(E,L,Fok): Ciklus i=1-től Pontszám-ig Üres(L(i)) Ciklus vége Ciklus i=1-től Élszám-ig Beszúrmögé(L(E(i,1)),E(i,2)) Beszúrmögé(L(E(i,2)),E(i,1)) Fok(E(i,1)):=Fok(E(i,1))+1 Fok(E(i,2)):=Fok(E(i,2))+1 Eljárás vége. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 32

Gráfok műveletei Műveletek csúcsmátrixra: INFOÉRA 2006 2006.11.18 Gráfok műveletei Műveletek csúcsmátrixra: Vanél?(Cs,p,q): Vanél?:=Cs(p,q) Függvény vége. Élhossz(Cs,p,q): Élhossz:=Cs(p,q) A többi művelet nehéz, csúcsmátrix esetén nem valósít- juk meg. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 33

Gráfok műveletei Műveletek csúcslistára (tömb): INFOÉRA 2006 2006.11.18 Gráfok műveletei Műveletek csúcslistára (tömb): Szomszédpontokszáma(L,p): Szomszédpontokszáma:=L(p).db Függvény vége. Szomszéd(L,p,i): Szomszéd:=L(p).él(i) A többi művelet nehéz, csúcslista esetén nem valósítjuk meg. Megjegyzés: Szomszédpontokszáma=Fok (ill. Kifok) Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 34

Gráfok műveletei Műveletek csúcslistára (lista): INFOÉRA 2006 2006.11.18 Gráfok műveletei Műveletek csúcslistára (lista): Elsőszomszéd(L,p): Elsőre(L(p)); Elsőszomszéd:=Tartalom(L(p)).érték Függvény vége. Következőszomszéd(L,p): Következőre(L(p)) Következőszomszéd:=Tartalom(L(p)).érték A többi művelet nehéz, csúcslista esetén nem valósítjuk meg. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 35

INFOÉRA 2006 2006.11.18 Gráfok alkalmazása Szuperforrás: belőle mindenhova megy él, bele sehonnan sem – szuperforrás maximum 1 lehet. Egy pont biztosan nem szuperforrás: ha valahova nem megy ki belőle él; ha valahonnan jön bele él. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 36

INFOÉRA 2006 2006.11.18 Gráfok alkalmazása Szuperforrás(E,f,van): i:=1; j:=Pontszám Ciklus amíg i<j Ha Vanél?(i,j) akkor j:=j-1 különben i:=i+1 Ciklus vége f:=i; j:=1; Ha j=f akkor j:=j+1 Ciklus amíg jPontszám és Vanél?(f,j) és nem Vanél?(j,f) j:=j+1; Ha j=f akkor j:=j+1 van:=j>Pontszám Eljárás vége. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 37

Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: INFOÉRA 2006 2006.11.18 Gráfok bejárása A gráf bejárása = minden elem feldolgozása Probléma: Lineáris elrendezésű sokaság (sorozat) bejárása könnyű, egyetlen ciklussal elvégezhető. Hálós struktúra bejárása nem kézenfekvő, többféle stratégiával végezhető. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 38

Gráfok bejárása Gráfbejárás: Demonstrálás színekkel: INFOÉRA 2006 2006.11.18 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 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 39

Gráfok bejárása Demonstrálás színekkel: INFOÉRA 2006 2006.11.18 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 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 40

INFOÉRA 2006 2006.11.18 Gráfok bejárása Két alapvető stratégia: Szélességi bejárás: a szürke színűek közül abból lépjünk tovább, amelyikbe legrégebben léptünk. Mélységi bejárás: abból a pontból lépünk mindig tovább, amelyik legkésőbb került a szürke színűek közé. Mindkét bejárásban a szürkék keletkezési sorrendjét kell követnünk valamilyen módon. Lehetnek (lesznek) további stratégiák is. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 41

INFOÉRA 2006 2006.11.18 Szélességi bejárás Szélességi bejárás: Adatszerkezet, amiből a legrégebben bekerült lép ki először – sor . Tároljuk a szürke pontokat egy sorban! Van még feldolgozatlan pont = van még szürke pont = nem üres a sor! A bejárás egy feszítőfát hoz létre (szélességi feszítőfa). Van kör = van nem piros színű él, azaz szürke pontba vezető. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 42

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

Szélességi bejárás Bejárás csúcslista esetén. Futási idő: O(Élszám) INFOÉRA 2006 2006.11.18 Szélességi bejárás Szélességi bejárás(p): Szín(p):=szürke; Sorba(p) Ciklus amíg nem üresSor? Sorból(p); Szín(p):=fekete Ciklus i=1-től Szomszédpontokszáma(p)-ig j:=Szomszéd(p,i) Ha Szín(j)=fehér akkor Sorba(j); Szín(j):=szürke Ciklus vége Eljárás vége. Bejárás csúcslista esetén. Futási idő: O(Élszám) Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 44

Szélességi bejárás Bejárás csúcsmátrix esetén, elérési információval. INFOÉRA 2006 2006.11.18 Szélességi bejárás Szélességi bejárás(p): Szín(p):=szürke; Sorba(p); Honnan(p):=p Ciklus amíg nem üresSor? Sorból(p); Szín(p):=fekete Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) és Szín(i)=fehér akkor Sorba(i); Szín(i):=szürke Honnan(i):=p Ciklus vége Eljárás vége. Bejárás csúcsmátrix esetén, elérési információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 45

Szélességi bejárás Bejárás csúcsmátrix esetén, távolság információval. INFOÉRA 2006 2006.11.18 Szélességi bejárás Szélességi bejárás(p): Szín(p):=szürke; Sorba(p); Táv(p):=0 Ciklus amíg nem üresSor? Sorból(p); Szín(p):=fekete Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) és Szín(i)=fehér akkor Sorba(i); Szín(i):=szürke Táv(i):=Táv(p)+1 Ciklus vége Eljárás vége. Bejárás csúcsmátrix esetén, távolság információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 46

INFOÉRA 2006 2006.11.18 Szélességi bejárás Szélességi bejárás(p): Szín(p):=szürke; Sorba(p); t:=0; Elér(p):=t Ciklus amíg nem üresSor? Sorból(p); Szín(p):=fekete Ciklus i=1-től Pontszám-ig Ha Vanél?(p,i) és Szín(i)=fehér akkor Sorba(i); Szín(i):=szürke t:=t+1; Elér(i):=t Ciklus vége Eljárás vége. Bejárás csúcsmátrix esetén, elérési sorrend információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 47

INFOÉRA 2006 2006.11.18 Szélességi bejárás Élek osztályozása: Fa-él: szürkéből fehérbe vezet. Visszamutató él(u,v): szürkéből feketébe vezet – u őse v-nek. Kereszt-él: szürkéből szürkébe vagy feketébe vezető egyéb élek. Irányítatlan gráfban csak fa-él és ke- reszt-él van. Irányított gráfban lehet visszamutató él. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 48

INFOÉRA 2006 2006.11.18 Szélességi bejárás Irányítatlan gráfban: (u, v) fa-élre: Táv(v)=Táv(u)+1. (u, v) kereszt-élre: Táv(v)=Táv(u) vagy Táv(v)=Táv(u)+1. Irányított gráfban: (u, v) kereszt-élre: Táv(v)Táv(u)+1. (u, v) visszamutató élre: 0Táv(v)Táv(u). Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 49

INFOÉRA 2006 2006.11.18 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 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 50

Mélységi bejárás Bejárás csúcsmátrix esetén. Futási idő: O(Pontszám2) INFOÉRA 2006 2006.11.18 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 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 51

Mélységi bejárás Bejárás csúcslista esetén. Futási idő: O(Élszám) INFOÉRA 2006 2006.11.18 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 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 52

Mélységi bejárás Bejárás csúcsmátrix esetén, elérési információval. INFOÉRA 2006 2006.11.18 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 Honnan(i):=p 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); Honnan(p):=p Mélységi bejárás(p) Bejárás csúcsmátrix esetén, elérési információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 53

Mélységi bejárás Bejárás csúcsmátrix esetén, távolság információval. INFOÉRA 2006 2006.11.18 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 Táv(i):=Táv(p)+1 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); Táv(p):=0 Mélységi bejárás(p) Bejárás csúcsmátrix esetén, távolság információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 54

INFOÉRA 2006 2006.11.18 Mélységi bejárás Mélységi bejárás(p): Szín(p):=szürke; idő:=idő+1; Elér(p):=idő 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; idő:=idő+1; Elhagy(p):=idő Eljárás vége. Mélységi bejárás indítása(p): Szín:=(fehér,…,fehér); idő:=0 Mélységi bejárás(p) Bejárás csúcsmátrix esetén, elérési és elhagyási idő információval. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 55

INFOÉRA 2006 2006.11.18 Mélységi bejárás Pontok osztályozása: u őse v-nek a mélységi feszítőfában  Elér(u)<Elér(v)<Elhagy(v)<Elhagy(u). u és v különböző ágon van a mélységi feszítőfában  Elér(u)>Elhagy(v) vagy Elér(v)>Elhagy(u). Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 56

INFOÉRA 2006 2006.11.18 Mélységi bejárás Élek osztályozása: Fa-él: szürkéből fehérbe vezet. Visszamutató él(u,v): szürkéből szürké- be vezet – a fában v egy őse az u-nak. Előremutató él(u,v): szürkéből feketé- be vezet – v utóda u-nak. Kereszt-él: szürkéből feketébe veze- tő egyéb élek – v nem utóda u-nak. Irányítatlan gráfban csak fa-él és vissza- faél, el ˝ore él: kisebb mélységi számúból nagyobb mélységi számúba mutat visszaél, keresztél: nagyobb mélységi számúból kisebb mélységi számúba Mutat x ! y egy ha az él vizsgálatakor - faél mszám[y] = 0 - visszaél mszám[y] mszám[x] és bszám[y] = 0 - el ˝ oreél mszám[y] > mszám[x] - keresztél mszám[y] < mszám[x] és bszám[y] > 0. mutató él van. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 57

Mélységi bejárás Bejárás csúcsmátrix esetén, ciklussal. INFOÉRA 2006 2006.11.18 Mélységi bejárás Mélységi bejárás(p): Verembe(p,0); Szín(p):=szürke; i:=1 Ciklus amíg nem ÜresVerem? Ciklus amíg i≤Pontszám és (nem Vanél?(p,i) vagy Szín(i)≠fehér) i:=i+1 Ciklus vége Ha i≤Pontszám akkor Verembe(p,i+1); p:=i Szín(i):=szürke; i:=1 különben Szín(p):=fekete; Veremből(p,i) Eljárás vége. Bejárás csúcsmátrix esetén, ciklussal. Gráfok, gráfalgoritmusok 2017.04.08.2017.04.08. Juhász István-Zsakó László: Informatikai képzések a ELTE-n 58

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