5. A gráf, mint adatstruktúra Gráfelméleti bevezető

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "5. A gráf, mint adatstruktúra Gráfelméleti bevezető"

Átírás

1 5. A gráf, mint adatstruktúra 5.1. Gráfelméleti bevezető Az irányított gráf (digráf) A G = ( V, E) rendezett párt irányított gráfnak (digráfnak) nevezzük. A rendezett pár elemeire tett kikötések: V véges halmaz, a G-beli csúcsok halmaza. E bináris reláció a V halmazon, az élek halmaza E = {( u, v) rendezett pár u V, v V} V V. Hurkok megengedettek. Hurok az ( a, a) él. Az irányítatlan gráf A G = ( V, E) rendezett párt irányítatlan gráfnak nevezzük. A rendezett pár elemeire tett kikötések: V véges halmaz, a G-beli csúcsok halmaza. E bináris reláció a V halmazon, az élek halmaza E = u, v rendezettlen pár u V, v V V. {( ) } V Hurok nem megengedett. Az u csúcsból kiinduló és a v csúcsba mutató él digráfban Az ( u, v) él. Az u csúcsból kiinduló és a v csúcsba mutató él irányítatlan gráfban Az ( u, v) él. Az u csúcs szomszédja Legyen ( u, v) él egy G = ( V, E) gráfban. Ekkor a v csúcsot az u csúcs szomszédjának nevezzük A szomszédság reláció irányítatlan gráfban szimmetrikus, digráfban nem. Csúcs fokszáma irányítatlan gráfban A csúcs fokszáma a belőle kiinduló élek száma. Csúcs fokszáma digráfban Kimenő fokszám (kifok): a csúcsból kimenő élek száma Bemenő fokszám (befok): a csúcsba bemenő élek száma Csúcs fokszáma: kifok+befok Ionizált csúcs Csúcs, melynek fokszáma zérus. Az u csúcsot az u csúccsal összekötő k hosszúságú út Csúcsok véges sorozata: v, v 1,,, ahol u = v, u' = v K v k k és ( vi 1, vi ) E, i = 1, K, k. Egyszerű út Út, melyben a benne szereplő csúcsok páronként különbözőek.

2 Adatstruktúrák, algoritmusok ahol u = v, u' = v k és ( vi 1, vi ) E, i = 1, K, k. Út része Legyen v, v 1,, út. Az út része v, v 1, K, v, ahol. K v k i i + j i j k Az u csúcs elérhető az u csúcsból Azt mondjuk, hogy az u csúcs elérhető az u csúcsból (jelölésben van olyan út, amely az u csúcsot az u csúccsal összeköti. Kör digráfban Út, melyre v = v k és az út tartalmaz legalább egy élt. Egyszerű kör Kör, melynek csúcsai mind különbözőek. Hurok 1 hosszúságú kör. Egyszerű gráf Hurok nélküli digráf Kör gráfban Egyszerű kör és k 3, v = vk. Körmentes gráf Gráf, amely nem tartalmaz kört.. Összefüggő gráf Ha bármely két csúcsa összeköthető úttal. u P u '), ha Összefüggő komponens Csúcsok alkotta ekvivalencia-osztály, ahol az ekvivalencia reláció a csúcsok közötti elérhetőség. Digráf erősen összefüggő Tetszőleges két csúcs esetén mindegyik elérhető a másikból. Izomorf gráfok A G = ( V, E) és a G ' = ( V ', E' ) gráfok izomorfak, ha létezik olyan u, v E f u, f v E. bijekció, hogy ( ) ( ( ) ( )) ' f : V V ' A G ( V, E) = gráf részgráfja G ' = ( V ', E' ) gráf, melyre V ' V és E' E. A G gráf V által meghatározott részgráfja ' V ', E' E' = u, v E, u, v V '. G = ( ), ahol {( ) }

3 Adatstruktúrák, algoritmusok A G ( V, E) = gráfhoz tartozó digráf Az a ' ( V ', E' digráf, melyre irányított éllel helyettesítjük). A G ( V, E) G = ) ( u v) E' ( u, v) E,, azaz az éleket két = digráfhoz tartozó irányítatlan gráf Az a G ' = ( V ', E' ) gráf, melyre ( u, v) E' u v, ( u, v) E azaz elhagyjuk a hurkokat és az irányítást. Tétel: Bizonyítás Teljes gráf Irányítatlan gráf, melyben bármely két csúcs szomszédos. (Minden lehetséges él benne van.) Páros gráf Irányítatlan gráf, melynél V felbontható V 1, V 2 diszjunkt unióra úgy, hogy ( u, v) E esetén vagy u V1 és v V2, vagy pedig u V2 és v V 1. (Azaz V1- ben és V 2 -ben nincs belső él.) Erdő Körmentes, irányítatlan gráf. (Nyílt) fagráf Összefüggő, körmentes, irányítatlan gráf. A nyílt fák tulajdonságai Legyen G = ( V, E) irányítatlan gráf. Az alábbiak ekvivalensek. 1. G nyílt fa 2. G bármely két csúcsához egyértelműen létezik egy őket összekötő egyszerű út. 3. G összefüggő, de tetszőleges élének elhagyása után a visszamaradó gráf már nem összefüggő 4. G összefüggő és E = V 1 5. G körmentes és E = V 1 6. G körmentes, de akár egyetlen éllel is bővítve E-t a kapott gráf már tartalmaz kört bizonyítása G fa G összefüggő. G bármely csúcspárja között van út. Be kell látni, hogy csak egy van. Ha több lenne, akkor kettőből már kör alakítható ki, ami ellentmondás bizonyítása G bármely két csúcsa egyértelműen köthető össze úttal. G összefüggő. Tetszőleges (u,v) élt választva az él az u és v csúcsokat köti össze egyelemű útként. Ő az egyetlen út u és v között. Ha elhagyom, akkor nem lesz ott út, tehát a gráf nem lesz összefüggő bizonyítása

4 Adatstruktúrák, algoritmusok G (3) miatt összefüggő, tehát ezt nem kell bizonyítani. Másrészt ebből adódóan automatikusan E V - 1. Teljes indukcióval látjuk be, hogy E V - 1. Legyen n= V. Ha n=1 vagy 2, akkor ez igaz, mert a gráfnak n-1 éle van. Legyen most n 3 és minden kevesebb csúcsú gráfra teljesüljön (3). Hagyjuk el tetszőleges élét. Ezáltal k darab összefüggő komponens keletkezik, ahol k 2. Minden komponens (3) tulajdonságú. Az élek száma legfeljebb n-k n-2. Az elvett élt is hozzávéve az élek száma legfeljebb n bizonyítása Indirekt módon bizonyítunk. Tegyük fel, hogy van kör. Erre a körre, mint részgráfra igaz, hogy éleinek és csúcsainak száma megegyezik. Legyen ez k. Ha k< V, akkor van még csúcs a körön kívül, mely szomszédos a kör valamely csúcsával G összefüggősége miatt. Vegyük hozzá a körhöz ezt a csúcsot és az élt. Az így kapott részgráfban is a csúcsok száma és az élek száma azonos (k+1). Újabb és újabb csúcsok és élek hozzávételével az összes csúcspontot felhasználjuk. Ekkor G-re azt kapjuk, hogy E V, ami ellentmondás bizonyítása Legyen G összefüggő komponenseinek száma k. Minden komponens fa és (1) (5). Ezért G komponenseiben V - k él van. E = V - 1 miatt k=1 és így G fa. Ekkor viszont bármely két G-beli csúcs összeköthető egyszerű úttal. Hozzávéve egy új élt a két csúcs között, az az úttal együtt kört alkot bizonyítása Azt kell belátni, hogy G összefüggő. Legyen u,v két tetszőleges csúcs. Ha szomszédosak, akkor van közöttük út. Ha nem szomszédosak, akkor vegyük fel az u,v élt. Ekkor kör keletkezik (6) miatt, A kör élei az (u,v) él kivételével G-hez tartoznak.és így utat alkotnak u és v között. Tehát G összefüggő, tehát fa Gyökeres fák Gyökeres fa T fagráf, amely egyik csúcsának kitüntetett a szerepe a többihez képest. Ez a csúcs a gyökér vagy gyökércsúcs (r). Az x csúcs megelőzője A gyökérből x-be vezető úton fekvő bármely csúcs. (x is a saját megelőzője.) y valódi megelőzője x-nek ha megelőzője x-nek, de y x. x az y rákövetkezője ha y x-nek megelőzője. (x is a saját rákövetkezője.)

