Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések.

Hasonló dokumentumok
Algoritmusok és adatszerkezetek I. régebbi vizsgakérdések.

Algoritmusok II. gyakorló feladatok

Algoritmusok II. gyakorló feladatok (2016)

Algoritmusok és adatszerkezetek II. Útmutatások a tanuláshoz, Tematika (2016)

22. GRÁFOK ÁBRÁZOLÁSA

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

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

Algoritmuselmélet 2. előadás

Gráfalgoritmusok ismétlés ősz

GRÁFOK ÉS ALGORITMUSOK ELMÉLETE VIZSGAKÉRDÉSEK Matematika BSc Elemző szakirány II. év 1. félév

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

Adatszerkezetek és algoritmusok

1. tétel - Gráfok alapfogalmai

Algoritmuselmélet 7. előadás

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

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek II. kidolgozott vizsgakérdések

Algoritmusok bonyolultsága

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

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.

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

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

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

9. előadás. A táblázat. A táblázatról általában, soros, önátrendező, rendezett és kulcstranszformációs táblázat

Programozás II. előadás

Adatszerkezetek 2. Dr. Iványi Péter

24. MINIMÁLIS KÖLTSÉGŰ UTAK I.

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:

Euler tétel következménye 1:ha G összefüggő síkgráf és legalább 3 pontja van, akkor: e 3

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

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

21. Adatszerkezetek Az adattípus absztrakciós szintjei Absztrakt adattípus (ADT) Absztrakt adatszerkezet (ADS) Egyszerű adattípusok Tömbök

Algoritmusok és adatszerkezetek gyakorlat 07

Algoritmuselmélet. Legrövidebb utak, Bellmann-Ford, Dijkstra. Katona Gyula Y.

i=1 i+3n = n(2n+1). j=1 2 j < 4 2 i+2 16 k, azaz az algoritmus valóban konstans versenyképes.

Függvények növekedési korlátainak jellemzése

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

Minimális feszítőfák Legyen G = (V,E,c), c : E R + egy súlyozott irányítatlan gráf. Terjesszük ki a súlyfüggvényt a T E élhalmazokra:

Gráfelméleti feladatok. c f

Algoritmusok és adatszerkezetek I. el adásjegyzet

Adatszerkezetek 2. Dr. Iványi Péter

Relációk. 1. Descartes-szorzat. 2. Relációk

Példa Hajtsuk végre az 1 pontból a Dijkstra algoritmust az alábbi gráfra. (A mátrixban a c i j érték az (i, j) él hossza, ha nincs él.

A félév során előkerülő témakörök

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

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

Dijkstra algoritmusa

Gráfok. Programozás II. előadás. Szénási Sándor.

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

Tuesday, March 6, 12. Hasító táblázatok

Pénzügyi matematika. Vizsgadolgozat I. RÉSZ. 1. Deniálja pontosan, mit értünk amerikai vételi opció alatt!

Deníciók és tételek a beugró vizsgára

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

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

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

Algoritmusok és adatszerkezetek

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

Diszkrét matematika 2.C szakirány

Diszkrét matematika 2.C szakirány

Gráfelméleti feladatok programozóknak

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Önszervező bináris keresőfák

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

A Formális nyelvek vizsga teljesítése. a) Normál A vizsgán 60 pont szerezhet, amely két 30 pontos részb l áll össze az alábbi módon:

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

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

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

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

Melykeres(G) for(u in V) {szin(u):=feher Apa(u):=0} for(u in V) {if szin(u)=feher then MBejar(u)}

23. SZÉLESSÉGI BEJÁRÁS

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

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

Algoritmusok és adatszerkezetek I. 1. előadás

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

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

Gráfalgoritmusok és hatékony adatszerkezetek szemléltetése

A számítástudomány alapjai

Gráfok 1. Tárolási módok, bejárások. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

Gráf-algoritmusok Legrövidebb utak

Táblázatok fontosabb műveletei 1

1. zárthelyi,

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

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

Mintaillesztő algoritmusok. Ölvedi Tibor OLTQAAI.ELTE

Online algoritmusok. Algoritmusok és bonyolultságuk. Horváth Bálint március 30. Horváth Bálint Online algoritmusok március 30.

Nagyságrendek. Kiegészítő anyag az Algoritmuselmélet tárgyhoz. Friedl Katalin BME SZIT február 1.

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

Algoritmuselmélet 6. előadás

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

