Gráfok és algoritmusok elmélete (terv)
Matematika BSc, Elemző szakirány, 2016. ősz
Az előadások első része (1-7.)
1. Algoritmusokról (leírási mód, futási idők, az
Ordó matematikája)
2. Alapvető adatszerkezetek I. (verem, sor,
listák)
3. Alapvető adatszerkezetek II. (bináris fa,
kupac (elsőbbségi sor))
4. Keresések és kiválasztások
5. Bináris keresőfa, AVL-fa
6. Összehasonlító rendezések
7. Hashelés, rendezés
lineáris időben
Az előadások vázlatos tartalma (elsősorban a
szereplő algoritmusok)
1. Algoritmusokról
(leírási mód, futási idők, aszimptotika: az Ordó
matematikája)
Verembe, Veremből
műveletek (tömbös) – O(1)
Maximum kiválasztás
– O(n)
Buborékrendezés – O(n2)
Bináris keresés – O(log
n)
Hanoi tornyai – O(2n)
További nagyságrendekre
majd jönnek algoritmusok, de ezek itt említésre kerülnek, pl. O(n log n)-es
rendezések.
2. Alapvető
adatszerkezetek I.
Verem
műveletei (tömbös ábrázolás):
ÜresVerem, Üres?, Tele?, Verembe, Veremből, Felső
alkalmazása: helyes zárójelezés
feldolgozása (összetartozó nyitó-csukó párok felismerése veremmel)
Sor
műveletei (tömbös ábrázolás):
analóg a veremmel
alkalmazás: bináris fa szintfolytonos bejárása (lásd: 3. előadás))
Listák
lista, mint ábrázolási
mód, pl. verem, sor pointeres megvalósítása, műveleteikkel együtt
alkalmazása: beillesztő
rendezés fejelemes listára (lásd: 4. előadás)
lista, mint adattípus,
fajtái: fejelem van/nincs, egyirányú/kétirányú, ciklikus/nem-ciklikus; egyiknek
pl. a fejelemes egyszerű listának a teljes műveleti csomagja
3. Alapvető
adatszerkezetek II.
Bináris fa
láncolt ábrázolás
tömbös ábrázolás (teljes,
illetve majdnem teljes, balra rendezett bináris fa), szülő – gyerek csúcsok
indexfüggvényei
három bejárás: preorder, inorder, posztorder
bináris fa szintfolytonos bejárása (sor adatszerkezet használatára
példa)
rekurzív függvények bináris
fákon, pl. levelek számának meghatározása
Kupac, elsőbbségi
sor
a kupac, mint majdnem
teljes balra tömörített bináris fa (ennek magassága), a szülő-gyerekei
csúcsokban található értékek összefüggése
a kupac ábrázolása
tömbben (emlékeztető: szülő-gyerek indexfüggvények)
kupac építése egy tömbben
elhelyezett input értékekből
a kupac műveletei:
maximum (vagy minimum) törlése, új kulcs beszúrása
az elsőbbségi sor
(megvalósítható rendezetlen vagy rendezett tömbbel is, de általában a kupacot
választjuk), műveletei: ÜresPrSor, Üres?, PrSorba, PrSorból, MaxPrior
4. Keresések
és kiválasztások
Maximum kiválasztás
(tömbös)
Bináris keresés
(két változat: <,
=, > ágakkal, illetve ≤, > ágakkal (ez
végigkeres és rákérdez); mindkettő esetén rekurzív és iteratív algoritmus)
Barkochba
Két legnagyobb elem
kiválasztása
A k-adik elem kiválasztása véletlenített
algoritmussal (várhatóan lineáris időben)
5. Bináris
keresőfa, AVL-fa
A bináris keresőfa
fogalma, min. és max. magassága,
átlagos magassága (≤ 1,39 log n, levezetés nélkül)
nevezetes tulajdonsága: inorder bejárással rendezett kulcssorozatot kapunk
műveletei: Keres, MinKulcs, Következő, Beszúr, Töröl (ennek pszeudokódja nem, csak végrehajtás adott ábrán)
Az AVL-fa
fogalma, magassága (≤
1,44 log n, levezetéssel)
forgatások beszúrás esetén (pszeudokódjuk nem, csak végrehajtásuk adott ábrán)
a forgatások:
helyesek; visszaáll a beszúrás előtti famagasság; elég egy is
az AVL-fa
építésének műveletigénye (beszúrás, ellenőrzés, forgatás)
6. Összehasonlító
rendezések (műveletigény mindegyiknél, levezetés nélkül)
Buborék rendezés, a javított
változat is
Beillesztő rendezés
(tömbre és láncolt listára is)
Összefésülő rendezés
(az Összefésül eljárás is)
Gyorsrendezés (a Partícionál eljárás is)
Kupacrendezés
7. Hashelés, rendezés lineáris időben
Hashelés (csak áttekintés)
kulcsütközés feloldása
láncolással, illetve nyílt címzéssel
hash-függvények
Rendezés lineáris
időben
számjegypozíciós rendezés „előre”
számjegypozíciós rendezés
„visszafelé”
kulcsmezők szerinti
„visszafelé haladó” rendezés listákkal
leszámoló rendezés