5 Adatstruktúrák, algoritmusok x valódi rákövetkezője y-nak ha megelőzője y-nak, de y x. x-ben gyökerező részfa Az x és a rákövetkezőiből álló részgráf (fa). x szülője y ha az r P x úton (y,x) az utolsó él. (A gyökérnek nincs szülője T-ben.) x az y gyereke ha y az x szülője. Testvérek azok a csúcsok, amelyeknek ugyanaz a csúcs a szülője. Külső csúcs vagy levél az a csúcs, amelynek nincs gyereke. Belső csúcs az a csúcs, amely nem levél. x fokszáma gyökeres fában az x gyerekeinek száma. (A szülő nem számít bele a fokszámba!) x szintje az r P x út hossza. T magassága a T-beli csúcsok szintjei közül a legnagyobb. Rendezett gyökeres fa minden csúcs gyerekei rendezettek. (Azaz van első, második,, k-adik) Bináris fa Rendezett fa, melyben minden csúcs fokszáma legfeljebb kettő. (Beszélhetünk bal gyerekről és jobb gyerekről.) Null fa Üres bináris fa. Teljes bináris fa Bináris fa, melyben a csúcsok fokszáma kettő, kivéve a leveleket, melyeké, valamint az összes levél azonos szinten helyezkedik el. Súlyozott fa A csúcsok gyerekeit különböző pozitív, egész számmal indexeljük. (1,2,3, ) csúcs i-dik gyereke hiányzó nincs i indexű gyereke. k-adrendű fa Súlyozott fa, ahol minden csúcsnál a k-nál nagyobb indexű gyerekek hiányoznak.

6 Adatstruktúrák, algoritmusok (A bináris fa másodrendű.) k-adrendű teljes fa k-adrendű fa, melyben a levelek ugyanazon szintűek és az összes belső csúcs fokszáma k. A h magasságú teljes k-adrendű fának k h számú levele van. Ha a levelek száma n, akkor a teljes k-adrendű fa magassága log k n. A h magasságú teljes k-adrendű fa belső csúcsainak a száma: h = h h i k k k K k k =. i= k 1 Teljes bináris fa belső csúcsainak száma: 2 h 1 A gyökeres fa adatstruktúra. A fa minden csúcsa egy objektum. Az objektumok tartalmaznak kulcs mezőt és mutatókat. A T fa attribútuma: gyökér[t] egy mutató, mely a fa gyökerére mutat. Ha gyökér[t]=nil, akkor a fa üres. Bináris fa esetén az x csúcs ábrázolható az alábbi sémával: Szülőmutató Kulcs Bal gyerek mutató Jobb gyerek mutató Csúcsattribútumok: szülő[x], kulcs[x], bal[x], jobb[x] Ha szülő[x]=nil, akkor x gyökér. Ha bal[x]=nil, vagy jobb[x]=nil, akkor amelyik NIL, az a gyerek nincs. Ha mindkettő NIL, akkor x levél. A bináris fa mintájára k-adrendű fa esetén használható, bár memória pazarló az x csúcs ábrázolására az alábbi séma: Szülő mutató Kulcs 1. gyerek mutató 2. gyerek mutató k. gyerek mutató Helyette javasolható az úgynevezett bal gyerek jobb testvér séma, melynek memóriaigénye: Ο( n). Szülőmutató Kulcs Bal gyerek mutató Jobb testvér mutató

7 Adatstruktúrák, algoritmusok NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL Bináris kupac, kupacrendezés A bináris kupac (heap) A bináris kupac (heap) egy bináris gyökeres fa, amely minden szintjén kitöltött, kivéve esetleg az utolsó szintet, ahol balról jobbra haladva vannak a levelek kihagyás nélkül (a szint balra tömörített) továbbá teljesül a kupac tulajdonság, mely szerint a gyökércsúcsot kivéve minden x mutatójú csúcsra fenn kell álljon, hogy Kulcs(Szülő(x)) Kulcs(x), ha maximumkupacról beszélünk, illetve Kulcs(Szülő(x)) Kulcs(x) minimumkupac esetén, A következőkben a maximumkupacról fogunk beszélni. Kupac attribútumok (feltételezve, hogy a kupac reprezentálása egy egyindexes A tömbbel történik, amelyben a kupacot tároljuk és amelynek indexelése 1-gyel kezdődik) a következők: hossz[a] a tömb fizikai maximális mérete (elemszám a tömbben). kupac_méret[a a kupacelemek (csúcsok) száma gyökér[t] ) A 1 Az i indexű elem esetén az attribútumok: Szülő(i), Bal(i), Jobb(i) Kupac magasság = a fa magassága = h = Θ( log n) Példa kupacra és tömbös realizációjára:

8 Adatstruktúrák, algoritmusok algoritmus algoritmus algoritmus Szülő Bal gyerek Jobb gyerek n = Θ 1 n = Θ 1 T n = Θ 1 // T ( ) ( ) // T ( ) ( ) // ( ) ( ) 1 SZÜLŐ( i, x ) BAL( i, x ) JOBB( i, x ) 2 // Input paraméter: i a vizsgált index // Input paraméter: i a vizsgált index // Input paraméter: i a vizsgált index 3 // Output paraméter: x a szülő indexe // Output paraméter: x a bal gyerek indexe 4 5 // Output paraméter: x a jobb gyerek indexe i x 2 x 2i x 2 i RETURN( x ) RETURN( x ) RETURN( x ) algoritmus Kupacol ( Eljárás a kupac tulajdonság fenntartására ) T n = Θ // ( ) ( logn) 1 KUPACOL ( A, i ) 2 // Input paraméter: A - a kupacot tároló tömb 3 // i - a vizsgálandó elem indexe 4 // Output paraméter: A - a kupacot tároló tömb 5 // Akkor használjuk, ha az i baloldali és jobboldali részfái ugyan kupacok, de i-ben sérülhet a kupac tulajdonság 6 BAL( i, b ) 7 JOBB( i, j ) 8 IF b Kupac_méret[A] és A b >A i 9 THEN legnagyobb b 1 ELSE legnagyobb i 11 IF j Kupac_méret[A] és A j >A legnagyobb

9 Adatstruktúrák, algoritmusok THEN legnagyobb j 13 IF legnagyobb i 14 THEN csere A i A legnagyobb 15 KUPACOL( A, legnagyobb ) 16 RETURN (A) algoritmus Kupacot épít (Eljárás, mely tetszőleges adatokból kupacot épít ) // T ( n) = Θ(n) 1 KUPACOT_ÉPÍT( A ) 2 // Input paraméter: A - a kiinduló kulcsok tömbje 4 // Output paraméter: A az elkészült kupac tömbje 5 6 Kupac_méret[A] hossz[a] hossz[ A] 7 FOR i 2 DOWNTO 1 DO 8 KUPACOL( A, i ) 9 RETURN ( A ) algoritmus Kupacrendezés (Eljárás, mely helyben rendez ) T n = // ( ) Θ( nlogn) 1 KUPACRENDEZÉS( A ) 2 // Input paraméter: A - a rendezendő kupac tömbje 3 // Output paraméter: A a rendezett kulcsok tömbje 4 5 KUPACOT_ÉPÍT( A ) 6 FOR i hossz[a] DOWNTO 2 DO 7 csere A 1 A i 8 DEC ( Kupac_méret[A] ) 9 KUPACOL( A, 1 ) 1 RETURN ( A ) algoritmus Kupacba beszúrás // T ( n) = Θ( logn) 1 KUPACBA_BESZÚR( A, kulcs ) 2 // Input paraméter: A - a kupac tömbje 3 // kulcs a beszárandó kulcs 4 // Output paraméter: A a kupac a beszúrt kulccsal 5 6 INC( Kupac_méret[ A ] ) 7 i Kupac_méret [A] ) 8 SZÜLŐ( i, x )

