Indexen.

Vergelijkbare documenten
Datastructuren Uitwerking jan

5.4.2 a. Neen: dit lukt alléén met 1, 3, 7 enzovoort. b. Ja: dit lukt met elk aantal knopen! Bijvoorbeeld de volgende boom: 1

Examen Datastructuren en Algoritmen II

Hoofdstuk 9. Hashing

Examen Algoritmen en Datastructuren III

Datastructuren en algoritmen voor CKI

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Amorized Analysis en Union-Find Algoritmiek

Examen Datastructuren en Algoritmen II

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

4EE11 Project Programmeren voor W. College 3, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI

Gegevensbanken Indexstructuren. Bettina Berendt

Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017.

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Vierde college complexiteit. 14 februari Beslissingsbomen

Schriftelijk tentamen Datastructuren Ma 8 aug uur Met voorbeeld uitwerking

Datastructuren en algoritmen voor CKI

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Tweede college complexiteit. 12 februari Wiskundige achtergrond

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Ieder tweetal heeft nodig: Een kopie van de slagschipspelletjes: 1. 1A, 1B voor spel A, 2B voor spel A, 3B voor spel 3

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

Examen Algoritmen en Datastructuren III

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

AAN DE SLAG MET DOELSPAREN

Subrapporten. 5.1 Inleiding

Inleiding Programmeren 2

Inleiding Programmeren 2

Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep.

Examen Datastructuren en Algoritmen II

De volgende opgave gaat over de B-bomen van het college, waar sleutels zowel in de bladeren als ook in de interne knopen opgeslagen worden.

8. Complexiteit van algoritmen:

Examen Algoritmen en Datastructuren III

Opgaven Getaltheorie en Cryptografie (deel 4) Inleverdatum: 13 mei 2002

Het minimale aantal sleutels op niveau h is derhalve

Examen Datastructuren en Algoritmen II

Ledenlijsten + etiketten maken

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Workshop 3x. Normaliseren. Normaliseren. Hiëarchische database ODBMS. Relationele database. Workshop 14 oktober A. Snippe ICT Lyceum 1

Programmeren in C++ Efficiënte zoekfunctie in een boek

Recapitulatie: Ongeïnformeerd zoeken. Zoekalgoritmen ( ) College 2: Ongeïnformeerd zoeken. Dynamische breadth-first search

Examen Datastructuren en Algoritmen II

Friendly Functions and Shared BDD s

Beeldverslag toevoegen

DATABASEBEHEER IN EXCEL

Schriftelijk tentamen Datastructuren Woe 5 jan uur Met uitwerkingen

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ.

Oefeningen voor de oefeningenles. Oefening 1

Handleiding BudgetBoek

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Een voorbeeld. Computationele Intelligentie Zoeken met een tegenstander. Een voorbeeld vervolg. Een zoekprobleem met een tegenstander

lesboek Jonker & Wu CAD support

Datastructuren Uitwerking jan

INHOUD. Ten geleide Excel Basis 15

Algoritmiek. 15 februari Grafen en bomen

Greedy algoritmes. Algoritmiek

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

Twaalfde college algoritmiek. 23 mei Branch & Bound, Heapsort

2 Recurrente betrekkingen

[Microsoft Access 2007 Een eigen database maken] 28 oktober 2009

Progra-MEER - Algoritmiek Leuven 20 maart 2018

Samen op zoek naar proeven

Minimum Opspannende Bomen. Algoritmiek

Tekenen met Floorplanner

Tweede college algoritmiek. 12 februari Grafen en bomen

Zevende college algoritmiek. 24 maart Verdeel en Heers

EXAMEN juni 2018 Gegevensbanken

Bijlage Animation Shop 3

Gevorderden training TYPO3. Stap voor stap de website beheren

Zoekproblemen met tegenstanders. Zoekalgoritmen ( ) College 9: Zoeken met een tegenstander (I) Een zoekprobleem met een tegenstander

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Talen & Automaten. Wim Hesselink Piter Dykstra Opleidingsinstituut Informatica en Cognitie 9 mei 2008

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Showmaster 24 ORDERCODE 50335

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

HANDLEIDING DIGITAAL LOGBOEK (INTERACTIVE JOURNAL) VERSIE BUILDING BLOCK:

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

7. Het Klussen logboek

Twaalfde college complexiteit. 11 mei Overzicht, MST

Databases gebruiken. Databases gebruiken

Java Programma structuur

3. Informatie overzichtelijk maken

Datastructuren en algoritmen voor CKI

Primair- & Voortgezet. Onderwijs. Spelend & onderzoekend de schoonheid van getallen ontdekken