A gráffogalom fejlődése

end function Az A vektorban elõforduló legnagyobb és legkisebb értékek indexeinek különbségét.. (1.5 pont) Ha üres a vektor, akkor 0-t..

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

Számjegyes vagy radix rendezés

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

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

Lineáris egyenletrendszerek

Algoritmusok és adatszerkezetek I. el adásjegyzet

2. Visszalépéses keresés

Átírás:

Algoritmusok és adatszerkezetek II. régebbi vizsgakérdések. Ásványi Tibor asvanyi@inf.elte.hu 2017. július 4. Az eljárásokat és függvényeket megfelel en elnevezett és paraméterezett struktogramok segítségével adjuk meg! Ne feledkezzünk meg a skalár típusú referencia paraméterek szükség szerinti jelölésér l sem! A változókat alapértelmezésben a struktogramra vonatkozóan lokálisnak tekintjük. Az algoritmusok konkrét példákon való bemutatásánál a m ködést alapértelmezésben az el adáson tanultak szerint kell szemléltetni. A vizsgákon öt feladat van: legalább egy kérdés az els két témakörb l (rendezés lineáris id ben, hasító táblák), legalább két kérdés a gráagoritmusokból és legalább egy kérdés az utolsó két témakörb l (sztring keresés, tömörítés). Mindegyik feladat 20 pontot ér. A ponthatárok: 85 jeles ; 70 jó ; 55 közepes ; 40 elégséges. 1. Rendezés lineáris id ben 1.1. Edényrendezés a [0;1) intervallumon 1.a, A 0,4; 0,82; 0,0; 0,53; 0,73; 0,023; 0,64; 0,7; 0,39; 0,203, tíz elem listán mutassa be az Edényrendezés algoritmusát [0; 1)-beli kulcsokra! 1.b, Adja meg az edényrendezés struktogramját! 1.c, Mekkora a minimális m veletigénye? Mekkora az átlagos m veletigénye, és milyen feltétellel? Hogyan tudnánk biztosítani, hogy a maximális m veletigénye Θ(n lg n) legyen? 2. A 0,42; 0,16; 0,64; 0,39; 0,20; 0,89; 0,13; 0,79; 0,53; 0,71 listán mutassa be és magyarázza el az Edényrendezés algoritmusát [0; 1)-beli kulcsokra! Mekkora a (szokásos, beszúró rendezéses változatának) minimális és maximális m veletigénye? Miért? Mekkora az átlagos m veletigénye? Hogyan 1

tudnánk a maximális m veletigényt aszimptotikusan csökkenteni? (Az edények továbbra is láncolt listák.) Mit értünk stabil rendezés alatt? Hogyan tudnánk a Edényrendezést stabil rendezéssé alakítani? 3. Adott az L egyszer láncolt lista, aminek n 0 eleme van. Minden elemének kulcsa a [0; 1) intervalumon egyenletes eloszlás szerint választott érték. Írja meg a bucketsort(l, n) utasítással meghívható egyszer edényrendezés struktogramját, AT (n) Θ(n), MT (n) Θ(n lg n) m veletigénnyel és M(n) O(n) tárigénnyel! Segédrendezésként felhasználható a megfelel, múlt félévben tanult, egyszer láncolt listákat rendez eljárás. Ezt nem kell megírni, a kód többi részét viszont teljes részletességgel kérjük. 1.2. Radix rendezés leszámláló rendezéssel 1.a, Mutassa be a számjegypozíciós (Radix) rendezés m ködését a következ, négyes számrendszerbeli számok tömbjén: 20; 02; 21; 01; 31; 20! Az egyes menetekben leszámláló rendezést alkalmazzon! 1.b, Mekkora a fenti rendezés aszimptotikus m veletigénye? A leszámláló rendezés mint segédprogram mely tulajdonságára épül a Radix rendezés? 2.a, Mutassuk be a számjegypozíciós (Radix) rendezés m ködését a 11; 20; 10; 23; 21; 30 négyes számrendszerbeli számok tömbjén! Az egyes menetekben leszámláló rendezést alkalmazzunk! 2.b, Mekkora a Radix rendezés m veletigénye (a tömb mérete, a számrendszer alapszáma és a számjegyek száma függvényében)? 2.c, A leszámláló rendezés mint segédprogram mely tulajdonságára épül a Radix rendezés? Mit jelent ez a tulajdonság? 1.3. Radix rendezés edényekkel 1.a, Mutassuk be a számjegypozíciós (Radix) rendezés m ködését a 31; 20; 11; 23; 21; 10 négyes számrendszerbeli számok listáján! Az egyes menetekben a megfelel számjegy szerinti, edényekbe való szétosztást, majd az edények tartalmának összef zését alkalmazzuk! 1.b, Mekkora a felhasznált adott számjegy szerinti rendezés, és a ráépül Radix rendezés m veletigénye? 1.c, A felhasznált rendezés mint segédprogram mely tulajdonságára épül a Radix rendezés? 2. Oldjuk meg az el z feladatot a < 11; 20; 10; 23; 21; 30 > input listával! 2