10 Adatstruktúrák, algoritmusok WHILE i>1 és A x <kulcs 1 A i A x 11 i x 12 SZÜLŐ( i, x ) 13 A i kulcs 14 RETURN ( A ) algoritmus Kupacban maximális kulcs lekérdezése T n = Θ ) // ( ) (1 1 KUPACBAN_MAX( A, max, hiba ) 2 // Input paraméter: A - a kupac tömbje 3 // Output paraméter: max a maximális kulcs 4 // hiba jelzi a művelet sikerességét 5 6 IF Kupac_méret[A]<1 7 THEN hiba kupac alulcsordulás 8 RETURN ( hiba ) 9 max A 1 1 hiba sikeres művelet 11 RETURN ( max, hiba ) algoritmus Kupacból a maximális kulcs lekérdezése eltávolítással T n = Θ log ) // ( ) ( n 1 KUPACBÓL_KIVESZ_MAX ( A, max, hiba ) 2 // Input paraméter: A - a kupac tömbje 3 // Output paraméter: max a maximális kulcs 4 // hiba jelzi a művelet sikerességét 5 6 IF Kupac_méret[A]<1 7 THEN hiba kupac alulcsordulás 8 RETURN ( hiba ) 9 max A 1 1 A 1 A Kupac_méret[A] 11 DEC( Kupac_méret[A] ) 12 KUPACOL( A, 1 ) 13 hiba sikeres művelet 14 RETURN ( max, hiba ) Az elsőbbségi sor Az elsőbbségi sor (priority queue) Az elsőbbségi sor (priority queue) olyan S halmaz, amelynek minden eleméhez egy kulcs értéket rendelünk. A kulcs egy elsőbbségi értéket, prioritási értéket szimbolizál. Szolgáltatást igénybevevők sorbanállási sorában a sorrakerülő elem az lesz, amelynek a prioritása a legnagyobb (maximum prioritásos sor), vagy amelyiké a legkisebb (minimum prioritásos sor).

11 Adatstruktúrák, algoritmusok BESZÚR(S,x): MAXIMUM(S): KIVESZ_MAX(S): egy elemet hozzáadunk S-hez. S S {x} S legnagyobb kulcsú elemének meghatározása megadja és törli a maximális kulcsú elemet. Az elsőbbségi sor célszerű realizációja a kupac A Huffman kód, a mohó algoritmus A Huffman kód egy adattömörítési célokat szolgáló eljárás. A probléma megfogalmazása: Legyen adott egy adatfile, amelyben ismert az egyes adatelemek (pl.: byte-ok) gyakorisága. A feladat olyan kódot találni az adatelemekre, amely révén a kódolt file hossza rövidebb lesz (a lehető legrövidebb), mint az eredeti hossz volt. Kódszó Kódszónak nevezzük az üzenet ábécé betűjéhez hozzárendelt jelek nemüres sorozatát, amelyben a kódábécé betűi szerepelhetnek. Kód Kódnak nevezzük az üzenet ábécé betűit és a hozzájuk rendelt kódszavak táblázatát. (Kódtábla, kódszótár). Kódolás Kódolásnak nevezzük az üzenet betűinek a helyettesítését a betűnek megfeleltetett kódszóval. A kódolás eredménye a kódolt üzenet. Az egyszerűség kedvéért a kódoláshoz használjunk két jelet, a és az 1 jeleket. Az adatelemek kódja lehet fix hosszúságú vagy lehet változó hosszúságú. A kódot egy kódfával ábrázolhatjuk, amely egy bináris fa, amelynek levelei a kódszavak. A kódszó a levélhez vezető útból olvasható ki a gyökértől indulva balra lépéskor, jobbra lépéskor 1 hozzáírásával a kódszóhoz. Dekódolás Dekódolásnak nevezzük a kódolt üzenet kódszavakra bontását. A kódnak dekódolhatónak kell lennie, ha azt akarjuk, hogy a dekódoláskor az eredeti üzenetet kapjuk vissza. Dekódolható kód Dekódolhatónak nevezzük a kódot, ha minden kódolt üzenet csak egyféleképpen bontható kódszavakra. Prefix kód Prefix kódnak nevezzük a kódot, ha egyik kódszó sem eleje semelyik másik kódszónak. (Semelyik kódszót sem lehet valamely másikból kódjelek hozzáírásával megkapni.) A prefix kód dekódolható kód. Dekódolható kódok ekvivalenciája Két dekódolható kódot ekvivalensnek nevezünk, ha a megfelelő kódszavaik

12 Adatstruktúrák, algoritmusok hossza megegyezik. Bizonyítható, hogy minden dekódolható kódhoz létezik vele ekvivalens prefix kód. Példa: Betű Gyakoriság Fix hossz Változó hossz c f(c) KódszóHosszKódszóHossz A B C D E F Megadjuk a két kód kódfáját. A téglalapok a fa levelei, a kódolandó ábécé betűi a gyakoriságokkal. A belső csúcsok körök, bennük a csúcs gyerekeinek gyakoriságösszege szerepel A: A:45 B:13 C:12 D:16 E:9 F: C:12 B:13 14 D:16 F:5 1 E:9 A fa költsége A fa költségének nevezzük a: ( T ) = f ( c) d( c) B számot, ahol c a C ábécé betűje, f(c) a betű gyakorisága és d(c) a betű mélysége a fában (kódszóhossz). c C A fa költségét leosztva a file-t alkotó betűk számával az egy betűre jutó átlagköltséget kapjuk, ami úgy is értelmezhető, mint az átlagos kódszóhossz. Ha ez kisebb, mint egy, akkor tömörítésről beszélünk. Optimális kód Optimális a kód, ha a fa költsége minimális.

13 Adatstruktúrák, algoritmusok Az optimális kód bináris fája mindig teljes. A Huffman-kód optimális kód. A Huffman-kód szerkesztése: Jelölje a kódolandó ábécé betűinek halmazát C és legyen a betűk száma n. A Huffman kód szerkesztési algoritmusának pszeudokódja kiindul egy prioritási sorból, amelyben a betűk a gyakoriságaik szerint vannak kulcsolva. Ezután n-1 lépésben mindig a két éppen akkor legkisebb gyakoriságú elemet összevonva felépít egy optimális kódfát. Az optimum nem egyértelmű, mert az optimális fában bármely csúcs bal és jobb gyerekét felcserélve újra optimális fát kapunk. Egy algoritmustervezési startégia a mohó algoritmus tervezése. Ezt a heurisztikát általában optimalizálásra használják. A mohó stratégia elve szerint az adott pillanatban mindig az ott legjobbnak tűnő lehetőséget választjuk a részprobléma megoldására, azaz a pillanatnyi lokális optimumot választjuk. Ez a választás függhet az előző választásoktól, de nem függ a későbbiektől. A mohó stratégia nem mindig vezet globális optimumra. A Huffman kód szerkesztési algoritmusa mohó algoritmus, mivel minden lépésben úgy von össze, hogy a költség a legkisebb mértékben növekedjen. A teljes fa költsége megegyezik az összevonási lépések költségének összegével. // algoritmus Huffman kód készítése T ( n) = Θ( nlogn) 1 HUFFMAN( C, T ) 2 // Input paraméter: C - a kódolandó abécé a gyakoriságokkal 3 // Output paraméter: T a kódfa 4 // 5 // Jelölje C az ábécé betűinek a számát 6 // Létrehozunk egy Q minimum prioritási sort az ábécé betűiből a gyakoriságot használva prioritásnak. A sor elemei fák lesznek, kezdetben minden fát egyetlen betű alkot. 7 Q C 8 FOR i 1 TO C 1 DO 9 PONTOT_LÉTESÍT(z) //Egy új z csomópontot hoz létre, melyet később a Q sorba be fogunk szúrni. Egy új fa gyökere lesz. 1 x Bal[z] KIVESZ_MIN(Q) //Kivesszük a Q sorból legkisebb elemet és az új z csomópont bal gyerekének nyílvánítjuk valamint elnevezzük x-nek átmenetileg 11 y Jobb[z] KIVESZ_MIN(Q) //Kivesszük a Q sorból a következő legkisebb elemet és az új z csomópont jobb gyerekének nyílvánítjuk valamint elnevezzük y-nak átmenetileg 12 f[z] f[x]+f[y] // Az új csomópontra meghatározzuk a gyakoriság értéket (prioritás) 13 BESZÚR(Q,z) // Az új z csomópontot beszúrjuk a Q sorba 14 KIVESZ_MIN( Q, T ) // A Q sor egyetlen elemét, mint eredményt Kivesszük a sorból

