Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012



Relaterede dokumenter
Danmarks Tekniske Universitet

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Trægennemløb. Philip Bille

Prioritetskøer og hobe. Philip Bille

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

Danmarks Tekniske Universitet

DM02 Kogt ned. Kokken. Januar 2006

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 2 n (log n) 2. 3 n /n 2 n + (log n) 4

Opgave 1 (10%) I det følgende angiver log n 2-tals-logaritmen af n. Ja Nej. n+3n er O(2n)? n 6 er O(n 5 )? nlogn er O(n 2 /logn)? 4n 3 er O(3n 4 )?

Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Prioritetskøer. Prioritetskøer Træer og hobe Repræsentation af hobe Algoritmer på hobe Hobkonstruktion Hobsortering. Philip Bille

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 4 n n 3n n 2 /logn 5 n n (logn) 3n n 2 /logn 4 n n 5 n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Grafer og graf-gennemløb

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer

Grafer og graf-gennemløb

Grafer og graf-gennemløb

Datastrukturer (recap)

Definition : Et træ er en sammenhængende ikke-orienteret graf uden simple kredse. Sætning : En ikke-orienteret graf er et træ hvis og kun hvis der er

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Grafer og graf-gennemløb

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Grafer og graf-gennemløb

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n n (log n) 2. n 2 + log n 3 n. n n (log n)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2.

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn

Orienterede grafer. Introduktion Repræsentation Søgning Topologisk sortering og DAGs Stærke sammenhængskomponenter Implicitte grafer.

Datastrukturer (recap)

Algoritmisk geometri

Datastrukturer (recap) Datastruktur = data + operationer herpå

Orienterede grafer. Orienterede grafer. Orienterede grafer. Orienterede grafer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 7 n 1/ log n. (log n) 4

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl

Sammenhængskomponenter i grafer

Divide-and-Conquer algoritmer

Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion

Mindste udspændende træ

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

DM507 - Algoritmer og datastrukturer

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Binære søgetræer. Nærmeste naboer Binære søgetræer Indsættelse Predecessor og successor Sletning Algoritmer på træer og trægennemløb.

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Science and Technology EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 5. 5n 2 5 logn. 2 logn

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Divide-and-Conquer algoritmer

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Introduktion til datastrukturer. Philip Bille

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi

Træer. Datastrukturer & Algoritmer, Datalogi C Forelæsning 9/

Søgetræer: Generel repræsentation af (sorterede) mængder og funktioner Databasesystemer...

Sortering i lineær tid

Divide-and-Conquer algoritmer

Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Divide-and-Conquer algoritmer

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

Dynamisk programmering

DM507 Algoritmer og datastrukturer

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Transkript:

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1

CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk vækst.......................................... 3 1.3 Eksempel på køretid......................................... 3 2 Grafer 4 2.1 BFS.................................................. 4 2.1.1 Køretid............................................ 4 2.2 DFS.................................................. 5 2.2.1 Køretid............................................ 5 2.3 Korteste vej.............................................. 6 2.3.1 Køretid............................................ 6 2.4 Topologisk sortering (DAG)..................................... 7 2.5 Sammenhængskomponenter..................................... 8 3 Hobe og binære søgetræer 9 3.1 Hobe.................................................. 9 3.1.1 MinHob............................................ 9 3.1.2 MaxHob............................................ 10 3.2 Binære søgetræ............................................ 11 3.2.1 Insert............................................. 11 3.2.2 Delete............................................. 11 3.2.3 Pre-order........................................... 13 3.2.4 Post-order........................................... 13 4 Datastrukturer 14 4.1 Stakke................................................. 14 4.1.1 Push(S,i), Pop(S)...................................... 14 4.2 Binært søgetræ............................................ 14 4.2.1 Operationer, køretid..................................... 14 4.3 Hobe.................................................. 14 4.3.1 Operationer, køretid..................................... 14 4.4 Hashing................................................ 14 4.4.1 Operationer, køretid..................................... 14 4.5 Incidenslister............................................. 14 4.5.1 Pladsforbrug, køretid..................................... 14 4.6 Incidensmatrix............................................ 15 4.6.1 Pladsforbrug, køretid..................................... 15 2