2. Hasító táblák 2.1. Ütközés feloldása láncolással 1. A T [0..m 1] hasító tábla rései kétirányú, nemciklikus, fejelem nélküli, rendezetlen láncolt listák pointerei. Adott a k mod m hasító függvény. A kulcsütközéseket láncolással oldjuk fel. Mindegyik kulcs csak egyszer szerepelhet T -ben. 1.a, Írjuk meg az ins(t [], m, k, a):0..2 érték függvényt, ami beszúrja a hasító táblába a (k, a) kulcs-adat párt! Ha a táblában már volt k kulcsú elem, a beszúrás meghiúsul, és a 2 hibakódot adja vissza. Különben, ha nem tudja már a szükséges listaelemet allokálni, az 1 hibakódot adja vissza. (Feltesszük, hogy a new m velet, ha sikertelen, akkor pointert ad vissza.) Az ins() m velet akkor ad vissza 0 kódot, ha sikeres volt a beszúrás. Ilyenkor az új listaelemet a megfelel lista elejére szúrja be. 1.b, Mi a kitöltöttségi hányados? Milyen aszimptotikus becslést tud adni a fenti m velet minimális, átlagos és maximális futási idejére? Miért? 2. A T [0..m 1] hasító tábla rései kétirányú, nemciklikus, fejelem nélküli, rendezetlen láncolt listák pointerei. Adott a k mod m hasító függvény. A kulcsütközéseket láncolással oldjuk fel. Mindegyik kulcs csak egyszer szerepelhet T -ben. (2.a) Írjuk meg a search(t [], m, k) függvényt, ami visszaadja a T -beli, k kulcsú listaelem címét, vagy a pointert, ha ilyen nincs! (2.b) Írjuk meg a del(t [], m, p) függvényt, ami törli a T hasító táblából (és deallokálja is) a p pointer által mutatott listaelemet! (2.c) Mi a kitöltöttségi hányados? Milyen aszimptotikus becslést tudunk adni a fenti m veletek minimális, átlagos és maximális futási idejére? Miért? 2.2. Nyílt címzés 1. A T [0..(m 1)] hasító táblában a kulcsütközést nyílt címzéssel oldjuk fel. 1.a, Mit értünk kitöltöttségi hányados, próbasorozat és egyenletes hasítás alatt? Mit tudunk a keresés és a beszúrás során a próbák várható számáról? 1.b, Mekkora egy sikertelen keresés várható hossza 80%-os kitöltöttség esetén, ha nincs törölt rés? Egy sikeres keresésé ennél több vagy kevesebb? Miért? 1.c, Legyen most m = 11, h (k) = k mod m, és alkalmazzon lineáris próbát! Az alábbi m veletek mindegyikére adja meg a próbasorozatot... alakban! Szúrja be a táblába sorban a következ kulcsokat: 10; 22; 31; 4; 15; 28; 16; 26; 62; ezután törölje a 16-ot, majd próbálja megkeresni a 27-et és a 62-t, végül pedig szúrja be a 27-et! Szemléltesse a hasító tábla változásait is, a törlés m veletét l kezd d en! 2. A T [0..m 1] hasító táblában a kulcsütközést nyílt címzéssel oldjuk fel. 3

