Algoritmer og Datastrukturer 1

Slides:



Advertisements
Lignende præsentationer
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Advertisements

Datastrukturer Simple-type structs
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
iOS, Android. Algoritmer og Datastrukturer 1 Hashing [CLRS, kapitel ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Dynamisk Programmering [CLRS, kapitel 15] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal.
GP12, Martin Lillholm 1 Grundlæggende Programmering (GP) Efterår 2005 Forelæsning 12 Slides ligger på nettet. Du er velkommen til at printe dem nu. Vi.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
FEN Rekursion og induktion1 Induktion og (især) rekursion Mange begreber defineres ud fra en basis og så en gentagen anvendelse af et antal regler.
Algoritmer og Datastrukturer 1...mere Sortering [CLRS, kapitel 8] Gerth Stølting Brodal.
Datastrukturer og Collections Rasmus D. Lehrmann DM
Algoritmer og Datastrukturer 1 Merge-Sort [CLRS, kapitel 2.3] Heaps [CLRS, kapitel 6] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Hashing [CLRS, kapitel ] Gerth Stølting Brodal.
1 Søgning I. 2 Plan Sekventiel søgning Binær søgning Binære søgetræer Balancerede binære søgetræer træer.
Lektion 7 Læsestof: Kopier fra Caranno
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
Fundamentale datastrukturer
Algoritmer og Datastrukturer 1
Grafalgoritmer II.
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal.
1 Fundamentale datastrukturer. 2 Definitioner: abstrakt datatype, datastruktur Elementære datastrukturer og abstrakte datatyper : arrays, stakke, køer,
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 1 Binære Søgetræer [CLRS, kapitel 12] Gerth Stølting Brodal Aarhus Universitet.
1 Implementering af fundamentale datastrukturer. 2 Stakke og køer Array-repræsentation Liste-repræsentation Hægtede lister Træer Terminologi Traversering.
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Korteste Veje [CLRS, kapitel 24]
Algoritmer og Datastrukturer 1 Quicksort [CLRS, kapitel 7] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 1 Union-Find [CLRS, kapitel ] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 ”Rush Hour” Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal.
DADS: Algoritmer og Datastrukturer Forelæser: Gerth S. Brodal (vikar: EMS) Forelæsninger: timer, Aud E Kvarter: 3. (dADS 1) + 4. (dADS 2) Øvelser:
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Suffix træer og Suffix arrays [GT, kapitel 9.2],[Smyth, kapitel 5.3.2] Gerth Stølting Brodal Aarhus Universitet.
I o p o DAIMI, AU, November 1999Programkonstruktion I9E.1 Konstruktion og brug af klasser – en stak og en HP-regnemaskine push pop.
Algoritmer og Datastrukturer 2 Suffix træer og Suffix arrays [Smyth, kapitel 5.3.2], [GT, kapitel 9.2] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Suffix træer [GT, kapitel 9.2], Suffix arrays [Smyth, kapitel 5.3.2]
Algoritmer og Datastrukturer 1 Dynamisk Rang & Interval Træer [CLRS, kapitel 14] Gerth Stølting Brodal.
 Michael E. Caspersen, 2000Introducerende objektorienteret programmering6A.1 Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Programmering med interfaces Separering af specifikation, anvendelse og implementation.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Algoritmer og Datastrukturer 1 Heaps [CLRS, kapitel 6] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal.
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS, kapitel 10] Gerth Stølting Brodal Aarhus Universitet.
Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet.
Programmering med interfaces – en stak og en HP-regnemaskine push pop.
Algoritmer og Datastrukturer 2 Gerth Stølting Brodal Minimum Udspændende Træer (MST) [CLRS, kapitel 23]
Algoritmer og Datastrukturer 1 Hashing [CLRS, kapitel ]
Query optimization MICHAEL I
Algoritmer og Datastrukturer 1
Dynamisk Rang & Interval Træer [CLRS, kapitel 14]
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 1
Union-Find [CLRS, kapitel ]
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 1
Algoritmer og Datastrukturer 2 Grådige Algoritmer [CLRS ]
Algoritmer og Datastrukturer 1 Amortiseret Analyse [CLRS, kapitel 17]
Algoritmer og Datastrukturer 1
Dynamisk Rang & Interval Træer [CLRS, kapitel 14]
Grundlæggende Algoritmer og Datastrukturer
Grundlæggende Algoritmer og Datastrukturer
Algoritmer og Datastrukturer 1
Præsentationens transcript:

Algoritmer og Datastrukturer 1 Elementære Datastrukturer [CLRS, kapitel 10] Gerth Stølting Brodal

[CLRS, Del 3] : Datastrukturer Oprethold en struktur for en dynamisk mængde data

Abstrakte Datastrukturer for Mængder Min-prioritetskø Max-prioritetskø - Ordbog Minimum(S) pointer til element Maximum(S) Search(S, x) Member(S, x) TRUE eller FALSE Successor(S, x) Predecessor(S, x) Insert(S, x) Delete(S, x) - DeleteMin(S) element DeleteMax(S) Join(S1, S2) mængde S Split(S, x) mængder S1 og S2 Forespørgsel Ønsker at opbevare en mængde af elementer – antag ordnet. En abstrakt datastruktur er en interface til en datastruktur (jvf JAVA interfaces): eks. prioritetskøer og ordbøger Datastrukturer understøtter typisk kun en lille delmængde af operationer. En max-heap er f.eks. en implementation af en max-prioritetskø. Join: Antager alt i S1 er mindre end i S2 Split: S1 indeholder alt mindre end lig med x, og S2 alt større end x Elementerne består typisk af par: en nøgle og en pointer til et objekt Opdateringer