14 Adatstruktúrák, algoritmusok RETURN( T ) Példa: F:5 E:9 C:12 B:13 D:16 A:45 14 C:12 B:13 D:16 A:45 F:5 E:9 D: A:45 F:5 E:9 C:12 B: A:45 C:12 B:13 14 D:16 F:5 E:9 A: C:12 B:13 14 D:16 F:5 E:9

15 Adatstruktúrák, algoritmusok A: C:12 B:13 14 D:16 F:5 E: Diszjunkt halmazok adatstruktúra Diszjunkt halmazok adatstruktúra A diszjunkt halmazok adatszerkezet dinamikus halmazok S=(S 1,S 2,,S k ) együttese. A halmazok elemei objektumok. Mindegyik halmazt egy képviselője azonosít, mely eleme a halmaznak. Általában lényegtelen, hogy melyik ez az elem. Műveletei: HALMAZT_KÉSZÍT(x): Egy új halmazt hoz létre, melynek ez az egy x eleme lesz, amely egyúttal képviselője is. EGYESÍT(x,y): Az x-et tartalmazó S x és az y-t tartalmazó S y halmazokat egyesíti a két halmaz uniójává. Az eredmény az eredeti két halmaz helyére lép, azok megsemmisülnek. A közös képviselő az unió tetszőleges eleme lehet. HALMAZT_KERES(x): Visszaad egy mutatót, amely x halmazának a képviselőjére mutat. Egy alkalmazás diszjunkt halmazokra: megkeressük egy gráf összefüggő komponenseit algoritmus Gráf összefüggő komponenseinek megkeresése T n = Θ V + ) // ( ) ( E 1 ÖSSZEFÜGGŐ_KOMPONENSEK( G ) 2 // Input paraméter: G - a gráf 3 // Output paraméter: G a gráf a komponens információkkal 4 // 5 FOR v V[G] csúcsra DO 6 HALMAZT_KÉSZÍT( v ) 7 FOR (u,v) E[G] élre DO

16 Adatstruktúrák, algoritmusok IF HALMAZT_KERES( u ) HALMAZT_KERES( v ) 9 THEN EGYESÍT( u, v ) 1 RETURN( G ) Két kézenfekvő módszer kínálkozik a diszjunkt halmazok adatstruktúra realizálására: 1. a listás realizáció és a 2. gyökeres fákból álló erdős realizáció. A listás realizáció esetén mindegyik halmaz egy önálló lista. A lista első elemét kinevezzük képviselőnek. Mindegyik listaelemnek van egy mutatója, amely a lista következő elemére mutat és van egy, amely a képviselőre. A képviselő is visszamutat saját magára. Az EGYESÍT eljárás ilyenkor a két lista összekapcsolását jelenti, ahol a második listában minden elemnek a képviselő mutatót le kell cserélni az első lista képviselőjére mutató mutatóra. Példa: Két halmaz, az egyik az {a,b,c,d} elemekből áll, képviselőjük az a elem. A másik az {e,f,g} elemekből áll, képviselőjük az e elem. fej a b c d fej e f g Az összekapcsolás eredménye: EGYESÍT( a, e ) fej a b c d e f g Ugyanezen halmazoknak a gyökeres fás erdős realizációja lehet az alábbi. Az ábrán az egyesítés műveletének az eredménye is látható. gyökér a gyökér e gyökér e b d f a f c g b d g c

17 Adatstruktúrák, algoritmusok Diszjunkt halmaz erdőkre a pszeudokód az alábbi lehet. Megadjuk az összekapcsolás algoritmusát is, amely egy rang fogalmat használ. Minden elemhez hozzárendelünk egy nemnegatív rang számértéket. Ez kezdetben zérus, majd növekedhet. Az összekapcsolásnál a nagyobb rangú képviselő lesz az új képviselő, egyenlőség esetén a másodiknak megadott, melynek a rangját eggyel megnöveljük. Szülő[ x ] az x által mutatott elemnek a szülőjére mutató mutató, Rang[ x ] pedig az elem rang mezeje algoritmus Elemből halmaz készítése // T ( n) = Θ( 1) 1 HALMAZT_KÉSZÍT ( x ) 2 // Input paraméter: x mutató az elemre 3 // Output: az x mutatójú elem kiegészítve halmazinformációkkal 4 // 5 Szülő[ x ] x 6 Rang[ x ] 7 RETURN algoritmus Két diszjunkt halmaz uniója (összekapcsolása) T n = Θ 1 // ( ) ( ) 1 ÖSSZEKAPCSOL( x, y ) 2 // Input paraméter: x mutató az első halmaz képviselőjére // y - mutató a második halmaz képviselőjére 3 // Output: az összekapcsolt halmaz 4 // 5 IF Rang[ x ] > Rang[ y ] 6 THEN Szülő[ x ] x 7 ELSE Szülő[ x ] y 8 IF Rang[ x ] = Rang[ y ] 9 THEN INC (Rang[ y ]) 1 RETURN algoritmus Halmaz keresése T n = Θ h, h a fa magassága // ( ) ( ) 1 HALMAZT_KERES( x, y ) 2 // Input paraméter: x elem mutatója 3 // Output paraméter: y x halmaza képviselőjének mutatója 4 // 5 y x 6 IF y Szülő[ y ] 7 THEN HALMAZT_KERES( Szülő[ y ], y) 8 RETURN ( y ) algoritmus Két diszjunkt halmaz egyesítése

18 Adatstruktúrák, algoritmusok // T ( n) Θ( h) =, h a magasabb fa magassága 1 EGYESÍT( x, y ) 2 // Input paraméter: x az egyik elem mutatója 3 // y a másik elem mutatója 4 // Output: a két elem halmaza egyesítve 5 // 6 HALMAZT_KERES( x, u ) // u az x képviselője 7 HALMAZT_KERES( y, v ) // v az y képviselője 8 ÖSSZEKAPCSOL( u, v ) 9 RETURN Binomiális fák és binomiális kupac A binomiális fa A B k binomiális fa egy rekurzív módon rendezett fa. B egyetlen csúcsból áll, B k pedig két összekapcsolt B k-1 binomiális fából (k=1,2,3, ), ahol az egyik fa gyökércsúcsa a másik gyökerének legbaloldalibb gyereke. Alább szemléltetjük a B, B 1, B 2, B 3 binomiális fákat. B B 1 B 2 B 3 Tétel: A Binomiális fák tulajdonságai Ha B k binomiális fa, akkor 1. 2 k csúcsa van 2. A magassága k k 3. Az i-dik szinten (mélységben) pontosan (i =,1,2,,k) számú csúcs i van. 4. A gyökércsúcs fokszáma k, ami nagyobb, mint bármely más csúcs fokszáma; továbbá ha a gyökércsúcs gyerekeit balról jobbra megszámozzuk k-1, k-2,,1,-val, akkor az i. gyerek egy B i részfa gyökércsúcsa. Következmény: Egy n csúcsú binomiális fa minden csúcsának fokszáma legfeljebb log 2 n. A binomiális kupac Egy H binomiális kupac binomiális fák olyan halmaza, mely rendelkezik az alábbi úgynevezett binomiális-kupac tulajdonságokkal:

19 Adatstruktúrák, algoritmusok H minden binomiális fája kupac-rendezett, azaz minden csúcs kulcsa nagyobb vagy egyenlő, mint a szülőjének a kulcsa. 2. Bármilyen fokszámot tekintünk, H-ban legfeljebb egy olyan binomiális fa van, amelyikben a gyökércsúcs fokszáma a tekintett fokszám. Megjegyzés: Egy n elemű binomiális kupac legfeljebb log 2 n +1 binomiális fából áll. Ha felírjuk n kettes számrendszerbeli alakját, akkor a binomiális kupacban azok a binomiális fák szerepelnek, amelyeknek az indexe éppen megegyezik a szám alakjában a szereplő kettő hatvány kitevőjével. Például, ha 11 csúcs van a binomiális kupacban, akkor 11=111 2, ezért a kupac három fából áll és ezek a B 3, B 1, B fák. A binomiális kupac műveletei: BINOMIÁLIS_KUPACOT_KÉSZÍT(H) BESZÚR( H, x ) Egy új üres H kupacot készít és ad vissza A H kupacba beszúr egy olyan x csúcsot, amelynek a kulcsmezője már ki van töltve BINOMIÁLIS_KUPACBAN_MIN( H, min ) Visszaad egy olyan mutatót, amely a H kupacnak a minimális kulcsú csúcsára mutat KIVESZ_MIN( H, min ) EGYESÍT( H 1, H 2, H ) KULCSOT_CSÖKKENT( H, x, k ) TÖRÖL( H, x ) A H kupacból kiveszi azt a csúcsot, amelynek a kulcsa minimális, és visszaad egy erre a csúcsra mutató pointert Egy olyan új H kupacot készít és ad vissza, amelyik a H 1 és H 2 minden csúcsát tartalmazza. H 1 és H 2 megsemmisül A H kupac x csúcsához az új k kulcs-értéket rendeli hozzá, feltéve, hogy ez az érték nem nagyobb, mint az eredeti. A H kupacból az x csúcsot törli. A binomiális kupac ábrázolásakor a kupacban szereplő fákat a gyökércsúcs fokszáma szerinti növekedő sorrendnek megfelelően soroljuk fel. A gyökércsúcsokat egy listára fűzzük fel, melynek a kezdetére egy fejelem mutató mutat. Fejelem[H] Kirészletezzük az egyes csúcspontok mezőit is. Minden csúcspontban az alábbi kísérő információkat tároljuk. Szülő mutató Kulcs Fokszám

20 Adatstruktúrák, algoritmusok Bal gyerek mutató Az előző ábra ezen információkkal kirészletezve: Jobb testvér mutató Fejelem[H] Pszeudokódok a műveletekre algoritmus Binomiális kupac készítése T // ( n) = Θ(1) 1 BINOMIÁLIS_KUPACOT_KÉSZÍT( H ) 2 // Output paraméter: H az üres új binomiális kupac 3 // 4 fejelem[h] NIL 5 RETURN ( H ) algoritmus Binomiális kupacban minimumkeresés T n = Θ log n // ( ) ( ) 1 BINOMIÁLIS_KUPACBAN_MIN( H, min ) 2 // Input paraméter: H a binomiális kupac 3 // Output paraméter: min mutató a minimális elemre

21 Adatstruktúrák, algoritmusok // 5 min NIL 6 x fejelem[h] 7 minkulcs 8 WHILE x NIL DO 9 IF kulcs[ x ] < minkulcs 1 THEN minkulcs kulcs[ x ] 11 min x 12 x testvér[ x ] RETURN ( min ) algoritmus Binomiális fák összekapcsolása T n ) // ( ) = Θ(1 1 BINOMIÁLIS_ÖSSZEKAPCSOLÁS ( y, z ) 2 // Két B k-1 y és z gyökércsúcsú fát összekapcsol 3 // Input paraméter: y az első fa gyökérmutatója 4 // z a második fa gyökérmutatója 5 // Output paraméter: z az eredményfa gyökérmutatója 6 // 7 szülő[ y ] z 8 testvér[ y ] gyerek[ z ] 9 gyerek[ z ] y 1 INC ( fokszám[ z ] ) 11 RETURN ( z ) // algoritmus Binomiális kupacok egyesítése T ( n) = Θ( logn) 1 BINOMIÁLIS_KUPACOKAT_EGYESIT ( H 1, H 2, H ) 3 // Input paraméter: H 1 az első kupac 4 // H 2 a második kupac 5 // Output paraméter: H az eredmény kupac 6 // 7 // A kupacok gyökércsúcsainak listáit összefésüli növekvő fokszám szerint. Minden fokszámhoz legfeljebb két gyökércsúcs tartozhat. Ezután az azonos fokszámúakat összekapcsolja egy magasabb fokszámúvá. Átmenetileg előfordulhat, hogy azonos fokszámmal három gyökércsúcs is rendelkezik. Ilyenkor az összekapcsolást az utolsó kettőre kell elvégezni. 8 RETURN ( H ) // algoritmus Binomiális kupacba beszúrás T ( n) = Θ( logn) 1 BINOMIÁLIS_KUPACBA_BESZÚR ( H, x )

22 Adatstruktúrák, algoritmusok // Input paraméter: H 1 a kupac 4 // x beszúrandó elem mutatöja 5 // Output paraméter: H a megváltozott kupac 6 // 7 // Létrehozunk egy egy csúcsból álló új binomiális kupacot, amely a beszúrandó csúcsot tartalmazza. Az új és a régi kupacot egyesítjük. ( algoritmussal.) 8 RETURN ( H ) // algoritmus Binomiális kupacból minimum kivágása T ( n) = Θ( logn) 1 BINOMIÁLIS_KUPACBÓL_MINIMUMOT_KIVÁG ( H ) 2 // Input paraméter: H a kupac 3 // Output paraméter: H a megváltozott kupac 4 // 5 // Megkeressük a gyökérlánc minimális elemét. A minimális elem fáját a gyökérlistából kiláncoljuk. A minimális elem gyerekeinek listáját megfordítjuk és létrehozunk egy binomiális kupacot, amelynek ez lesz a gyökérlistája. A két kupacot egyesítjük. 6 RETURN ( H ) // algoritmus Binomiális kupacban kulcsérték csökkentése T ( n) = Θ( logn) 1 BINOMIÁLIS_KUPACBAN_KULCSOT_CSÖKKENT ( H, x, k ) 2 // Input paraméter: H a kupac 3 // x mutató a csökkentendő kulcsú elemre 4 // k az új kulcsérték 5 // Output paraméter: H a megváltozott kupac 6 // 7 // A csökkentett kulccsal az elemet a fájában mindaddig felfelé buborékoltatjuk cserékkel, amíg a kupac tulajdonság nem teljesül. Az elem eljuthat akár a gyökérlistáig is. 8 RETURN ( H ) algoritmus Binomiális kupacból törlés // T ( n) = Θ( logn) 1 INOMIÁLIS_KUPACBÓL_TÖRÖL ( H, x ) B 2 // Input paraméter: H a kupac 3 // x mutató a törlendő elemre 4 // Output paraméter: H a megváltozott kupac 5 // 6 BINOMIÁLIS_KUPACBAN_KULCSOT_CSÖKKENT( H, x, - ) 7 BINOMIÁLIS_KUPACBÓL_MINIMUMOT_KIVÁG( H ) 7 RETURN ( H )

