1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.

Slides:



Advertisements
Verwante presentaties
Leer de namen van de noten 1
Advertisements

Algoritmen en Datastructuren (ALDAT)
Programmeren met Alice
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Datastructuren Quicksort
Hoofdstuk 8: Recursie.
Uitwerking tentamen Functioneel Programmeren 29 januari 2009.
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
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Leer de namen van de noten 2
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Hoofdstuk 6: Controle structuren
Datastructuren Onderwerp 10
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
1 Datastructuren Lijstjes (Stacks & Queues) Onderwerp 7.
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.
Datastructuren en Algoritmen
Datastructuren en Algoritmen Datastructuren college 1.
Gebalanceerde bomen Zoekbomen: weglaten in rood-zwart-bomen.
Wiskunde in Softwareontwikkeling Gert Jan Sterrenburg –
Zoek- en sorteeralgoritmen & Hashing
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
Neurale Netwerken Kunstmatige Intelligentie Rijksuniversiteit Groningen April 2005.
Inleidend probleem Data structuur (hiërarchie van classes)
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.
Logaritmen (heel eventjes)
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
Project OO-AD: Color Crazy Domien Nowicki, Bjorn Schobben.
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.
Sorteeralgoritmen. Sorteren: aanpak 1 Hoe ga je een rij getallen sorteren met PC? Sorteren door selectie (= selection sort): Zoek de kleinste waarde Sorteer.
T U Delft Groep Parallelle en Gedistribueerde Systemen PGS College in345 Deel 2 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie.
POL (MO)-methode  Dit is de kapstok waar je de rest van de zin aan op kunt hangen.  Vervolgens kijk je of er eventueel een meewerkend voorwerp in.
Intermezzo: Queries op zoekbomen Datastructuren. Queries: hoe op te lossen We hebben: – Een zoekboom (gewoon, rood-zwart, AVL,…) – Een vraag / querie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
1 Datastructuren Quicksort College 3. 2 Vorige keren  O-notaties  Sorteren: insertion sort, bubble sort  Kosten (n 2 ) tijd in het slechtste geval.
Datastructuren en Algoritmen
1 Hashtabellen Datastructuren. 2 Dit onderwerp Direct-access-tabellen (vorige keer) Hashtabellen –Oplossen van botsingen met “ketens” (chaining) Vorige.
1 Datastructuren Sorteren, zoeken en tijdsanalyse College 2.
1 Datastructuren Analyse van algorithmen (vervolg) Heapsort College 4.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Amorized Analysis en Union-Find Algoritmiek. 2 Vandaag Amortized analysis –Technieken voor tijdsanalyse van algoritmen Union-find datastructuur –Datastructuur.
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.
Kortste Paden Algoritmiek. 2 Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd’s.
Greedy algorithms Algoritmiek. 2 Vandaag Greedy algorithms: wat zijn dat? Voorbeelden: –gepast betalen met euromunten –AB-rijtje –… Knapsack probleem.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
Gerandomiseerde algoritmes
Doorzoeken van grafen Algoritmiek.
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
Amorized Analysis en Union-Find
Small Basic Console deel 2
Sorteren met kaarten.
Transcript van de presentatie:

1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6

2 Vergelijkingsgebaseerde algoritmen  Enige operaties op objecten zijn:  A[i] A[j]; A[i]  A[j]; A[i]  A[j]; A[i]==A[j]  Verplaatsingen  Voorbeelden: Quicksort, Randomized Quicksort, Heapsort, Bubblesort, Insertionsort, …  Allemaal gebruiken ze (n log n) tijd:  (n log n) worst case: Heapsort (…)  (n 2 ) worst case, (n log n) gemiddeld: Randomized Quicksort  (n 2 ) worst case en gemiddeld: Bubble sort

3 Vorige keer  Een aantal algoritmen die NIET vergelijkingsgebaseerd zijn:  Counting sort  Radix sort  Bucket sort  Deze gebruiken eigenschappen van de waardes: kijken binnenin de waardes  Zijn dan – als die eigenschappen gelden – sneller: O(n) tijd (worst case, verwacht, …)  Werken dus alleen zo snel als die eigenschappen gelden!!!

4 Vandaag  Ondergrens voor vergelijkings-gebaseerd sorteren (comparison sorts)  Vandaag Datastructuren

5 De vraag  Vraag: zouden er sorteeralgoritmen die minder dan (n lg n) tijd gebruiken?  O(n), O(n lg lg n), O(n  (lg n)) ?  Het antwoord is JA en NEE  JA – als we extra aannamen kunnen maken over de input en die gebruiken  NEE – als we dat niet kunnen Datastructuren

6 ONDERGRENZEN VOOR SORTEREN Vijf Datastructuren

7 Vergelijkingsgebaseerd sorteeralgoritme (herhaling)  In een vergelijkingsgebaseerd sorteeralgoritme (comparison sort) zijn de enige operaties die op de data worden uitgevoerd:  Vergelijkingen: A[i] A[j]; A[i]  A[j]; A[i]  A[j]; A[i]==A[j]  Verplaatsingen  De data worden verder niet bekeken om extra informatie er uit te halen waar we de loop van het programma mee beïnvloeden Datastructuren