2012 1 KOMPLEKSITET 1 Kompleksitet 1.1 Køretid O : øvre grænse, denne skal altid være langsomst. Eksempel: n 3 = O(n 4 ). I dette tilfælde er n 4 langtsommereendn 3. Ω : nedre grænse, denne skal altid være hurtigst. Eksempel: n 4 = Ω(n 3 ). I dette tilfælde er n 3 hurtigereendn 4. Θ : tæt grænse, denne skal altid være den samme som den du får opgivet. Eksempel: n 3 = Θ(n 3 ). Generelt eksempel: 1.2 Asymptotisk vækst Funktioner er listet med hurtigste funktioner først. 1.3 Eksempel på køretid T(n) = 7n 2 + 3n + 42 T(n) = O(n 2 ), O(n 3 ), Ω(n 2 ), Ω(n), Θ(n 2 ). T(n) O(n), Ω(n 3 ), Θ(n), Θ(n 3 ). 1 log(n) n n n log(n) n 2 2 n n! Algorithm 1 Algo1(n) for i = 1 to n do for j = 1 to n do print i + j end for end for n n konstant Køretiden er T (n) = Θ(n 2 ) da man ser bort fra konstanten. Algorithm 2 Algo2(n) if n > 0 then Algo2([n/2]) end if log(n) Køretiden er T (n) = Θ(log(n)) da det er et rekursivt kald. Algorithm 3 Algo3(n) i = 1 while i n do j = 1 while j n do j = j + 1 end while i = 2i end while log(n) n Køretiden er T (n) = Θ(n log(n)) da det inderste while loop kører til n og det yderste bliver halveret da i bliver fordoblet, derfor log(n) (kan sammenlignes med et rekursivt kald). 3

2012 2 GRAFER 2 Grafer 2.1 BFS Første knude er i lag 0 Kun alfabetisk hvis skrevet i opgaven Lag: distancen fra startknuden, typisk knude A Husk at følge pilene Given graf G: Løsning: Figure 1: Grafen G Figure 2: BFS løsning 2.1.1 Køretid Køretid: O(n + m) 4

2.2 DFS 2012 2 GRAFER 2.2 DFS Første knude har vægt 1 samt slutvægt Køres alfabetisk Alle knuder har 2 vægte En knude besøges 2 gange i træk ved dead end Husk at returnere til start knuden Given graf G: Løsning: Figure 3: Grafen G Figure 4: DFS løsning 2.2.1 Køretid Køretid: O(m+n)) 5

2.3 Korteste vej 2012 2 GRAFER 2.3 Korteste vej Startknuden har altid afstand 0. Pilene skal følges i ruten, dog bruges pilene ikke i svaret. Bogstav rækkefølge benyttes ikke. Forsikre altid at den rute der vælges er den korteste til den givne knude. Given graf: Løsningen: Figure 5: Kortest vej træ Figure 6: Kortest vej træ færdig 2.3.1 Køretid Kommer an på valg af datastruktur, se slide 12 om Korteste veje i grafer, hvor bl.a. Dijkstras algoritme er beskrevet. 6

2.4 Topologisk sortering (DAG) 2012 2 GRAFER 2.4 Topologisk sortering (DAG) Ingen pile må pege på startknude Skal kunne sorteres så alle pile peger fremad. Må ikke indeholde sammenhængskomponenter Given graf: Løsning: D, B, E, G, C, F, H, A Bevis, ingen sammenhængskomponenter: Figure 7: Given graf Figure 8: Bevis 2.4.1 Køretid Kommer an på valg af datastruktur, se slide 7 om DFS og topologisk sortering. 7

2.5 Sammenhængskomponenter 2012 2 GRAFER 2.5 Sammenhængskomponenter Knuder hvor der kan køres i ring (kreds) Hvis en knude står alene er det også en kreds Løsning: A, B, D, I, H E, F, J G Figure 9: Sammenhængskomponenter 8

2012 3 HOBE OG BINÆRE SØGETRÆER 3 Hobe og binære søgetræer 3.1 Hobe 3.1.1 MinHob Ved insert indsættes knuden på næste plads og der bobles op Vigtigt at hob ordenen overholdes Graf hvor 1 bliver indsat på den ledige plads: Graf hvor knude 1 er blevet boblet op: Figure 10: minhob Figure 11: minhob indsættelse af 1 Ved delete slettes den ønskede knude, og erstates med den sidste knude i grafen. Vigtigt at hob ordenen overholdes Hvis hob ordenen ikke er overholdt efter udskiftning af knuder, boble op eller ned. Ved ExtractMin udtrækker man den øverste knude i træet. Knuden udskiftes med den sidste knude i træet, så hob ordenen overholdes. Da denne knude højst sandsynligt er større end dens børn, skal denne knude bobles ned med den mindste af knudens børn. 9