Bestanden bewaren met SkyDrive

EXAMEN juni 2016 Gegevensbanken

Lineaire data structuren. Doorlopen van een lijst

Handleiding downloaden bankafschriften MT940 Rabobank

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Divide & Conquer: Verdeel en Heers. Algoritmiek

De mappenstructuur van de Garmin Zumo

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

U ziet de progressie van de download aan de groene blokjes in het balkje helemaal onder aan de pagina.

Transcriptie:

Indexen joost.vennekens@kuleuven.be

Probleem Snel gegevens terugvinden Gegevens moeten netjes geordend zijn Manier waarop hangt af van gebruik

Sequentieel Gesorteerde gegevens, die in volgorde overlopen moeten worden HCR TGO APH AVH JVE 1 (2) HCR 2 (3) TGO 3 (4) APH 4 (5) AVH 5 - JVE

Sequentieel Ver wijderen HCR TGO APH AVH JVE 1 (2) HCR 2 (4) TGO 3 - - 4 (5) AVH 5 - JVE

Sequentieel Toe voege n GDS HCR TGO AVH JVE 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (5) AVH 5 - JVE

Sequentieel Toe voege n GDS HCR TGO AVH JVE 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (5) AVH 5 - JVE

Sequentieel Toevoegen (2) 143 (5) DVT GDS DVT HCR TGO AVH JVE 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE

Sequentieel Wanordelijk 143 (5) DVT GDS DVT HCR TGO AVH JVE 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE

Sequentieel Reorganisatie 143 - JVE GDS DVT HCR TGO AVH JVE 1 (2) HCR 2 (3) GDS 3 (4) TGO 4 (5) AVH 5 (143) DVT

Index Terugvinden van specifieke data in sequentieel bestand Overlopen van hele bestand -> traag

Kleiner in RAM of minder blocks in te lezen HCR (1) GDS (3) TGO (2) AVH (4) DVT (143) JVE (5) Dense Index 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE 143 (5) DVT

Kleiner Gesorteerd houden Binair zoeken HCR (1) GDS (3) TGO (2) AVH (4) DVT (143) JVE (5) Dense Index 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE 143 (5) DVT

Binair zoeken 3? 2 3 8 17 45 78 91 133 256 3 < 45? 2 3 8 17 45 3 < 8? 2 3 8 Elke stap halveert rij rij(i+1) = rij(i) / 2 rij(i) = n / 2 i rij(i) = 1 voor i = log2(n)

Sparse Index Nog kleiner Binair + lineair zoeken Des te sparser Des te kleiner Des te meer lineair zoeken GDS (3) AVH (4) DVT (143) 1 (3) HCR 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE 143 (5) DVT

Andere oplossing multi-level 1 (3) HCR GDS AVH DVT HCR GDS TGO AVH DVT JVE 2 (4) TGO 3 (2) GDS 4 (143) AVH 5 - JVE 143 (5) DVT

Meer indices -> trager aanpassen Secundaire index Dense 1 (3) HCR A205 C205 C208 A015 2 (4) TGO A208 3 (2) GDS A015 4 (143) AVH A205 5 - JVE A205

Bomen Datastructuur voor efficient zoeken én efficient aanpassen Ideaal voor index

Vertakkingsfactor Diepte Bomen 14 8 27 Wortel Interne knopen Bladeren 6 10 22 34 2 7 9 13 21 25 30 45 Zoeken? Toe voege n? Balans is belangrijk!

B+ boom van orde n Tussen (n-1)/2 en n-1 sleutels n=4 A015 A205 A208 A217

B+ boom van orde n Tussen n/2 en n kinderen (behalve wortel) 15 20 30 n=4 8 14 _ 2 3 6 8 10 12

Zoeken Minstens n 2 kinderen in knoop Op niveau i: minstens n 2 i knopen Boom van diepte d heeft minstens n 2 d bladeren Boom met w waardes kan nooit dieper zijn dan diepte log n/2 (w) -> grotere vertakkingsfactor is sneller zoeken (?) O(n logn/2(w))

Toe voege n Zoek juiste blad Voeg daar toe Op juiste plaats 15 20 30 Bv: 4 8 14 _ 2 6 _ 8 10 12

Toe voege n Zoek juiste blad Voeg daar toe Op juiste plaats 15 20 30 Bv: 4 8 14 _ 2 4 6 8 10 12 nieuwe emmer

Toe voege n Zoek juiste blad Als dit vol is Splits het op 15 20 30 Bv: 5 8 14 _ 2 4 6 8 10 12