2.a, Mit értünk kitöltöttségi hányados és egyenletes hasítás alatt? Mit tudunk a keresés és a beszúrás során a próbák várható számáról? 2.b, Mekkora egy sikertelen keresés várható hossza 90%-os kitöltöttség esetén, ha nincs törölt rés? Egy sikeres keresésé ennél több vagy kevesebb? Miért? 2.c, Legyen most m = 8, (az egyszer ség kedvéért) h (k) = k mod m, és alkalmazzunk négyzetes próbát a szokásos c 1 = c 2 = 1/2 konstansokkal! Az alábbi m veletek mindegyikére adja meg a próbasorozatát... alakban! Szemléltesse a hasító tábla változásait is! Szúrja be a táblába sorban a következ kulcsokat: 22; 31; 4; 28; 15; 14; 30; ezután törölje a 14-et, majd próbálja megkeresni a 38-at és a 30-at, végül pedig szúrja be a 27-et! 3.a, Adott egy m = 7 méret, üres hasító tábla. Nyílt címzést és kett s hasítást alkalmazunk a h 1 (k) = k mod m, h 2 (k) = 1 + (k mod (m 2)) tördel függvények segítségével. A tábla nem tartalmazhat duplikált kulcsokat. Az alábbi m veletek mindegyikére adja meg a próbasorozatot... alakban, és a hasító táblát is rajzolja újra, valahányszor egy m velet egy nemüres rés státuszát változtatja meg (b-beszúrás, k-keresés, t-törlés): b37, b45, b19, b72, b33, t19, k12, b33, t33, b33. 3.b, Magyarázza meg, mi a szerepe nyílt címzés esetén a foglalt, az üres és a törölt réseknek, a beszúrás, a keresés és a törlés során! 3.c, Mi a kitöltöttségi hányados? Milyen becslést tudunk adni az egyes m veletigényekre, és milyen feltétellel? 4. Adott egy m = 11 méret üres hasító tábla. Nyílt címzést és kett s hasítást alkalmazunk a h 1 (k) = k mod m és a h 2 (k) = 1+(k mod (m 1)) tördel függvények segítségével. 4.a, Az alábbi m veletek mindegyikére adja meg a próbasorozatát... alakban! Szemléltesse a hasító tábla változásait is! Szúrja be a táblába sorban a következ kulcsokat: 12; 17; 23; 105. Ezután törölje a 23-at, majd próbálja megkeresni a 133-at, végül pedig szúrja be a 133-at! 4.b, Magyarázza meg, mi a különbség nyílt címzés esetén a foglalt, az üres és a törölt rések között, az alkalmazható m veletek szempontjából! 3. Gráfalgoritmusok 3.1. Gráfreprezentációk 1. A C[1..n, 1..n] : 0..1 mátrix egy irányított gráf szomszédossági csúcsmátrixos ábrázolása. Írja meg a transzformál(c[,], n, G[]) eljárást, ami el állítja a G[1..n] gráfot, ami a C[1..n, 1..n] mátrixszal reprezentált gráf éllistás reprezentációja! Az éllisták egyszer láncolt listák (fejelem nélküli, nemciklikus, egyirányú listák) legyenek! T (n) Θ(n 2 ). 4

2. A G[1..n] egy irányított gráf szomszédossági éllistás ábrázolása. Írja meg a transzponál(g[], n, GT []) eljárást, ami el állítja a GT [1..n] gráfot, ami a G[1..n] gráf transzponáltjának éllistás reprezentációja! Az éllisták egyszer láncolt listák (fejelem nélküli, nemciklikus, egyirányú listák). T (n, e) Θ(n + e), ahol e a gráf éleinek száma. 3. G[1..n] egy irányított gráf szomszédossági éllistás ábrázolása. A G[i] éllisták egyszer láncolt listák (fejelem nélküli, egyirányú, nemciklikus listák). Adja meg a listaelem típus leírását! Írja meg a kibefokok(g[], n, be[], ki[]) eljárást, ami minden u 1..n csúcsra a be[u]-ban kiszámítja a csúcs bemeneti fokszámát, ki[u]-ban pedig a kimeneti fokszámát! T (n, e) Θ(n + e), ahol e a gráf éleinek száma. 3.2. Szélességi keresés 1.a, Mit számol ki a Szélességi gráfkeresés? 1.b, Adja meg az algoritmus absztrakt struktogramját! 1.c, A Szélességi gráfkeresés a gráf mely csúcsaiba talál optimális utat, és a végrehajtás során mikor? 1.d, Mit tud a Szélességi gráfkeresés m veletigényér l? (Indokolja is az állítást!) 1.e, Szemléltesse az algoritmust az a csúcsból indítva, az a b ; d. b c ; d. c e. d e. irányítatlan gráfon! 1 Rajzolja le az eredményül adódó szélességi fát is! 3.3. Mélységi keresés és topologikus rendezés 1.a, Mit értünk egy irányított gráf csúcsainak topologikus rendezése alatt? Mondja ki és bizonyítsa be az ezzel kapcsolatos tételt! 1.b, Mutassa be az alábbi gráf 2 csúcsai topologikus rendezésének a gráf mélységi bejárására épül algoritmusát! (Az algoritmus szemléltetése során a nemdeterminisztikus esetekben mindig az alfabetikusan kisebb index csúcsot részesítse el nyben!) 1.c, Módosítsa egyetlen él behúzásával úgy a gráfot, hogy ne legyen topologikus rendezése! A módosított gráfnak miért nincs topologikus rendezése? Mikor derül ez ki a fent szemléltetett algoritmus végrehajtása során? 1.d, Mit tud a mélységi bejárásra épül topologikus rendezés m veletigényér l? (Indokolja is az állítást!) a b; d. b c; d. c e. d e. f c; e. 2.a, Rajzolja le a Mélységi gráfkeresés absztrakt struktogramját! Mit tud a 1 u v 1 ;... v k. azt jelenti, hogy az irányítatlan gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k. (Ezzel a jelöléssel a gráf minden élét csak egyszer tüntetjük fel.) 2 u v 1 ;... v k. azt jelenti, hogy az u csúcs közvetlen rákövetkez i v 1,... v k. 5

