Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012
|
|
|
- Fredrik Kirkegaard
- 10 år siden
- Visninger:
Transkript
1 Algoritmer og datastrukturer Course No Cheat Sheet 2012 May 15,
2 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet Køretid Asymptotisk vækst Eksempel på køretid Grafer BFS Køretid DFS Køretid Korteste vej Køretid Topologisk sortering (DAG) Sammenhængskomponenter Hobe og binære søgetræer Hobe MinHob MaxHob Binære søgetræ Insert Delete Pre-order Post-order Datastrukturer Stakke Push(S,i), Pop(S) Binært søgetræ Operationer, køretid Hobe Operationer, køretid Hashing Operationer, køretid Incidenslister Pladsforbrug, køretid Incidensmatrix Pladsforbrug, køretid
3 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
4 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 Køretid Køretid: O(n + m) 4
5 2.2 DFS 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 Køretid Køretid: O(m+n)) 5
6 2.3 Korteste vej 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 Køretid Kommer an på valg af datastruktur, se slide 12 om Korteste veje i grafer, hvor bl.a. Dijkstras algoritme er beskrevet. 6
7 2.4 Topologisk sortering (DAG) 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 Køretid Kommer an på valg af datastruktur, se slide 7 om DFS og topologisk sortering. 7
8 2.5 Sammenhængskomponenter 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
9 HOBE OG BINÆRE SØGETRÆER 3 Hobe og binære søgetræer 3.1 Hobe 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
10 3.1 Hobe HOBE OG BINÆRE SØGETRÆER Figure 12: minhob extract 2 Løsning: Figure 13: minhob nøgle 2 extracted 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
11 3.2 Binære søgetræ HOBE OG BINÆRE SØGETRÆER 3.2 Binære søgetræ 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 Delete Nul børn: Slet knude v Ét barn: split v ud (slet v og ryk barn op) 11
12 3.2 Binære søgetræ 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
13 3.2 Binære søgetræ HOBE OG BINÆRE SØGETRÆER 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, 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
14 DATASTRUKTURER 4 Datastrukturer 4.1 Stakke 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æ 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 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 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 Pladsforbrug, køretid Knuder: n, Kanter: m Pladsforbrug: Θ(n + m) Degree?? Θ(m + n) tid for at identificere alle kanter. 14
15 4.6 Incidensmatrix DATASTRUKTURER 4.6 Incidensmatrix 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
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
02105 Eksamensnoter. Lasse Herskind S maj Sortering 3
02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne: Opgave
Danmarks Tekniske Universitet
Eksamen 02105, F14 side 1 af 14 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 2014. Kursusnavn: Algoritmer og datastrukturer 1 Kursusnummer: 02105 Hjælpemidler: Skriftlige hjælpemidler. Det
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.
Danmarks Tekniske Universitet
side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning
Danmarks Tekniske Universitet
side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer Kursus nr. 02326. Tilladte hjælpemidler: Alle hjælpemidler. Vægtning af opgaverne:
Danmarks Tekniske Universitet
Eksamen 005, F side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed:
Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo
Philip Bille er. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key og satellitdata x.data. operationer. PREDECESSOR(k): returner element x med største nøgle k. SUCCESSOR(k):
Prioritetskøer og hobe. Philip Bille
Prioritetskøer og hobe Philip Bille Plan Prioritetskøer Træer Hobe Repræsentation Prioritetskøoperationer Konstruktion af hob Hobsortering Prioritetskøer Prioritetskø Vedligehold en dynamisk mængde S af
Danmarks Tekniske Universitet
Eksamen 0205, Forår 205 side af 5 Danmarks Tekniske Universitet Skriftlig prøve, den 22. maj 205. Kursusnavn: Algoritmer og datastrukturer Kursusnummer: 0205 Hjælpemidler: Skriftlige hjælpemidler. Det
Danmarks Tekniske Universitet
Eksamen 005, F09 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer
1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer på disse. Typer af lister: Array Enkelt linket liste Dobbelt linket Cirkulære lister Typer af køer: FILO FIFO
Algoritmeanalyse. Øvre grænse for algoritme. Øvre grænse for problem. Nedre grænse for problem. Identificer essentiel(le) operation(er)
Algoritmeanalyse Identificer essentiel(le) operation(er) Øvre grænse for algoritme Find øvre grænse for antallet af gange de(n) essentielle operation(er) udføres. Øvre grænse for problem Brug øvre grænse
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se
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
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 en unik simpel vej mellem ethvert par af punkter i
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer
Skriftlig Eksamen DM507 Algoritmer og Datastrukturer Institut for Matematik og Datalogi Syddansk Universitet, Odense Tirsdag den 24. juni 2014, kl. 10:00 14:00 Besvarelsen skal afleveres elektronisk. Se
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Onsdag den 0. juni 009, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Grafer og graf-gennemløb
Grafer og graf-gennemløb Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges). Dvs. ordnede par af knuder. Figur: Terminologi: n = V, m = E (eller V og E (mis)bruges som V og E ).
Mindste udspændende træ. Mindste udspændende træ. Introduktion. Introduktion
Philip Bille Introduktion (MST). Udspændende træ af minimal samlet vægt. Introduktion (MST). Udspændende træ af minimal samlet vægt. 0 0 Graf G Ikke sammenhængende Introduktion (MST). Udspændende træ af
Intervalsøgning. Algoritmisk geometri. Motivation for intervaltræer. Intervalsøgning. Lad der være givet en database over ansatte i en virksomhed
Algoritmisk geometri Intervalsøgning 1 2 Motivation for intervaltræer Intervalsøgning Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Vi kan
INSTITUT FOR DATALOGI, AARHUS UNIVERSITET
INSTITUT FOR DTOI, RUS UNIVERSITET Science and Technology ESEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): (elleve) Eksamensdag: Fredag den. juni 0, kl. 9.00-.00
Sammenhængskomponenter i grafer
Sammenhængskomponenter i grafer Ækvivalensrelationer Repetition: En relation R på en mængde S er en delmængde af S S. Når (x, y) R siges x at stå i relation til y. Ofte skrives x y, og relationen selv
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen
22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.
22 Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned. Indsættelse i hobe. Sletning af minimalt element i hobe. Repræsentation. 327
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)
Skriftlig Eksamen Algoritmer og Datastrukturer (DM507) Institut for Matematik og Datalogi Syddansk Universitet, Odense Mandag den 7. juni 00, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater, osv.)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads)
Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.
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.
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 Philip Bille Binære søgetræer Nærmeste naboer Binære søgetræer Indsættelse
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi
DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Tirsdag den 20. marts 2012, kl.
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
Søgning og Sortering. Søgning og Sortering. Søgning. Linæer søgning
Søgning og Sortering Søgning og Sortering Philip Bille Søgning. Givet en sorteret tabel A og et tal x, afgør om der findes indgang i, så A[i] = x. Sorteret tabel. En tabel A[0..n-1] er sorteret hvis A[0]
Divide-and-Conquer algoritmer
Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer
DM507 Algoritmer og datastrukturer
DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 15. marts, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således