8 Allemaal verschillende elementen  We bewijzen: vergelijkingsgebaseerde algoritmen moeten op sommige inputs lg(n!) = (n lg n) vergelijkingen doen  We nemen in het bewijs aan dat alle elementen in de array (van lengte n) verschillend zijn  Algoritme moet immers dan ook correct werken Datastructuren

9 De stelling Stelling Voor ELK vergelijkingsgebaseerd algoritme A: er is een constante c, zodat voor elke n er een input met n elementen is waar A cn lg n vergelijkingen uitvoert (en dus kost A n lg n) tijd)

10 Model van algoritme: Beslissingsboom  Binaire boom, met  Elke knoop heeft twee of nul kinderen  Elke interne knoop is gelabeld met een vergelijkingstest: welke twee (verschillende) elementen (uit oorspronkelijk array) worden met elkaar vergeleken?  Links: als 1 e element het kleinste is  Rechts: als 2 e element het kleinste is  Bij een blad... Tja … wat doen we daar? Datastructuren

11 Beslissingsboom voor Insertion Sort op 3 elementen Datastructuren INSERTION-SORT(A) for j = 2 to lengte(A) do key = A[j] i = j – 1; while i > 0 and A[i] > key do A[i+1] = A[i] i = i – 1; A[i+1] = key 1:2 2:3 1:3 2: In de bladeren staan voorbeelden van inputs die daar terecht komen

12 Bladeren gemarkeerd met een permutatie Datastructuren 1:2 2:3 1:3 2:3 {1,2,3} {1,3,2}{2,3,1} {2,1,3} {3,1,2} {3,2,1}

13 Over beslissingsbomen  Als twee inputs dezelfde ordening hebben, komen ze in hetzelfde blad  Bijvoorbeeld: (4,6,5) of (10, 30, 20) of (2, 47, 42)  Er kunnen testen zich herhalen (bijvoorbeeld in bubble sort)  Er kunnen bladeren zijn waar je nooit terecht kan komen (komt ook in bubble sort voor)  Niet zo belangrijk hoe je precies test (i<j of j<i) etc.  Markeer bladeren met de permutaties die daar terecht komen

14 Hooguit één permutatie in een blad  Als twee inputs in hetzelfde blad terecht komen, worden dezelfde data-bewegingen uitgevoerd  De inputs worden op dezelfde manier gepermuteerd!  Prima, als we dezelfde sortering op de inputs hebben (als {4,6,5}, {1,3,2} of {12, 49, 25})  Niet prima, als de inputs anders gesorteerd zijn: want dan is minstens één antwoord fout  In elk blad van de boom staat hooguit één permutatie van {1,2,3,…,n} Datastructuren

15 Diepte van beslisbomen versus vergelijksgebaseerd sorteren  Elke permutatie moet voorkomen in een blad van de beslisboom  Elk blad van de beslisboom heeft hooguit 1 permutatie  Als er een permutatie in een blad met diepte r zit moeten voor die permutatie r vergelijkingen worden uitgevoerd  Er zijn n! permutaties  Diepte van een boom met n! bladeren is ondergrens voor vergelijkingsgebaseerd sorteren

16 Diepte van beslisboom  Als een binaire boom diepte r heeft, heeft de boom maximaal 2 r bladeren  Bewijs met inductie naar r. Triviaal als r=0; als r>0, dan wortel heeft twee kinderen met bomen met diepte r-1, dus 2 r r-1 bladeren  Een beslisboom voor sorteren van n elementen heeft minstens n! bladeren, dus heeft diepte minstens lg(n!) = (n lg n)  lg(n!) < lg(n n ) = n lg n  lg(n!) > lg((n/2) n/2 ) = n/2 * (log n/2) = n/2 * (log n – 1) = (n lg n) Want n! > n/2 * (n/2+1) * … * (n-1) * n > (n/2) n/2 Datastructuren

17 Stelling  Stelling: Elk vergelijksgebaseerd algoritme gebruikt voor sommige inputs van lengte n (n lg n) vergelijkingen en dus (n lg n) tijd.  Gevolg: heapsort en merge sort zijn “asympthotisch optimaal”. Datastructuren

18 CONCLUSIES Vijf Datastructuren

19 Sorteren  Zonder gebruik te maken van speciale eigenschappen van input: (n lg n)  Ondergrensbewijs: aantal vergelijkingen  Met gebruik van speciale eigenschappen:  Sneller, vaak O(n) Counting Sort Radix Sort Bucket Sort  Maar natuurlijk alleen voor inputs die zulke eigenschappen hebben

20 Conclusies  In de praktijk worden soms hybride methodes gebruikt  Uiterst slimme methoden om heel weinig elementen zo snel mogelijk te sorteren  Overstappen van ene sorteermethode naar andere ergens gedurende algoritme  Voor implementatie van sommige van deze algoritmen (en voor heel veel andere toepassingen) hebben we lijsten nodig  Later kijken we naar implementaties van lijsten en speciale versies: queues en stacks