m veletigényér l? (Indokolja is az állítást!) 2.b, Adja meg az éltípusok denícióját és mondja ki az osztályozásukkal kapcsolatos tételt! 2.c, Szemléltesse a Mélységi keresést az alábbi irányított gráfon 3 úgy, hogy nemdeterminisztikus esetekben mindig a kisebb index csúcsot részesítse el nyben! Jelölje a bejárás során a különböz éltípusokat is! a b ; d. b c ; d. c e. d e. e b. f c ; e. 3.4. Minimális feszít fák 3.4.1. Kruskal algoritmusa 1.a, Mit számol ki a Kruskal algoritmus? 1.b, Szemléltesse a m ködését az alábbi gráfon! 4 (Elég az él feszít erd párosok sorozatát megadni.) 1.c, Mondja ki a biztonságos élekr l és a minimális feszít fákról szóló tételt! Deniálja a tételben szerepl vágás és könny él fogalmakat! 1.d, Hogyan következik a Kruskal algoritmus helyessége ebb l a tételb l? 1.e, Mekkora az algoritmusnak az el adásról ismert m veletigénye, és milyen feltételekkel? a b, 0 ; d, 1. b c, 5 ; d, 2 ; e, 3. d e, 4. 2.a, Mit számol ki a Kruskal algoritmus? 2.b, Szemléltesse a m ködését az a b, 3 ; d, 1. b c, 5 ; d, 2 ; e, 3. c e, 4. d e, 0. gráfon! 5 (Elég az él feszít erd párosok sorozatát megadni.) 2.c, Adja meg a f eljárás struktogramját! Magyarázza el a segédeljárások és a segédfüggvény m ködését! 2.d, Mekkora az algoritmus m veletigénye? Miért? 3.4.2. Prim algoritmusa 1.a, Mit számol ki a Prim algoritmus? Deniálja a súlyozott szomszédossági csúcsmátrix fogalmát! 1.b, Csak tömb adatszerkezeteket használva adja meg a Prim(C[1..n, 1..n], r, d[1..n], π[1..n]) eljárás struktogramját, ahol a gráfot a C súlyozott szomszédossági csúcsmátrix segítségével ábrázoltuk, és a fa építése az r csúcsból indul. A segédeljárásokat is részletezze! Az eredményt, a csúcsok d és a π értékeit a megfelel vektorokban kapjuk. T (n) O(n 2 ), M(n) O(n) 2.a, Mit számol ki a Prim algoritmus? 2.b, Szemléltesse a m ködését az a b, 0 ; d, 1. b c, 5 ; d, 2 ; e, 3. c e, 2. d e, 2. 3 u v 1 ;... v k. azt jelenti, hogy az u csúcs közvetlen rákövetkez i v 1,... v k. 4 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k, és a megfelel irányítatlan élek súlyai sorban w 1,... w k. 5 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k, és a megfelel irányítatlan élek súlyai sorban w 1,... w k. 6