5. A gráf, mint adatstruktúra Gráfelméleti bevezető

5. A gráf, mint adatstruktúra Gráfelméleti bevezető 5. A gráf, mint adatstruktúra 5.1. Gráfelméleti bevezető Az irányított gráf (digráf) A G = ( V, rendezett párt irányított gráfnak (digráfnak) nevezzük. A rendezett pár elemeire tett kikötések: V véges

Részletesebben

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy.

Más szavakkal formálisan:, ahol olyan egész szám, hogy. Más szavakkal formálisan:, ahol olyan egész szám, hogy. Bevezetés 1. Definíció. Az alsó egészrész függvény minden valós számhoz egy egész számot rendel hozzá, éppen azt, amely a tőle nem nagyobb egészek közül a legnagyobb. Az alsó egészrész függvény jele:,

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmusok és adatszerkezetek gyakorlat 07 Algoritmusok és adatszerkezetek gyakorlat 0 Keresőfák Fák Fa: összefüggő, körmentes gráf, melyre igaz, hogy: - (Általában) egy gyökér csúcsa van, melynek 0 vagy több részfája van - Pontosan egy út vezet

Részletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. GRÁFOK ÁBRÁZOLÁSA 22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2010. január 8. Bevezet El z órák anyagainak áttekintése Ismétlés Adatszerkezetek osztályozása Sor, Verem, Lengyelforma Statikus, tömbös reprezentáció Dinamikus, láncolt reprezentáció Láncolt lista Lassú

Részletesebben

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF

EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Összefoglaló Gráfok / EGYSZERŰ, NEM IRÁNYÍTOTT (IRÁNYÍTATLAN) GRÁF Adott a G = (V, E) gráf ahol a V a csomópontok, E az élek halmaza E = {(x, y) x, y V, x y (nincs hurokél) és (x, y) = (y, x)) Jelölések:

Részletesebben

Kupac adatszerkezet. 1. ábra.

Kupac adatszerkezet. 1. ábra. Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Mohó algoritmusok. Példa:

Mohó algoritmusok. Példa: Mohó algoritmusok Optimalizálási probléma megoldására szolgáló algoritmus sokszor olyan lépések sorozatából áll, ahol minden lépésben adott halmazból választhatunk. Ezt gyakran dinamikus programozás alapján

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. Mérai László előadása alapján Készítette: Nagy Krisztián 1. előadás Gráfok halmaza, gráf, ahol a csúcsok halmaza, az élek illesztkedés reláció: illesztkedik az élre, ha ( -él illesztkedik

Részletesebben

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus.

5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. 5/1. tétel: Optimalis feszítőfák, Prim és Kruskal algorithmusa. Legrövidebb utak graphokban, negatív súlyú élek, Dijkstra és Bellman Ford algorithmus. Optimalis feszítőfák Egy összefüggő, irányítatlan

Részletesebben

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1]

Kupac adatszerkezet. A[i] bal fia A[2i] A[i] jobb fia A[2i + 1] Kupac adatszerkezet A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. ősz 1. Diszkrét matematika 2.C szakirány 2. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. ősz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2015.

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2015. tavasz 1. Diszkrét matematika 2.C szakirány 1. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu Komputeralgebra Tanszék 2015. tavasz Gráfelmélet Diszkrét

Részletesebben

Egyesíthető prioritási sor

Egyesíthető prioritási sor Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}

Részletesebben

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk

A továbbiakban Y = {0, 1}, azaz minden szóhoz egy bináris sorozatot rendelünk 1. Kódelmélet Legyen X = {x 1,..., x n } egy véges, nemüres halmaz. X-et ábécének, elemeit betűknek hívjuk. Az X elemeiből képzett v = y 1... y m sorozatokat X feletti szavaknak nevezzük; egy szó hosszán

Részletesebben

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma

Gráfelmélet. I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Készítette: Laczik Sándor János Gráfelmélet I. Előadás jegyzet (2010.szeptember 9.) 1.A gráf fogalma Definíció: a G=(V,E) párt egyszerű gráfnak nevezzük, (V elemeit a gráf csúcsainak/pontjainak,e elemeit

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK 30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK A gráfos alkalmazások között is találkozunk olyan problémákkal, amelyeket megoldását a részekre bontott gráfon határozzuk meg, majd ezeket alkalmas módon teljes megoldássá

Részletesebben

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás

1. ábra. Egy rekurzív preorder bejárás. Egy másik rekurzív preorder bejárás Preorder ejárás Fa bejárásán olyan algoritmust értünk, amelynek bemenete egy F fa és egy M művelet, és az algoritmus adott sorrendben pontosan egyszer végrehajtja az M műveletet a fa pontjaiban lévő adatokra.

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 3. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 2017.

Részletesebben

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia

Részletesebben

Rendezések. Összehasonlító rendezések

Rendezések. Összehasonlító rendezések Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk

Részletesebben

III. Gráfok. 1. Irányítatlan gráfok:

III. Gráfok. 1. Irányítatlan gráfok: III. Gráfok 1. Irányítatlan gráfok: Jelölés: G=(X,U), X a csomópontok halmaza, U az élek halmaza X={1,2,3,4,5,6}, U={[1,2], [1,4], [1,6], [2,3], [2,5], [3,4], [3,5], [4,5],[5,6]} Értelmezések: 1. Fokszám:

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2016. tavasz 1. Diszkrét matematika 2. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n). Edényrendezés Tegyük fel, hogy a rendezendő H = {a 1,...,a n } halmaz elemei a [0,1) intervallumba eső valós számok. Vegyünk m db vödröt, V [0],...,V [m 1] és osszuk szét a rendezendő halmaz elemeit a

Részletesebben

Diszkrét matematika 2.

Diszkrét matematika 2. Diszkrét matematika 2. 2018. szeptember 21. 1. Diszkrét matematika 2. 2. előadás Fancsali Szabolcs Levente nudniq@cs.elte.hu www.cs.elte.hu/ nudniq Komputeralgebra Tanszék 2018. szeptember 21. Gráfelmélet

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor  compalg.inf.elte.hu/ nagy Diszkrét matematika 3. estis képzés 2018. ősz 1. Diszkrét matematika 3. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 10. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Adatszerkezet - műveletek

Adatszerkezet - műveletek Adatszerkezet - műveletek adatszerkezet létrehozása adat felvétele adat keresése adat módosítása adat törlése elemszám visszaadása minden adat törlése (üresít) adatszerkezet felszámolása (megszüntet) +

Részletesebben

Gráfelméleti alapfogalmak

Gráfelméleti alapfogalmak 1 Gráfelméleti alapfogalmak Gráf (angol graph= rajz): pontokból és vonalakból álló alakzat. pontok a gráf csúcsai, a vonalak a gráf élei. GRÁ Irányítatlan gráf Vegyes gráf Irányított gráf G H Izolált pont

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime?

Ugrólisták. RSL Insert Example. insert(22) with 3 flips. Runtime? Ugrólisták Ugrólisták Ugrólisták Ugrólisták RSL Insert Example insert(22) with 3 flips 13 8 29 20 10 23 19 11 2 13 22 8 29 20 10 23 19 11 2 Runtime? Ugrólisták Empirical analysis http://www.inf.u-szeged.hu/~tnemeth/alga2/eloadasok/skiplists.pdf

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

17. A 2-3 fák és B-fák. 2-3 fák

17. A 2-3 fák és B-fák. 2-3 fák 17. A 2-3 fák és B-fák 2-3 fák Fontos jelentősége, hogy belőlük fejlődtek ki a B-fák. Def.: Minden belső csúcsnak 2 vagy 3 gyermeke van. A levelek egy szinten helyezkednek el. Az adatrekordok/kulcsok csak

Részletesebben

