Intermezzo: Queries op zoekbomen Datastructuren. Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie.

Slides:



Advertisements
Verwante presentaties
KINN 2010 •OOP •O Object •O Georiënteerd •P Programmeren.
Advertisements

Aflezen van analoge en digitale meetinstrumenten
Programmeren van een humanoid robot
Positieve en Negatieve getallen
Pestprotocol Naam:leerlingenraad Groep:5,6,7,8
Hoofdstuk 8: Recursie.
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
Een tekenles over:.
Hoofdstuk 6: Controle structuren
Datastructuren Onderwerp 10
Fibonacci & Friends Met dank aan Gerard Tel.
Datastructuren Zoekbomen
Zoekbomen: rotaties AVL-bomen Rood-zwart-bomen
1 Datastructuren Heapsort College 4. 2 Vandaag  Kort: ADT vs Datastructuur  Heaps en Heapsort  Tijd over: ondergrenzen voor sorteren; nog sneller sorteren.
1 Datastructuren Zoekbomen II Invoegen en weglaten.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
Gebalanceerde bomen Zoekbomen: weglaten in rood-zwart-bomen.
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
LOT OP REIS LISANNE, PETER, MONICA, EVE EN DYLAN..
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Oplossing Langste Pad Probleem Cees Witteveen
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
1 Datastructuren Quicksort en andere sorteermethoden College 3.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
1 Optuigen van datastructuren 2 Dynamische order statistics (2)
Optuigen van datastructuren
Datastructuren Sorteren: bubble, merge, quick
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Datastructuren Sorteren, zoeken en tijdsanalyse
Voorbereiding post 3 Even schrikken Groep 7-8.
1x5= 2x5= 3x5= 4x5= 5x5= Om te controleren: Ga met je muiswijzer over de som tot het een handje wordt. Klik dan en je ziet het goede antwoord! 6x5= 7x5=
Optuigen van datastructuren Datastructuren Onderwerp 11.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen Hashtabellen –Oplossen van botsingen met “ketens” (chaining) –Analyse –Oplossen van.
Eenvoudig voorbeeld: Steden in Belgie
Powerpoint Presentatie Wielen Rijgen.
Vergelijkingen oplossen.
Interpreteren van data
De weegschaal methode Een goede methode om vergelijkingen mee op te lossen Klik linksonder op deze knop om presentatie te starten. volgende VMBO - Wiskunde.
Quiz Start.
Presentatie vergelijkingen oplossen.
KINN 2010 OOP O Object O Georiënteerd P Programmeren.
PHP & MYSQL LES 02 PHP & FORMULIEREN. PHP & MYSQL 01 PHP BASICS 02 PHP & FORMULIEREN 03 PHP & DATABASES 04 CMS: BEST PRACTICE.
Begeleiden, hoe doe je dat?
Functioneel programmeren Een snelle herhaling…. Functie-definitie static int kwad (int x) { return x*x ; } kwad x = x * x Haskell kwad :: Int  Int.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen (vorige keer) Hashtabellen –Oplossen van botsingen met “ketens” (chaining) Vorige.
Allard Kamphuisen Hado van Hasselt Wilco Broeders
1 Datastructuren Sorteren, zoeken en tijdsanalyse College 2.
1 Optuigen van datastructuren Zoeken op meerdere sleutels Dynamische order statistics (1)
Vergelijkingen.
Wat gaan we behandelen? Formules ombouwen Optellen Vermenigvuldigen
Codetuts Academy Les 6 Module 2a Php Fundamentals 1.
Woordjes leren.
Inhoud Optellen en aftrekken. Vermenigvuldigen en delen.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
IF() ELSE() LES 4: VOORWAARDEN. BOOL Een variabele die slechts 2 mogelijke waarden kan hebben: true(waar) of false(niet waar) duid je aan met bool bool.
Informatie beoordelen If else Switch En Wiskunde.
Welke bij vliegt onder de bijenkorf?
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Doorzoeken van grafen Algoritmiek.
Minimum Opspannende Bomen
Kiezen met Kaarten.
Implementatie Zoekboom
Kiezen met Kaarten.
Transcript van de presentatie:

Intermezzo: Queries op zoekbomen Datastructuren

Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie Hoe maken we een methode die die vraag efficient beantwoordt?

Uitgangspunten Gestructureerde aanpak Doorlopen van de boom: – Van wortel omlaag – Van blad omhoog – Soms één kant op, soms naar beide kinderen Vergeet stopcriterium niet

Stoppen Bij blad (als je omlaag gaat) Bij wortel (als je omhoog gaat) Andere stopcriteria (afhankelijk van querie) – Bijvoorbeeld: het gezochte resultaat is gevonden Let op randgevallen (bijvoorbeeld: lege boom)

Gestructureerd kijken Kijk bij de knoop waar je bent en beslis wat te doen: – Stoppen – Omhoog – Links omlaag – Rechts omlaag – Naar beide kanten omlaag – Iets in de knoop zelf

Opschrijven Recursief Iteratief

Voorbeeld Gegeven: zoekboom, elke knoop heeft een kleur in {rood, zwart}, verwijzing naar wortel Vraag: voldoen de kleuren aan de eisen van een rood-zwart boom?

Eerste routine Check-Rood-Zwart(node k) – If k == NIL (lege boom) return true – Else If kleur(k) == rood then return false – Else return CRZ2 (k) AND CRZ3(k) Ideeën: – Eis 1: wortel van boom is zwart hoeven we 1 keer te controleren, dus die eerst maar – De twee andere eisen apart controleren is makkelijker – Opletten voor geval van lege boom

Geen twee rode knopen naast elkaar Controleer voor alle rode knopen dat ze geen zwart kind hebben CRZ2(node k) – If k == NIL then return true – If kleur(k) == rood then If (left(k)!= NIL AND kleur(left(k) == rood) then return false If (right(k)!= NIL AND kleur(right(k) == rood) then return false – Return CRZ2(left(k)) AND CRZ2(right(k))

Controleren zwartdiepte Elk pad van wortel omlaag moet zelfde aantal zwarte knopen hebben: Dus we moeten van deelbomen weten: – Klopt ‘t daar? – Wat is de zwartdiepte van de deelboom – Dus: Soms de waarde false Soms een integer Ideetje: neem een integer, en representeer false door -1

CRZ3 CRZ3(node k) If CheckZD(k) == -1 then return false Else return true

CheckZD CheckZD(node k) If k == NIL then return 0; p = CheckZD(left(k)); q = CheckZD(right(k)); If (p==-1 or q==-1) then return -1; if (p != q) then return -1; If (kleur(k) == zwart) then return p+1; Else {geval dat k rood is) return p; klaar

Tijd en correctheid Correct: mondeling toegelicht Tijd: O(n): twee traversies O(n) is ook nodig want je moet alles in de boom bekijken