3.1 Hobe 2012 3 HOBE OG BINÆRE SØGETRÆER Figure 12: minhob extract 2 Løsning: Figure 13: minhob nøgle 2 extracted 3.1.2 MaxHob Samme operationer som MinHob: Ved insert indsættes knuden på næste plads og der bobles op Vigtigt at hob ordenen overholdes Ved delete slettes den ønskede knude, og erstates med den sidste knude i grafen Vigtigt at hob ordenen overholdes Hvis hob ordenen ikke er overholdt efter udskiftning af knuder, boble op eller ned Ved ExtractMax, samme fremgangsmetode for ExtractMin 10

3.2 Binære søgetræ 2012 3 HOBE OG BINÆRE SØGETRÆER 3.2 Binære søgetræ 3.2.1 Insert Venstre del træ er alle mindre end roden Højre del træ er alle større end roden. Given binært træ: Figure 14: Binært søgetræ Indsæt key 8: Løsning: 8 < 10, 8 > 4, 8 < 9, 8 > 7 indsæt 8 som 7 s højre barn: Figure 15: Binært søgetræ insert 8 3.2.2 Delete Nul børn: Slet knude v Ét barn: split v ud (slet v og ryk barn op) 11

3.2 Binære søgetræ 2012 3 HOBE OG BINÆRE SØGETRÆER Figure 16: Binært søgetræ To børn: Brug successor til knuden v. Successor: Mindste knude v. Slet knude 4: Løsning: Knude 4 har to børn. Erstat knude 4 med knudens successor. Figure 17: Binært søgetræ delete 4 12

3.2 Binære søgetræ 2012 3 HOBE OG BINÆRE SØGETRÆER 3.2.3 Pre-order Besøg knude Besøg rekursivt venstre deltræ Besøg rekursivt højre deltræ Gå træet igennem til venstre først: Figure 18: Binært søgetræ Pre-order gennemløb: 10, 4, 2, 1, 3, 9, 7, 12, 14, 13 3.2.4 Post-order Besøg rekursivt venstre deltræ Besøg rekursivt højre deltræ Besøg knude Figure 19: Binært søgetræ Post-order gennemløb: 25, 43, 33, 14, 64, 53, 84, 99, 97, 72, 51 13

2012 4 DATASTRUKTURER 4 Datastrukturer 4.1 Stakke 4.1.1 Push(S,i), Pop(S) Push betyder at man ligger bogstavet på stakken og pop fjerner det igen. En stack er en FIFO (First In First Out) struktur hvilket betyder at man fjerne det element man lagde på sidst. Ifølgende eksempel betyder et bogstav i, PUSH(S,i) og * betyder POP(S). Løsning: DUTNRM D*TU**IN*FOR*M*ATIK 4.2 Binært søgetræ 4.2.1 Operationer, køretid Insert, search, delete, max, min, predecessor, successor: Θ(h) Binært søgetræ: h = n Balanceret Binært søgetræt: h = log(n) 4.3 Hobe 4.3.1 Operationer, køretid Maximum: O(1) Insert: O(1) + tid for at boble op = O(log(n)) ExtractMin/Max: O(1) + tid for at boble op = O(log(n)) Delete: O(log(n)) Increase-Key: O(log(n)) 4.4 Hashing 4.4.1 Operationer, køretid Seperat hægtning: Hash: Afbild nøgle til heltal mellem 0 og n-1: O(1) Insert: Indsæt i starten af den i te liste: O(1), O(n) hvis vi skal checke om det allerede findes Delete: Slet fra i te liste: O(n i ), n i = elementer i den i te liste Søg: Behøver kun at søge i den i te liste: O(n i ) 4.5 Incidenslister 4.5.1 Pladsforbrug, køretid Knuder: n, Kanter: m Pladsforbrug: Θ(n + m) Degree?? Θ(m + n) tid for at identificere alle kanter. 14

4.6 Incidensmatrix 2012 4 DATASTRUKTURER 4.6 Incidensmatrix 4.6.1 Pladsforbrug, køretid Pladsforbrug: Θ(n 2 ) Θ(1) tid for at checke om (u, v) er en kant. Θ(n 2 ) tid for at identificere alle kanter. 15