Algoritmusok és Adatszerkezetek I.

Slides:



Advertisements
Hasonló előadás
GRIN: Gráf alapú RDF index
Advertisements

Nevezetes algoritmusok
Készítette: Major Máté
Illés Tibor – Hálózati folyamok
Copyright, 2009 © Szlávi Péter A kupac és a prioritási sor típuskonstrukciók Szlávi Péter ELTE IK Média- és Oktatásinformatikai Tanszék
AVL-fa építése.
Minimális költségű feszítőfák
Gráfok szélességi bejárása Algoritmus bemutatása egy gráfon példa.
Készítette: Pető László
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
AVL fák.
Fák, bináris fák INFOÉRA Ez így 60 perc.
Dinamikus fák és utak Készítette: Kovács Péter
Tökéletes Hash függvények keresése Kasler Lóránd-Péter.
Miskolci Egyetem Informatikai Intézet Általános Informatikai Tanszé k Pance Miklós Adatstruktúrák, algoritmusok előadásvázlat Miskolc, 2004 Technikai közreműködő:
Nevezetes algoritmusok Beszúrás Van egy n-1 elemű rendezett tömbünk. Be akarunk szúrni egy n-edik elemet. Egyik lehetőség, hogy végigszaladunk a tömbön,
Készítette: Lakos Péter.  Adott egy élsúlyozott, véges gráf  Negatív élsúlyokat nem tartalmaz  Lehet irányított vagy irányítatlan  Továbbá adott egy.
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Gráfelmélet: Fák.
Adatszerkezetek 1. előadás
Hierarchikus adatszerkezetek
Hierarchikus lista Kétféle értelemezése van:
Tömbök és programozási tételek
1 AAO folytatás ++ Csink László. 2 Rekurzív bináris keresés (rendezett tömbben) public static int binker(int[] tomb, int value, int low, int high) public.
Kötvényárazási hibák intelligens javítóalgoritmusának tervezése és fejlesztése GELLÉN ÁGNES IUFQ58.
Fák.
A Dijkstra algoritmus.
Készítette: Hanics Anikó. Az algoritmus elve: Kezdetben legyen n db kék fa, azaz a gráf minden csúcsa egy-egy (egy pontból álló) kék fa, és legyen minden.
Egyenesvonalú (lineáris) adatszerkezetek
A feladat : Építsünk AVL-fát a következő adatokból:100,170,74,81,136,185,150,122,52,190,144 (Az AVL-fa olyan bináris keresőfa, amelynek minden csúcsára.
1 Szélességi Bejárás Györgyi Tamás – GYTNAAI.ELTE 2007 Március 22 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S b a d e f h g c.
1 Dijkstra Algoritmusa Györgyi Tamás – GYTNAAI.ELTE 2007 Április 02 Algoritmusok És Adatszerkezetek 2 Gráfalgoritmus S a b c d e
BINÁRIS FA Definició: A fa olyanösszefüggő gráf, amelyben nincs kör
Példa kettő-három fa felépítésére - törlés művelet Készítette : Krizsai Petra
Háló- (gráf-) algoritmusok
Gráfok ábrázolása teljesen láncoltan
Útkeresések.
Bináris kereső fák Itterátorok.
Diszjunkt halmazok adatszerkezete A diszjunkt halmaz adatszerkezet diszjunkt dinamikus halmazok S={S 1,…,S n } halmaza. Egy halmazt egy képviselője azonosít.
Algoritmusok és adatszerkezetek
Szélességi bejárás Gráf-algoritmusok Algoritmusok és adatszerkezetek II. Gergály Gábor WZBNCH1.
Prim algoritmus Algoritmusok és adatszerkezetek 2. Újvári Zsuzsanna.
(Bináris) Kupac (heap) adattípus
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Alapvető programozási tételek megvalósítása Czigléczky Gábor 2009.
A Dijkstra algoritmus.
BFák Kiegyensúlyozott keresőfák
Logikai programozás 6..
Algoritmusok és Adatszerkezetek I.
Dinamikus adatszerkezetek
Piros-fekete fák Beszúrás, ill. törléskor a fa elveszítheti az egyensúlyát. A piros-fekete fák: az egyensúly megtartását biztosítják. +1 bit információ.
Algoritmusok és Adatszerkezetek I.
Mesterséges intelligencia
Bináris kereső fák Definíció: A bináris kereső fa egy bináris fa,
Informatikai gyakorlatok 11. évfolyam
Depth First Search Backtracking
Algoritmusok és Adatszerkezetek I.
Gráfalgoritmusok G=(V,E) gráf ábrázolása
Dijkstra algoritmusa: legrövidebb utak
Dijkstra algoritmusa: legrövidebb utak
Gráfok - 1 Definíció: Irányított gráf (digráf) G=(V,E) rendezett pár.
Dijkstra algoritmusa: legrövidebb utak
Gráfalgoritmusok G=(V,E) gráf ábrázolása
2-3-fák A 2-3-fa egy gyökeres fa az alábbi tulajdonságokkal:
Algoritmusok és Adatszerkezetek I.
Algoritmusok és Adatszerkezetek I.
Előadás másolata:

Algoritmusok és Adatszerkezetek I. Keresőfák 2017. október 10.

Leszállópálya nyilvántartási probléma Repterünknek egyetlen kifutópályája van. A landolási időket nyilvántartó rendszert fejlesztünk. Minden repülő elküld egy t időpillanatot amikor le szeretne szállni Ha biztonságos a leszállás, azaz ±3 percen belül nincs ütemezett leszállás akkor rögzítsük a kérést Akik már leszálltak azokat távolítsuk el a nyilvántartásból Feladat: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/lecture-5-binary-search-trees-bst-sort/

Leszállópálya nyilvántartási probléma kérés: 43 kérés: 37 idő most 35 37 39 43 47 KERESsük meg a legnagyobb elemet R-ben ami nem kisebb, mint a t kérés Ha ez 3 távolságon belül van t-től return nil egyébként keressük meg a RÁKÖVETKEZŐ elemet is Ha a rákövetkező elem 3 távolságon belül van t-től return nil egyébként BESZÚRjuk t-t R-be Másik use-case: 1. Ha most>min(R) akkor TÖRÖLjük min(R)-et KERES, BESZÚR, TÖRÖL, RÁKÖVETKEZŐ legyen O(log|R|) idejű!

Milyen adatszerekzetet használjunk? n=|R| T(BESZUR)=T(TORLES) rendezetlen lista: KERES O(n), BESZÚR O(1), KÖVETKEZŐ O(n) rendezett tömb (bináris keresés): KERES O(logn), BESZÚR O(n), KÖVETKEZŐ O(1) kupac: KERES O(n), BESZÚR O(logn), KÖVETKEZŐ O(n)

Fa Fa = összefüggő, körmentes gráf Bármely két csúcsát pontosan egy út köti össze A fa elsőfokú csúcsait levélnek hívjuk. Egy nem levél csúcs a fában belső csúcs.

Bináris fa Gyökeres fa: van egy kitűntetett csúcsa, a gyökér Bináris fa: minden csúcsnak legfeljebb két gyereke van 1 2 4 1 gyerek szülő/apa 3 1 2 5 3 4 4 magasság (h) 6 2 5 3 5 6 6

Fák reprezentációja csúcsokat és éleiket reprezentáljuk maga a fa egy mutató a gyökérre gyerek éllista első fiú, apa, testvér bináris fa szülő apa szülő testvér … gyerekk gyerek1 első fiú bal jobb class Node{ Object key; Node parent; Node first_child; Node brother; } class Node{ Object key; Node parent; Node left; Node right; } class Node{ Object key; Node parent; List<Node> children; }

Bináris keresőfa

Inorder fabejárás if x≠NIL then FABEJÁRÁS(bal[x]) muvelet(kulcs[x]) FABEJÁRÁS(jobb[x]) 2 3 5 5 7 8 2 3 5 5 7 8

KERES KERES(19) KERES(13) O(h)

MIN/MAX MAX() MIN() O(h)

KÖVETKEZŐ/ELÖZŐ ELÖZŐ(9) KÖVETKEZŐ(13) KÖVETKEZŐ(15) ELÖZŐ(6) O(h)

BESZÚR O(h)

TÖRÖL Ha törlendő csúcs levél TÖRÖL(13)

TÖRÖL Ha törlendő csúcsnak egy gyereke van TÖRÖL(16)

TÖRÖL Ha törlendő csúcsnak két gyereke van TÖRÖL(5)

TÖRÖL O(h)

Keresőfa vs Kupac Kupac Kereső fa KERES() O(n) O(h) MAX() O(1) BESZÚR() TÖRÖL() KÖVETKEZŐ()

Leszállópálya nyilvántartási probléma y ← nil x ← gyökér[T] while x ≠ nil do y ← x if kulcs[z] < kulcs[x] then x ← bal[x] else x ←jobb[x] if ABS(kulcs[z] - kulcs[y]) < 3 then return NIL if kulcs[z] < kulcs[y] then if kulcs[z] - ELÖZŐ(kulcs[y]) < 3 else bal[y] ← z else if KÖVETKEZŐ(kulcs[y]) - kulcs[z] < 3 else jobb[y] ← z O(h)

Leszállópálya nyilvántartási probléma másik use-case: TÖRÖL(MIN(R)) A minimális elemnek legfeljebb egy gyereke van, így a harmadik esetet nem is kell implementálni O(h)

Fa magassága (h) Általános bináris keresőfa esetén semmi sem biztosítja, hogy h=Θ(logn) Pl szúrjuk be sorban: 2,3,5,5,7,8 A kupac egy teljes bináris fa, azaz legfeljebb egy belső csúcsa van aminek csak egy gyereke van. Egy teljes bináris fa magassága ⌈log2(n+1)⌉ A keresőfák nem teljesek!

Kiegyensúlyozott keresőfák Legrosszabb esetben a kereső fa magassága n Ugyanazokat az elemeket számtalan keresőfában tárolhatjuk Kiegyensúlyozott keresőfa: törekszünk arra, hogy a keresőfa magassága a lehető legkisebb maradjon, de műveletek továbbra is a magasság függvénye legyen

Piros-fekete fák Egy fajta kiegyensúlyozott keresőfa

Piros-fekete fák Minden csúcs színe vagy piros, vagy fekete. A gyökércsúcs színe fekete. Minden levél (NIL) színe fekete. Minden piros csúcsnak mindkét gyereke fekete. Bármely csúcsból bármely levélig vezető úton ugyanannyi fekete csúcs van.

Piros-fekete fák Bármely n belső csúcsot tartalmazó piros-fekete fa magassága legfeljebb 2log2(n+1). → megközelítőleg kiegyensúlyozott Bizonyítás: minden x gyökerű részfa legalább 2fm(x) −1 belső csúcsot tartalmaz 4. tulajdonság → fm(gyökér) ≥ h/2 n ≥ 2h/2 −1

Piros-fekete fák KERES, MIN/MAX, KÖVETKEZŐ/ ELÖZŐ sima keresőfa műveletek Módosító műveleteknél (BESZÚR, TÖRÖL) fent kell tartani az 5 piros-fekete tulajdonságot! A tulajdonságok helyreállítása is megvalósítható O(logn) időben

Törlés piros-fekete fából

Keresőfa Javában Set<Object> s = new TreeSet<>();

Java TreeSet

Keresőfák Legtipikusabban piros-fekete fát valósítanak meg: C++ std::set C# TreeSet Scala collection.immutable.TreeSet

Összegzés Keresőfák a fa magasságában lineáris időben valósítják meg a keresést, módosítást és következő/elöző műveleteket Leszállópálya nyilvántartási probléma Keresőfák magassága kontrolállható több módon, egy példa: piros-fekete fák (Java TreeSet)