10. előadás Speciális többágú fák

10. előadás Speciális többágú fák 10. előadás Adatszerkezetek és algoritmusok előadás 2018. április 17., és Debreceni Egyetem Informatikai Kar 10.1 A többágú fák kezelésére nincsenek általános elvek, implementációjuk elsősorban alkalmazásfüggő.

Részletesebben

2. Visszalépéses stratégia

2. Visszalépéses stratégia 2. Visszalépéses stratégia A visszalépéses keres rendszer olyan KR, amely globális munkaterülete: út a startcsúcsból az aktuális csúcsba (ezen kívül a még ki nem próbált élek nyilvántartása) keresés szabályai:

Részletesebben

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott . Minimális súlyú feszítő fa keresése Képzeljük el, hogy egy útépítő vállalat azt a megbízást kapja, hogy építsen ki egy úthálózatot néhány település között (a települések között jelenleg nincs út). feltétel

Részletesebben

1. tétel - Gráfok alapfogalmai

1. tétel - Gráfok alapfogalmai 1. tétel - Gráfok alapfogalmai 1. irányítatlan gráf fogalma A G (irányítatlan) gráf egy (Φ, E, V) hátmas, ahol E az élek halmaza, V a csúcsok (pontok) halmaza, Φ: E {V-beli rendezetlen párok} illeszkedési

Részletesebben

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y.

Algoritmuselmélet. Mélységi keresés és alkalmazásai. Katona Gyula Y. Algoritmuselmélet Mélységi keresés és alkalmazásai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 9. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet

Részletesebben

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: (

HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör. Forrás: ( HAMILTON KÖR: minden csúcson PONTOSAN egyszer áthaladó kör Teljes gráf: Páros gráf, teljes páros gráf és Hamilton kör/út Hamilton kör: Minden csúcson áthaladó kör Hamilton kör Forrás: (http://www.math.klte.hur/~tujanyi/komb_j/k_win_doc/g0603.doc

Részletesebben

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül.

A MAXIMUM-KUPACOL eljárás helyreállítja az A[i] elemre a kupactulajdonságot. Az elemet süllyeszti cserékkel mindaddig, amíg a tulajdonság sérül. Kiválasztás kupaccal A bináris kupac egy majdnem teljes bináris fa, amely minden szintjén teljesen kitöltött kivéve a legalacsonyabb szintet, ahol balról jobbra haladva egy adott csúcsig vannak elemek.

Részletesebben

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/okt/ad/jegyzet/ad1/b+fa.html 1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes

Részletesebben

Elemi adatszerkezetek

Elemi adatszerkezetek 2017/12/16 17:22 1/18 Elemi adatszerkezetek < Programozás Elemi adatszerkezetek Szerző: Sallai András Copyright Sallai András, 2011, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Shannon és Huffman kód konstrukció tetszőleges. véges test felett 1 Shannon és Huffman kód konstrukció tetszőleges véges test felett Mire is jók ezek a kódolások? A szabványos karakterkódolások (pl. UTF-8, ISO-8859 ) általában 8 biten tárolnak egy-egy karaktert. Ha tudjuk,

Részletesebben

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet

7. BINÁRIS FÁK 7.1. A bináris fa absztrakt adattípus 7.2. A bináris fa absztrakt adatszerkezet 7. BINÁRIS FÁK Az előző fejezetekben már találkoztunk bináris fákkal. Ezt a központi fontosságú adatszerkezetet most vezetjük be a saját helyén és az általános fák szerepét szűkítve, csak a bináris fát

Részletesebben

ELTE IK Esti képzés tavaszi félév. Tartalom

ELTE IK Esti képzés tavaszi félév. Tartalom Diszkrét Matematika 2 vizsgaanyag ELTE IK Esti képzés 2017. tavaszi félév Tartalom 1. Számfogalom bővítése, homomorfizmusok... 2 2. Csoportok... 9 3. Részcsoport... 11 4. Generátum... 14 5. Mellékosztály,

Részletesebben

Diszkrét matematika 2. estis képzés

Diszkrét matematika 2. estis képzés Diszkrét matematika 2. estis képzés 2018. tavasz 1. Diszkrét matematika 2. estis képzés 7. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10. Összetett programozási tételek Sorozathoz sorozatot relő feladatokkal foglalkozunk. A bemenő sorozatot le kell másolni, s közben az elemekre vonatkozó átalakításokat lehet végezni rajta: Input : n N 0,

Részletesebben

Programozási módszertan. Mohó algoritmusok

Programozási módszertan. Mohó algoritmusok PM-08 p. 1/17 Programozási módszertan Mohó algoritmusok Werner Ágnes Villamosmérnöki és Információs Rendszerek Tanszék e-mail: werner.agnes@virt.uni-pannon.hu PM-08 p. 2/17 Bevezetés Dinamikus programozás

Részletesebben

Gráfelméleti feladatok. c f

Gráfelméleti feladatok. c f Gráfelméleti feladatok d e c f a b gráf, csúcsok, élek séta: a, b, c, d, e, c, a, b, f vonal: c, d, e, c, b, a út: f, b, a, e, d (walk, lanţ) (trail, lanţ simplu) (path, lanţ elementar) 1 irányított gráf,

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal:

Buborékrendezés: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábrázolás: For ciklussal: Buborékrendezés: For ciklussal: Hanoi Tornyai: Asszimptótikus fv.ek: Láncolt ábr.: ha p egy mutató típusú változó akkor p^ az általa mutatott adatelem, p^.adat;p^.mut. A semmibe mutató ponter a NIL.Szabad

Részletesebben

Számláló rendezés. Példa

Számláló rendezés. Példa Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással való összehasonlítása alapján működik leírja egy bináris döntési fa. Az algoritmus által a

Részletesebben

Algoritmuselmélet 7. előadás

Algoritmuselmélet 7. előadás Algoritmuselmélet 7. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Március 11. ALGORITMUSELMÉLET 7. ELŐADÁS 1 Múltkori

Részletesebben

Haladó rendezések. PPT 2007/2008 tavasz.

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek Hierarchikus adatszerkezetek A szekveniális adatszerkezetek általánosítása. Minden adatelemnek pontosan 1 megelőzője van, de akárhány rákövetkezője lehet, kivéve egy speciális elemet. Fa (tree) Hierarchikus

Részletesebben

7 7, ,22 13,22 13, ,28

7 7, ,22 13,22 13, ,28 Általános keresőfák 7 7,13 13 13 7 20 7 20,22 13,22 13,22 7 20 25 7 20 25,28 Általános keresőfa Az általános keresőfa olyan absztrakt adatszerkezet, amely fa és minden cellájában nem csak egy (adat), hanem

Részletesebben

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek Tömb Ugyanolyan típusú elemeket tárol A mérete előre definiált kell legyen és nem lehet megváltoztatni futás során Legyen n a tömb mérete. Ekkor:

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 207. tavasz. Diszkrét matematika 2.C szakirány 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék 207.

Részletesebben

Diszkrét matematika 1. estis képzés

Diszkrét matematika 1. estis képzés Diszkrét matematika 1. estis képzés 2019. tavasz 1. Diszkrét matematika 1. estis képzés 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Mérai László diái alapján

Részletesebben

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek:

A programozás alapjai előadás. [<struktúra változó azonosítók>] ; Dinamikus adatszerkezetek: A programozás alapjai 1 Dinamikus adatszerkezetek:. előadás Híradástechnikai Tanszék Dinamikus adatszerkezetek: Adott építőelemekből, adott szabályok szerint felépített, de nem rögzített méretű adatszerkezetek.

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Nagy Gábor compalg.inf.elte.hu/ nagy

Nagy Gábor  compalg.inf.elte.hu/ nagy Diszkrét matematika 3. estis képzés 2018. ősz 1. Diszkrét matematika 3. estis képzés 9. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y.

Algoritmuselmélet. Gráfok megadása, szélességi bejárás, összefüggőség, párosítás. Katona Gyula Y. Algoritmuselmélet Gráfok megadása, szélességi bejárás, összefüggőség, párosítás Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 2. előadás

Részletesebben

Alapfogalmak a Diszkrét matematika II. tárgyból

Alapfogalmak a Diszkrét matematika II. tárgyból Alapfogalmak a Diszkrét matematika II. tárgyból (A szakirány, 2015-2016 tavaszi félév) A számonkérés során ezeknek a definícióknak, tételkimondásoknak az alapos megértését is számon kérjük. A példakérdések

Részletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA 26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma

Részletesebben

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007

1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok. HálózatokII, 2007 Hálózatok II 2007 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Szerda 17:00 18:30 Gyakorlat: nincs Vizsga írásbeli Honlap: http://people.inf.elte.hu/lukovszki/courses/g/07nwii

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás.   Szénási Sándor Gráfok 2. Legrövidebb utak, feszítőfák előadás http://nik.uni-obuda.hu/sztf2 Szénási Sándor Óbudai Egyetem,Neumann János Informatikai Kar Legrövidebb utak keresése Minimális feszítőfa keresése Gráfok 2

Részletesebben

Számjegyes vagy radix rendezés

Számjegyes vagy radix rendezés Számláló rendezés Amennyiben a rendezendő elemek által felvehető értékek halmazának számossága kicsi, akkor megadható lineáris időigényű algoritmus. A bemenet a rendezendő elemek egy n méretű A tömbben

Részletesebben

SzA II. gyakorlat, szeptember 18.

SzA II. gyakorlat, szeptember 18. SzA II. gyakorlat, 015. szeptember 18. Barátkozás a gráfokkal Drótos Márton drotos@cs.bme.hu 1. Az előre megszámozott (címkézett) n darab pont közé hányféleképp húzhatunk be éleket úgy, hogy egyszerű gráfhoz

Részletesebben

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése

Fájlszervezés. Adatbázisok tervezése, megvalósítása és menedzselése Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése Célok: gyors lekérdezés, gyors adatmódosítás, minél kisebb tárolási terület. Kezdetek Nincs általánosan legjobb optimalizáció. Az egyik

Részletesebben

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12

Módosítható Prioritási sor Binomiális kupaccal. Wednesday, March 21, 12 Módosítható Prioritási sor Binomiális kupaccal modosit(x,k) {! if (k>x.kulcs) {!! x.kulcs=k ;!! y=x!! z=x.apa ;!! while(z!=nil and y.kulcs

Részletesebben

DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ

DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ DISZKRÉT MATEMATIKA 2 KIDOLGOZOTT TÉTELSOR 1. RÉSZ B szakirány 2014 június Tartalom 1. Fák definíciója ekvivalens jellemzései... 3 2. Hamilton-kör Euler-vonal... 4 3. Feszítőfa és vágás... 6 4. Címkézett

Részletesebben

15. A VERSENYRENDEZÉS

15. A VERSENYRENDEZÉS 15. A VERSENYRENDEZÉS A versenyrendezés (tournament sort) a maximum-kiválasztó rendezések közé tartozik, ugyanis az elemek közül újra és újra kiválasztja (eltávolítja és kiírja) a legnagyobbat. Az eljárás

Részletesebben

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány Diszkrét matematika 2.C szakirány 2017. tavasz 1. Diszkrét matematika 2.C szakirány 11. előadás Nagy Gábor nagygabr@gmail.com nagy@compalg.inf.elte.hu compalg.inf.elte.hu/ nagy Komputeralgebra Tanszék

Részletesebben

2. Visszalépéses keresés

2. Visszalépéses keresés 2. Visszalépéses keresés Visszalépéses keresés A visszalépéses keresés egy olyan KR, amely globális munkaterülete: egy út a startcsúcsból az aktuális csúcsba (az útról leágazó még ki nem próbált élekkel

Részletesebben

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz

Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz Diszkrét matematika 2 (C) vizsgaanyag, 2012 tavasz A vizsga menete: a vizsga írásbeli és szóbeli részből áll. Az írásbeli beugrón az alábbi kérdések közül szerepel összesen 12 darab, mindegyik egy pontot

Részletesebben

Algoritmusok bonyolultsága

Algoritmusok bonyolultsága Algoritmusok bonyolultsága 5. előadás http://www.ms.sapientia.ro/~kasa/komplex.htm 1 / 27 Gazdaságos faváz Kruskal-algoritmus Joseph Kruskal (1928 2010) Legyen V = {v 1, v 2,..., v n }, E = {e 1, e 2,...,

Részletesebben

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út

HAMILTON ÚT: minden csúcson PONTOSAN egyszer áthaladó út SÍKBA RAJZOLHATÓ GRÁFOK ld. előadás diasorozat SZÍNEZÉS: ld. előadás diasorozat PÉLDA: Reguláris 5 gráf színezése 4 színnel Juhász, PPKE ITK, 007: http://users.itk.ppke.hu/~b_novak/dmat/juhasz_5_foku_graf.bmp

Részletesebben

Számítógép hálózatok, osztott rendszerek 2009

Számítógép hálózatok, osztott rendszerek 2009 Számítógép hálózatok, osztott rendszerek 2009 1: Bevezetés: Internet, rétegmodell Alapok: aszimptótika, gráfok 1 Az előadáshoz Előadás: Hétfő 10:00 12:00 óra Gyakorlat: Hétfő 14:00-16:00 óra Honlap: http://people.inf.elte.hu/lukovszki/courses/0910nwmsc

Részletesebben

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa:

Gráfok, definíciók. Gráfok ábrázolása. Az adott probléma megoldásához ténylegesen mely műveletek szükségesek. Ábrázolások. Példa: Gráfok, definíciók Irányítatlan gráf: G = (V,E), ahol E rendezetlen (a,b),a,b V párok halmaza. Irányított gráf: G = (V,E) E rendezett (a,b) párok halmaza; E V V. Címkézett (súlyozott) gráf: G = (V,E,C)

Részletesebben

Adatszerkezetek II. 1. előadás

Adatszerkezetek II. 1. előadás Adatszerkezetek II. 1. előadás 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 : (p 1,p 2 ) E-ből nem következik, hogy (p 2,p 1 ) E Irányítatlan gráf

Részletesebben

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

1. ábra. Számláló rendezés

1. ábra. Számláló rendezés 1:2 2:3 1:3 1,2,3 1:3 1,3,2 3,1,2 2,1,3 2:3 2,3,1 3,2,1 1. ábra. Alsó korlát rendezési algoritmusokra Minden olyan rendezési algoritmusnak a futását, amely elempárok egymással

Részletesebben

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar Algoritmizálás Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar horvath@inf.u-szeged.hu 0.1. Az algoritmikus tudás szintjei Ismeri (a megoldó algoritmust) Érti Le tudja pontosan

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi

Részletesebben

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 8. előadás (Horváth Gyula anyagai felhasználásával) Kereső- és rendezőfák Közös tulajdonságok: A gyökérelem (vagy kulcsértéke) nagyobb vagy egyenlő minden tőle balra levő elemnél. A

Részletesebben

Egyesíthető prioritási sor

Egyesíthető prioritási sor Egyesíthető prioritási sor Értékhalmaz: EPriSor = S E, E-n értelmezett a lineáris rendezési reláció. Műveletek: S,S 1,S 2 : EPriSor, x : E {Igaz} Letesit(S, ) {S = /0} {S = S} Megszuntet(S) {} {S = S}

Részletesebben

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16.

Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem. I. B. 137/b március 16. Bevezetés a Számításelméletbe II. 6. előadás Sali Attila Budapest Műszaki és Gazdaságtudományi Egyetem Számítástudományi és Információelméleti Tsz. I. B. 7/b sali@cs.bme.hu 004 március 6. A kritikus út

Részletesebben