irányítatlan gráfon, a d csúcsból indítva! 6. 2.c, Mondja ki a biztonságos élekr l és a minimális feszít fákról szóló tételt! Deniálja a tételben szerepl vágás és könny él fogalmakat! Hogyan következik a Prim algoritmus helyessége ebb l a tételb l? 2.d, Mekkora az algoritmusnak az el adásról ismert m veletigénye, és milyen feltételekkel? 3.5. Legrövidebb utak egy forrásból 3.5.1. Legrövidebb út kiírása 1. A Dijkstra algoritmus eredményeképpen megkaptuk a d[] és a π[] tömböket, amik a gráf csúcsainak d és π értékeit tartalmazzák. Írjuk meg az útkiíró(d[], π[], v) rekurzív függvényt, ami a d[v] értékkel tér vissza, és kiírja a start csúcsból a v csúcsba vezet optimális utat a következ formátumban: Az úton tetsz leges x csúcs x:d alakban jelenik meg, ahol d az x csúcs d-értéke. Minden él --w--> alakban jelenik meg, ahol w az él súlya. Adott ehhez a kiír(y) eljárás, ami tetsz leges y paramétert kiír. Ha például a gráfnak három csúcsa van, d[1..3] = 4; 9; 0 és π[1..3] = 3; 1; 0, akkor a startcsúcsból a 2 index csúcsba vezet optimális út a következ alakban jelenjen meg: 3:0--4-->1:4--5-->2:9 3.5.2. Sor-alapú Bellman-Ford algoritmus 1.a, Mit számol ki a Sor alapú (Queue-based) Bellman-Ford algoritmus? Adja meg a struktogramját! 1.b, Mit értünk a fenti program futásának menetei alatt? Mi a menetekhez kapcsolódó alapvet tulajdonság? 1.c, Adjon az algoritmus m veletigényére aszimptotikus fels becslést, és indokolja is állítását! 1.d, Honnét ismerhet fel, hogy van-e a gráfban a startcsúcsból elérhet negatív kör? Hogyan lokalizálható egy ilyen negatív kör? 1.e, Szemléltesse az algoritmus m ködését az alábbi gráfon, a b csúcsból indítva! 7 b c, 2 ; e, 4. c d, -1 ; e, 1. d b, -1 ; e, 2 ; f, 2. e f, -2. 3.5.3. DAG lerövidebb utak egy forrásból 1.a, Írja le röviden, szóban vagy struktogrammal, azt a tanult algoritmust, mellyel irányított, súlyozott, körmentes gráfokra a leghatékonyabb módon határozhatjuk meg a start csúcsból a többi csúcsba vezet legrövidebb 6 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k, és a megfelel irányítatlan élek súlyai w 1 = w(u, v 1 ),... w k = w(u, v k ). (Ezzel a jelöléssel minden élet csak egyszer tüntetünk fel.) 7 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs közvetlen rákövetkez i v 1,... v k, és a megfelel irányított élek súlyai sorban w 1,... w k. 7

utak fáját! (Negatív élköltségek is megengedettek.) 1.b, Mekkora a m veletigénye? Miért? 1.c, Szemléltesse a m ködését az alábbi gráfon, 8 ahol a csúcsok topologikus rendezése a,b,c,d,e,f, és a b a startcsúcs! A legrövidebb utak fáját rajzolja is le! a d, 2; f, 3. b c, 2; e, 4. c d, -1; e, 1. d e, 2; f, 2. e f, -2. 3.5.4. Dijkstra algoritmusa 1.a, Mit számol ki a Dijkstra algoritmus? Mekkora a m veletigénye n csúcsú gráf esetén, ha a prioritásos sort rendezetlen tömbbel reprezentáljuk? Miért? 1.b, Szemléltesse a m ködését az alábbi irányítatlan gráfon az a csúcsból indítva, az el adásról ismert módon! 9. Rajzolja le a legrövidebb utak fáját is, ami az eredményb l adódik! a b, 2; c, 1; d, 4. b d, 0. c d, 2; e, 2. d e, 1. e. 2.a, Mit számol ki a Dijkstra algoritmus? Adja meg a struktogramját! 2.b, Mit értünk a gráfok élsúlyozott szomszédossági listás ábrázolása alatt? Mekkora az algoritmus futási ideje az el bbi gráfreprezentáció és a prioritásos sor bináris kupaccal való megvalósítása esetén? Miért? 2.c, Milyen állítás igaz, amikor egy tetsz leges csúcsot kiválasztunk kiterjesztésre? Miért? 3.6. Legrövidebb utak minden csúcspárra 1.a, Mit számol ki a Floyd-Warshall algoritmus? Mekkora a m veletigénye n csúcsú gráf esetén? Miért? 1.b, Szemléltessük a m ködését az alábbi irányított gráfon a (D (0), Π (0) ),..., (D (3), Π (3) ) mátrix párok megadásával! 10. 1.c, Rajzoljuk le a legrövidebb utak fáit, amiket az eredményb l kiolvashatunk! 1 3, 1. 2 1, 0 ; 3, 2. 3 1, 1 ; 2, 2. 2. G[1..n] egy irányított, élsúlyozott, egyszer gráf szomszédossági éllistás ábrázolása. A G[i] éllisták egyszer láncolt listák. Írjuk meg az FWinit(G[1..n], D[1..n, 1..n], Π[1..n, 1..n]) eljárást, ami G[1..n] szerint a Floyd-Warshall algoritmus (D (0), Π (0) ) mátrix-párjának megfelel en inicializálja az eljárás D és Π paramétereit! T (n) Θ(n 2 ). 8 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs közvetlen rákövetkez i v 1,... v k ; sorban w 1,... w k súlyokkal. 9 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k, és a megfelel irányítatlan élek súlyai sorban w 1,... w k. 10 Az u v 1, w 1 ;... v k, w k. formula azt jelenti, hogy a gráf u csúcsából kivezet élek (u, v 1 ),... (u, v k ), sorban w 1 = w(u, v 1 ),... w k = w(u, v k ) súlyokkal. 8