Abstrakte Datastrukturer for Lister Stak Kø Empty(S) TRUE eller FALSE Head(S), Tail(S) pointer til element Next(S, x), Prev(S, x) Search(S, x) Push(S, x) - Pop/Dequeue(S) element Enqueue(S, x) Delete(S, x) Element InsertAfter(S, x, y) Forespørgsel Opdateringer 3 10 6 8 20 -7 5 25 7 -3 13 , Enqueue(43) Pop/Dequeue Push(27) 11 InsertAfter(6,4) Prev Next Head Tail

Stak

Stak : Array Implementation S.top=6 8 7 6 5 4 3 2 1 -3 8 7 6 5 4 3 2 1 S.top=7 Pop=4 Push(4) -3 Stack-Empty, Push, Pop : O(1) tid

Array fordobling : O(n) tid Stak : Overløb 8 7 6 5 4 3 2 1 S.top=8 Push(13) -3 9 ? 8 7 6 5 4 3 2 1 9 10 11 12 13 14 15 16 S.top=9 -3 To muligheder – tilladt og forbudt Array fordobling garanterer at vi altid har plads nok – men gør en enkelt operation meget dyr. Array fordobling : O(n) tid

Array Fordobling Fordoble arrayet når det er fuld Tid for n udvidelser: 1+2+4+···+n/2+n = O(n) Halver arrayet når det er <1/4 fyldt Tid for n udvidelser/reduktioner: O(n) Betragt tiden for en sekvens af operationer. Halvering: Før hver fordobling er halvdelen blevet malet gult (udvidelser) Før hver halvering er en fjerdedel blevet malet grå (reduktioner) Hver gul farvning skal betale for fire nye indgange i det næste array Hver grå farvning skal betale for to nye indange i det næste array

Array Fordobling + Halvering – en generel teknik Tid for n udvidelser/reduktioner er O(n) Plads ≤ 4 · aktuelle antal elementer Stakke kan Array implementation af Stak: n push og pop operationer tager O(n) tid

Kø Billetsalg til Madonna koncerter

Kø : Array Implementation 8 7 6 5 4 3 2 1 Q.head=3 Q.tail=7 -3 Enqueue(2) Enqueue(7) Engueue(-4) Dequeue = 7 8 7 6 5 4 3 2 1 Q.tail=2 Q.head=4 -3 -4 Empty : head=tail? Mindst en ubrugt indgang – ellers kan en fuld og en tom kø ikke skelnes Enqueue, dequeue : O(1) tid

Kø : Array Implementation 8 7 6 5 4 3 2 1 Q.head=4 Q.tail=3 -3 -4 Empty : Q.tail=Q.head ? Overløb : array fordobling/ halvering Enqueue(9) 8 7 6 5 4 3 2 1 9 10 11 12 13 14 15 16 Q.head=1 Q.tail=9 -3 -4 Empty : head=tail? Size = tail –head (mod n) Array implementation af Kø: n enqueue og dequeue operationer tager O(n) tid

Arrays (med Fordobling/Halvering) Stak Push(S, x) O(1)* Pop(S) Kø Enqueue(S, x) Dequeue(S) * Worst-case uden fordobling/halvering Amortiseret ([CLRS, Kap. 17]) med fordobling/halvering

Kædede lister Billetsalg til Madonna koncerter

Kædede Lister Enkelt kædede (ikke-cyklisk og cyklisk) 8 3 -3 2 4 key next head 3 -3 2 4 key next head Dobbelt kædede (ikke-cyklisk og cyklisk) -3 2 4 8 head key next prev -3 2 4 key next prev head sentinel/nil

Dobbelt Kædede Lister List-Search O(n) List-Insert O(1) List-Delete -3 2 4 8 head key next prev List-Search O(n) List-Insert O(1) List-Delete

Dobbelt Kædede Cykliske Lister -3 2 4 key next prev head sentinel/nil Simpler – ingen special tilfælde ved insert og delete List-Search’ O(n) List-Insert’ O(1) List-Delete’

Dobbelt Kædede Cykliske Lister Stak Push(S, x) O(1) Pop(S) Kø Enqueue(S, x) Dequeue(S) Stakken kan også laves med

da Art of CS skulle revideres). Donald Knuth skrev 26 sider om at indsætte et element i en kædet liste på den sammen plads som den sad før! Knuth: Skrev Art of Computer Science 1968-1973 (1. udgave af Volumes 1-3) 2011 (volume 4) Lavet sproget TeX til at procedure videnskabelige artikler (startet udviklingen heraf i 1977, da Art of CS skulle revideres). Donald E. Knuth (1938-)

”The Challenge Puzzle” ?

”The Challenge Puzzle” B L L := Tomt bræt B := Alle brikker Solve(L,B) procedure Solve(Delløsning L, Brikker B) for alle b i B for alle orienteringer af b (* max 8 forskellige *) if b kan placeres i nederste venstre fri then fjern b fra B indsæt b i L if |B|=0 then rapporter L er en løsning else fi slet b fra L genindsæt b i B Nederste-venstre fri Før For at finde løsningerne: Systematisk prøv alle mulige placering af brikkerne. Efter

”The Challenge Puzzle” 4.040 løsninger Solve placerer 8.387.259 brikker

Donald Knuth xkcd.com/163

Og nu til træer... (Jorge Stolfi)

Binær Træ Repræsentation Felter: Left, right, parent

Felter: Left, right sibling, parent Træ Repræsentation Felter: Left, right sibling, parent