Toe voege n Zoek juiste blad Als dit vol is Splits het op 15 20 30 Bv: 5 8 14 _ 2 4 _ 5 6 _ 8 10 12

Zoek juiste blad Als dit vol is Splits het op Toe voege n 15 20 30 En herhaal zonodig Bv: 5 5 8 14 2 4 _ 5 6 _ 8 10 12

Toe voege n In diepte = log n/2 (w) knopen Maximum n sleutels + pointers verplaatsen Dus nlog n/2 (w)

Zoek juiste blad Verwijderen Verwijder element uit emmer Als emmer leeg is, verwijder sleutel Bv: 4 15 20 30 8 14 _ 2 4 6 8 10 12

Zoek juiste blad Verwijderen Verwijder element uit emmer Als emmer leeg is, verwijder sleutel Bv: 4 15 20 30 8 14 _ 2 6 _ 8 10 12

Verwijderen Als te weinig sleutels overblijven Redistribueer sleutels 15 20 30 Bv: 6 8 14 _ 2 6 _ 8 10 12

Verwijderen Als te weinig sleutels overblijven Redistribueer sleutels 15 20 30 Bv: 6 8 14 _ 2 8 10 12

Verwijderen Als te weinig sleutels overblijven Redistribueer sleutels 15 20 30 Bv: 6 10 14 _ 2 8 _ 10 12 _

Verwijderen Als te weinig sleutels overblijven Of voeg samen 15 20 30 Bv: 8 10 14 _ 2 8 _ 10 12 _

Verwijderen Als te weinig sleutels overblijven Of voeg samen 15 20 30 Bv: 8 10 14 _ 2 10 12 _

Verwijderen Als te weinig sleutels overblijven Of voeg samen 15 20 30 Bv: 8 10 14 _??? 2 10 12

Als te weinig sleutels overblijven Verwijderen Of voeg samen 15 20 30 En herhaal! Bv: 8 14??? 2 10 12

Samengevat Zoeken, toevoegen, verwijderen: O(n logn/2(w)) Als n groter wordt Wordt diepte kleiner Maar constante factor groter

Ruimte In B+ boom zit data enkel in bladeren Dus interne knopen zijn pure overhead Variant: B boom Data in interne knopen Maakt wel toevoegen/verwijderen complexer

Hash functies Adres niet opslaan, maar berekenen uit sleutel 1 HCR A205 AVH h h( AVH ) = 4 2 TGO A208 3 GDS A015 4 AVH A205 5 JVE A205

Probleem Ideaal : h berekent voor elke sleutel een unieke geheugenplaats Maar ruimte van alle mogelijke sleutels is heel groot (of oneindig) 1 AAA - - AAB h h( AAB ) = 2 2 AAB - - 3 AAC - - 4 AAC - -

Oplossing Geheugenruimte opdelen in hashbuckets AAA AZZ h h( AAB ) = 1 1 2 3 4 AAA- AZZ BAA- BZZ CAA- CZZ DAA- DZZ

Probleem Mogelijkheid tot hash clashes APH h 1 AVH APH Niet 1 record, maar bv. gelinkte lijst AVH 2 3 4 Veel hash clashes, betekent traag zoeken

Hash functies Goede hash functie verdeelt sleutels zo uniform mogelijk over buckets Heel belangrijk: aantal buckets Te groot: lege buckets & verspild geheugen Te klein: te veel sleutels per bucket & traag Dus: hash functie aanpassen aan grootte van bestand (dynamisch vs. statisch)

Indexen voor speciale gevallen

Bitmap index 1 HCR M Man: 11101 Vrouw: 00010 2 TGO M 3 GDS M 4 AVH V 5 JVE M

Evaluatie Moeilijk te onderhouden Heel compact, dus past in RAM Gemakkelijk combineren van verschillende bitmap indexen

Combineren Man: 11101 Vrouw: 00010 & 29: 00001 30: 01000 01000 Man van 30 1 HCR M 2 TGO M 3 GDS M 4 AVH V 5 JVE M Populair in OLAP toepassingen hoeveel examplaren van produkt x verkocht in winkel y (en data verandert weinig)

Join index 1 A 2 B 3 C 4 D 5 E x 1 F 2 B 3 G 4 C 5 C (2,2) (3, 4) (3, 5) = 2 -> (2) 3 -> (4, 5)

Join index Opslaan: sequentieel, B+ boom, hash Ruilt geheugen voor snelheid bij herhaaldelijk berekenen zelfde join Kan incrementeel worden aangepast Kan eventueel ook in bitmap