3.a, Mit számol ki a Floyd-Warshall algoritmus? 3.b, Tegyük fel, hogy a gráfnak n csúcsa van! Mi a (D (k), Π (k) ) : k 0..n mátrix-pár sorozat deníciója? Mi a rekurzív képlete? 3.c, Adja meg az algoritmus struktogramját! Mekkora a m veletigénye n csúcsú gráf esetén? 3.d, Miért elegend egyetlen (D, Π) mátrix-pár a programban? 4.a, Mit számol ki a Floyd-Warshall algoritmus? 4.b, Mekkora a m veletigénye n csúcsú gráf esetén? Miért? 4.c, Szemléltesse a m ködését az alábbi irányítatlan gráfon a (D (0), Π (0) ),..., (D (4), Π (4) ) mátrix párok megadásával! 11. 4.d, Melyik az alábbi gráf legkisebb részgráfja, ami az összes optimális utat tartalmazza? 1 2, 3; 3, 1; 4, 4. 2 4, 0. 3 4, 1. 4. 3.7. Irányított gráf tranzitív lezártja 1.a, Mit jelent egy gráf tranzitív lezártja, amit Warshall algoritmusa számol ki? 1.b, Tegyük fel, hogy a gráfnak n csúcsa van! Mi a T (k) : k 0..n mátrix sorozat deníciója? Mi a rekurzív képlete? 1.c, Adja meg az algoritmus struktogramját! Mekkora a m veletigénye n csúcsú gráf esetén? Miért elegend egyetlen T mátrix a programban? 1.d, Mutassa be az algoritmus m ködését a 4 3. 3 2. 2 1 ; 4. irányított gráfon! 4. Sztring keresés (Mintaillesztés) 4.1. Quick-search 1.a, Mit számol ki a Quick Search algoritmus? 1.b, Mi az el nye, illetve hátránya a naiv mintailleszt algoritmussal összehasonlítva? 1.c, Mutassa be a Quick Search algoritmus (a) el készít eljárásának m ködését az {A, B, C, D} ábécé-vel az ABACABA mintán, és 1.d, e mintát illeszt eljárását az ABABACABACABADABACABABA szövegen! 1.e, Mekkora az egyes eljárások aszimptotikus m veletigénye? 2.a, Mit számol ki a Quick Search algoritmus? 2.b, Mi az el nye, illetve hátránya m veletigény szempontjából a KMP algoritmussal összehasonlítva? 2.c, Mutassa be a Quick Search algoritmus el készít eljárásának m ködését az {A, B, C, D} ábécé-vel az ADABABA mintán, és 2.d, e mintát illeszt eljárását az ADABACACACABADABABADABABA szövegen! 2.e, Mekkora az egyes eljárások aszimptotikus m veletigénye? 11 u v 1, w 1 ;... v k, w k. azt jelenti, hogy a gráfban az u csúcs u-nál nagyobb index szomszédai v 1,... v k, és a megfelel irányítatlan élek súlyai sorban w 1,... w k. 9

4.2. Knuth-Morris-Pratt (KMP) 1.a, Deniálja a KMP algoritmusban a keresett P [1..m] mintához tartozó next függvényt (nem a struktogramot)! Adja meg a next függvény három alapvet tulajdonságát, és kett t bizonyítson is be! 1.b, Adja meg a next függvényt a deníciója alapján a BABAABAB mintán! 1.c, Szemléltesse a KMP algoritmus m ködését, ahogy a fenti minta el fordulásait keresi az ABABABAABABAABABABAABABBABA szövegben! 2.a, Deniálja a KMP algoritmus next függvényét (nem a struktogramot), majd adja meg az ABABADA mintán! 2.b, Szemléltesse KMP algoritmussal e minta el fordulásainak keresését az ABABADABABADABABABADABADABA szövegben! 2.c, Mi a next függvény szerepe a keresés során? 2.d, Mi a KMP algoritmus el nye, illetve hátránya m veletigény szempontjából a Quick-search mintailleszt algoritmussal összehasonlítva? 3.a, Milyen feladatot old meg a Knuth-Morris-Pratt (KMP) algoritmus? 3.b, Deniálja a next függvényt (nem a struktogramot), majd adja meg a BABABAB mintán! 3.c, Szemléltesse KMP algoritmussal e minta el fordulásainak keresését a BABBABABABABBABABABAAB szövegben! 3.d, Mi a next függvény szerepe a keresés során? 3.e, Mi a KMP algoritmus el nye, illetve hátránya a Quick-search mintailleszt algoritmussal összehasonlítva? 4.a, Milyen feladatot old meg a Knuth-Morris-Pratt (KMP) algoritmus? 4.b, Szemléltessük a KMP algoritmus init(next...) eljárásának m ködését az ABACABA mintán és 4.c, e mintát illeszt eljárását az ABABACABACABABACABABA szövegen! 4.d, Mekkora az egyes eljárások m veletigénye? 4.e, Mi KMP algoritmus el nye, illetve hátránya a Quick-search mintailleszt algoritmussal összehasonlítva? 5. Tömörítés 5.1. Human kód 1.a, Szemléltesse a Human kódolás m ködését az ÁBRÁBANÁBRA szövegen! Adja meg a kódfát és a szótárat! Mekkora a Human kódolással tömörített kód hossza? 1.b., Mekkora lenne a tömörített kód x hosszú karakterkódok esetén? 1.c, Hogyan dekódolható egy Human kóddal tömörített szöveg? 1.d, Milyen értelemben optimális a Human kód? Azt jelenti-e ez, hogy a Human kódolás a lehet legjobb tömörítés? Miért? 10

2.a, Az ELEVEJELESRERENDELVE szövegen szemléltessük a Human kódolás m ködését! Adjuk meg a kódfát és a szótárat! 2.b, Mekkora a Human kódolással tömörített kód hossza? 2.c, Mekkora lenne a tömörített kód x hosszú karakterkódok esetén? 2.d, Hogyan dekódolható egy Human kóddal tömörített szöveg? 2.e, Milyen értelemben optimális a Human kód? Azt jelenti-e ez, hogy a Human kódolás a lehet legjobb tömörítés? Miért? 5.2. LZW tömörítés 1.a, Adott az {A, B, C} ábécé. Szemléltesse a LempelZivWelch (LZW) tömörít algoritmus m ködését a CBABABABCBABABAB szövegen, majd a megfelel kitömörít algoritmusét az 1, 2, 3, 4, 6, 5, 9, 7, 11 kódon! Mindkét esetben adja meg a generált szótárat, és a tömörítetlen szövegen a részszavak és a kódok megfeleltetését! 1.b, Hogyan kezeli a kitömörít algoritmus azt az esetet, amikor nem találja meg a szótárban az aktuális kódhoz tartozó sztringet? 2.a, Az {A, B} ábécével szemléltesse a LempelZivWelch (LZW) tömörít algoritmus m ködését az ABABABABA szövegen, majd a megfelel kitömörít algoritmusét az 1, 2, 2, 3, 6, 4, 7 kódon! Mindkét esetben adja meg a generált szótárat, és a tömörítetlen szövegen a részszavak és a kódok megfeleltetését! 2.b, Milyen értelemben optimális a Human kód? Hogyan lehetséges, hogy az LZW algoritmus a gyakorlatban gyorsabban és jobban tömörít? 11