Datastrukturer (recap)

Størrelse: px
Starte visningen fra side:

Download "Datastrukturer (recap)"

Transkript

1 Dictionaries

2 Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang til data), samt deres køretider (forskellige implementationer af samme API kan give forskellige køretider). DM507: katalog af datastrukturer med bred anvendelse samt effektive implementationer heraf.

3 Datastrukturer (recap) Vi har allerede set Priority queue. Datastruktur som understøtter operationerne: Extract-Min(): Fjern et element med mindste nøgle fra prioritetskøen og returner det. Insert(key,data): Tilføj elementet (key,data) til prioritetskøen. Decrease-Key(key,reference til element i kø): Sætter nøglen for elementet til max{key,gamle key}. Build(liste af elementer): Byg en prioritetskø indeholdende elementerne.

4 Dictionaries I dag Ordered dictionary: Datastruktur som understøtter operationerne: Search(key): returner element med nøglen key (eller fortæl hvis det ikke findes). Insert(key): Indsæt nyt element med nøglen key. Delete(key): Fjern element med nøglen key. Predecessor(key): Find elementet med højeste nøgle key. Succesor(key): Find elementet med laveste nøgle key. OrderedTraversal(): Udskriv elementer i sorteret orden.

5 Dictionaries I dag Ordered dictionary: Datastruktur som understøtter operationerne: Search(key): returner element med nøglen key (eller fortæl hvis det ikke findes). Insert(key): Indsæt nyt element med nøglen key. Delete(key): Fjern element med nøglen key. Predecessor(key): Find elementet med højeste nøgle key. Succesor(key): Find elementet med laveste nøgle key. OrderedTraversal(): Udskriv elementer i sorteret orden. For de sidste tre operationer kræves at nøglerne har en ordning. Hvis kun de tre første operationer skal understøttes, kaldes det en unordered dictionary.

6 Dictionaries Implementationer vi møder i DM507: Balancerede binære søgetræer: Understøtter alle ovenstående operationer (samt mange flere, f.eks. ved at tilføje ekstra information i knuderne) i O(log n) tid. Hashing: understøtter de tre første operationer forventet tid O(1).

7 Binært søgetræ et binært træ med knuder i inorder

8 Binært søgetræ et binært træ med knuder i inorder Et binært træ med nøgler i alle knuder overholder inorder hvis det for alle knuder v gælder: nøgler i v s venstre undertræ nøgle i v nøgler i v s højre undertræ Eksempler:

9 Binære søgetræer Typisk implementation: Knude-objekter med: Reference til forælder Reference til venstre undertræ Reference til højre undertræ samt eet træ-objekt med reference til roden. (Java: reference, bog: pointer).

10 Binære søgetræer Pga. definitionen af inorder nøgler i v s venstre undertræ nøgle i v nøgler i v s højre undertræ kan binære søgetræer siges at indeholde data i sorteret orden.

11 Binære søgetræer Pga. definitionen af inorder nøgler i v s venstre undertræ nøgle i v nøgler i v s højre undertræ kan binære søgetræer siges at indeholde data i sorteret orden. Mere præcist: inorder gennemløb vil udskrive nøgler i sorteret orden:

12 Binære søgetræer Pga. definitionen af inorder nøgler i v s venstre undertræ nøgle i v nøgler i v s højre undertræ kan binære søgetræer siges at indeholde data i sorteret orden. Mere præcist: inorder gennemløb vil udskrive nøgler i sorteret orden: Køretid:

13 Binære søgetræer Pga. definitionen af inorder nøgler i v s venstre undertræ nøgle i v nøgler i v s højre undertræ kan binære søgetræer siges at indeholde data i sorteret orden. Mere præcist: inorder gennemløb vil udskrive nøgler i sorteret orden: Køretid: O(n) (der laves O(1) arbejde per knude i træet).

14 Søgning i binære søgetræer Princip: Hvis søgte element findes, er det i det undertræ, vi er kommet til

15 Flere slags søgninger i binære søgetræer Princip: Det søgte element findes i det undertræ, vi er kommet til

16 Flere slags søgninger i binære søgetræer Princip: Se på stien fra x til rod. Ingen side-træer på den kan indeholde det søgte element (pga. in-order).

17 Indsættelser i binære søgetræer Søg nedad fra rod: gå i hver knude v mødt videre ned i det undertræ (højre/venstre), hvor nye element skal være iflg. inorder-krav for v. Når blad (NIL/tomt undertræ) nås, erstat dette med den nye knude (med to tomme undertræer).

18 Indsættelser i binære søgetræer Søg nedad fra rod: gå i hver knude v mødt videre ned i det undertræ (højre/venstre), hvor nye element skal være iflg. inorder-krav for v. Når blad (NIL/tomt undertræ) nås, erstat dette med den nye knude (med to tomme undertræer). Inorder er overholdt for knuder på søgesti (pga. søgeregel), og for alle andre knuder (fordi de ikke har fået ændret deres undertræer).

19 Sletninger i binære søgetræ Sletning af knude z: Case 1: Mindst eet barn er NIL: Fjern z samt dette barn, lad andet barn tage z s plads.

20 Sletninger i binære søgetræ Sletning af knude z: Case 1: Mindst eet barn er NIL: Fjern z samt dette barn, lad andet barn tage z s plads. Case 2: Ingen børn er NIL: Da er successor-knuden til z den mindste knude i z s højre undertræ. Fjern y (som er en Case 1 fjernelse, da dens venstre barn er NIL), og indsæt den på z s plads.

21 Sletninger i binære søgetræ Sletning af knude z: Case 1: Mindst eet barn er NIL: Fjern z samt dette barn, lad andet barn tage z s plads. Case 2: Ingen børn er NIL: Da er successor-knuden til z den mindste knude i z s højre undertræ. Fjern y (som er en Case 1 fjernelse, da dens venstre barn er NIL), og indsæt den på z s plads. Begge cases efterlader træet i inorder (i Case 2 fordi y vil overholde inorder når den sættes på z s plads, da ingen knuder i træer har nøgle med værdi mellem z s og y s nøgler). Bemærk at strukturelt i træet er alle sletninger en Case 1 sletning.

22 Sletninger i binære søgetræ (bogens cases) Case 1 Case 1 (Case 2 ) Case 1 (Case 2 ) Case 1

23 Tid for operationer i binære søgetræ For alle operationer (undtagen inorder gennemløb): Dvs. køretid = O(højde). Gennemløb sti fra rod til blad.

24 Tid for operationer i binære søgetræ For alle operationer (undtagen inorder gennemløb): Gennemløb sti fra rod til blad. Dvs. køretid = O(højde). For træ med n knuder og højde h gælder altid (jvf. slides om heaps): n 2 h+1 1 log 2 (n + 1) 1 h

25 Tid for operationer i binære søgetræ For alle operationer (undtagen inorder gennemløb): Gennemløb sti fra rod til blad. Dvs. køretid = O(højde). For træ med n knuder og højde h gælder altid (jvf. slides om heaps): n 2 h+1 1 log 2 (n + 1) 1 h Dvs. den bedst mulige højde er log 2 n (±1)

26 Tid for operationer i binære søgetræ For alle operationer (undtagen inorder gennemløb): Gennemløb sti fra rod til blad. Dvs. køretid = O(højde). For træ med n knuder og højde h gælder altid (jvf. slides om heaps): n 2 h+1 1 log 2 (n + 1) 1 h Dvs. den bedst mulige højde er log 2 n (±1) Kan vi holde højden tæt på optimal f.eks. O(log n) under updates (indsættelser og sletninger)?

27 Balancerede binære søgetræer Kan vi holde højden O(log n) under updates (indsættelser og sletninger)?

28 Balancerede binære søgetræer Kan vi holde højden O(log n) under updates (indsættelser og sletninger)? Kræver rebalancering (omstrukturering af træet) efter updates, da dybe træer ellers kan opstå:

29 Balancerede binære søgetræer Kan vi holde højden O(log n) under updates (indsættelser og sletninger)? Kræver rebalancering (omstrukturering af træet) efter updates, da dybe træer ellers kan opstå: Vedligehold af O(log n) højde første gang opnået med AVL-træer [1961].

30 Balancerede binære søgetræer Kan vi holde højden O(log n) under updates (indsættelser og sletninger)? Kræver rebalancering (omstrukturering af træet) efter updates, da dybe træer ellers kan opstå: Vedligehold af O(log n) højde første gang opnået med AVL-træer [1961]. Mange senere forslag. Et forslag består af: Strukturkrav (baseret på balanceinformation opbevaret i knuder), som sikrer O(log n) højde. Algoritmer, som genopretter strukturen efter en update.

31 Balancerede binære søgetræer Kan vi holde højden O(log n) under updates (indsættelser og sletninger)? Kræver rebalancering (omstrukturering af træet) efter updates, da dybe træer ellers kan opstå: Vedligehold af O(log n) højde første gang opnået med AVL-træer [1961]. Mange senere forslag. Et forslag består af: Strukturkrav (baseret på balanceinformation opbevaret i knuder), som sikrer O(log n) højde. Algoritmer, som genopretter strukturen efter en update. I DM507: rød-sorte træer.

32 Rødsorte træer Balanceinformation i knuder: 1 bit (kaldet rød/sort farve). Strukturkrav: Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti.

33 Rødsorte træer Balanceinformation i knuder: 1 bit (kaldet rød/sort farve). Strukturkrav: Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Eksempel: (NB: begrebet blade bliver fra nu af brugt om NIL-undertræer).

34 Rødsorte træer Andre repræsentationer i bogen (samme træ):

35 Rødsorte træer Strukturkrav (recap): Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Sikrer disse strukturkrav sikrer O(log n) højde?

36 Rødsorte træer Strukturkrav (recap): Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Sikrer disse strukturkrav sikrer O(log n) højde? Ja: Hvis antal sorte på alle stier er k, indeholder alle rod-blad stier mindst k 1 kanter, og der er derfor mindst k 1 fulde lag af indre knuder. Derfor er n k 1 = 2 k 1. Heraf følger log(n + 1) k. Hvis der ikke er to røde knuder i træk, indholder den længste rod-blad sti højst 2(k 1) kanter. Så højde 2(k 1) = 2k 2 2 log(n + 1) 2.

37 Indsættelse 1. Indsæt en knude i træet 2. Fjern evt. opstået ubalance (overtrædelse af rød-sort strukturkravene). Recall indsættelse: et blad (NIL) erstattes af en knude med to blade som børn.

38 Ubalance? Recall indsættelse: et blad (NIL) erstattes af en knude med to blade som børn. Overtrædelse af rød-sorte strukturkrav? De to nye blade skal være sorte. Vi vælger at lave nye indsatte knude rød. Mulige overtrædelse af strukturkrav er nu: Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti.

39 Ubalance? Recall indsættelse: et blad (NIL) erstattes af en knude med to blade som børn. Overtrædelse af rød-sorte strukturkrav? De to nye blade skal være sorte. Vi vælger at lave nye indsatte knude rød. Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Mulige overtrædelse af strukturkrav er nu: To røde knuder i træk på en rod-blad sti eet sted i træet.

40 Ubalance? Recall indsættelse: et blad (NIL) erstattes af en knude med to blade som børn. Overtrædelse af rød-sorte strukturkrav? De to nye blade skal være sorte. Vi vælger at lave nye indsatte knude rød. Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Mulige overtrædelse af strukturkrav er nu: To røde knuder i træk på en rod-blad sti eet sted i træet. Idé til plan: Kan problemet ikke løses umiddelbart, så skub det opad i træet til det kan (forhåbentligt nemt at gøre, hvis det når roden).

41 Rebalancering Plan: skub rød-rød problem opad i træet, under brug af omfarvninger og restruktureringer af træet. Den basale restrukturering vil være en rotation (α, β, γ er undertræer, evt. tomme):

42 Rebalancering Plan: skub rød-rød problem opad i træet, under brug af omfarvninger og restruktureringer af træet. Den basale restrukturering vil være en rotation (α, β, γ er undertræer, evt. tomme): Central observation: Rotationer kan ikke ødelægge in-order i træet:

43 Rebalancering Plan: skub rød-rød problem opad i træet, under brug af omfarvninger og restruktureringer af træet. Den basale restrukturering vil være en rotation (α, β, γ er undertræer, evt. tomme): Central observation: Rotationer kan ikke ødelægge in-order i træet: Kun x og y kan få inorder overtrådt (alle andre undertræer indeholder de samme elementer), men dette sker ikke, da følgende gælder både før og efter en rotation: keys i α x keys i β y keys i γ

44 Rebalancering Plan: skub rød-rød problem opad i træet, under brug af omfarvninger og restruktureringer af træet. Den basale restrukturering vil være en rotation (α, β, γ er undertræer, evt. tomme): Central observation: Rotationer kan ikke ødelægge in-order i træet: Kun x og y kan få inorder overtrådt (alle andre undertræer indeholder de samme elementer), men dette sker ikke, da følgende gælder både før og efter en rotation: keys i α x keys i β y keys i γ Så vi skal ikke bekymre os om bevarelse af inorder, hvis vi kun restrukturerer vha. rotationer.

45 Eksempel på rotation

46 Plan for rebalancering (efter indsættelse) Recap af plan: skub rød-rød problem opad i træet, under brug af omfarvninger og restruktureringer (rotationer) af træet. Princip undervejs: To røde knuder i træk på en rod-blad sti højst eet sted i træet. Bortset herfra er de rød-sorte krav overholdt. Mål: I O(1) tid, fjern problemet eller skub det eet skridt nærmere roden. Dette vil give rebalancering i O(højde) = O(log n) tid.

47 Cases i rebalancering (efter indsættelse) Case 1: Rød onkel (onkel = forælders søskend). Case 2: Sort onkel (onkel = forælders søskend). Her er z nederste knude z i rød-rød problemet. Kontrollér at princip vedligeholdes. Kontrollér O(1) tid før problem fjernes eller flyttes nærmere roden. Når p.z (eller z) er lig roden, kan denne blot farves sort ( alle stier får en sort mere).

48 Sletning 1. Slet en knude i træet 2. Fjern evt. opstået ubalance (overtrædelse af rød-sort kravene). Recall sletning: der fjernes strukturelt set altid én knude hvis ene barn er et blad (NIL), som også fjernes.

49 Ubalance? Overtrædelse af rød-sorte krav? Fjernet knude rød: Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti.

50 Ubalance? Overtrædelse af rød-sorte krav? Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Fjernet knude rød: Alle rød-sorte krav stadig overholdt.

51 Ubalance? Overtrædelse af rød-sorte krav? Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Fjernet knude rød: Alle rød-sorte krav stadig overholdt. Fjernet knude sort:

52 Ubalance? Overtrædelse af rød-sorte krav? Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Fjernet knude rød: Alle rød-sorte krav stadig overholdt. Fjernet knude sort: Ikke længere samme antal sorte på alle stier.

53 Ubalance? Overtrædelse af rød-sorte krav? Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Fjernet knude rød: Alle rød-sorte krav stadig overholdt. Fjernet knude sort: Ikke længere samme antal sorte på alle stier. Meget brugbar formulering: Lad den fjernede knudes andet barn være sværtet og gælde for een mere sort end dens farve angiver når vi tæller sorte på stier (sværtet sort = 2 sorte, sværtet rød = 1 sort). Så er kravene overholdt, bortset fra eksistensen af en sværtet knude.

54 Ubalance? Overtrædelse af rød-sorte krav? Rod og blade sorte. Samme antal sorte på alle rod-blad stier. Ikke to røde i træk på nogen rod-blad sti. Fjernet knude rød: Alle rød-sorte krav stadig overholdt. Fjernet knude sort: Ikke længere samme antal sorte på alle stier. Meget brugbar formulering: Lad den fjernede knudes andet barn være sværtet og gælde for een mere sort end dens farve angiver når vi tæller sorte på stier (sværtet sort = 2 sorte, sværtet rød = 1 sort). Så er kravene overholdt, bortset fra eksistensen af en sværtet knude. Idé til plan: Kan problemet ikke løses umiddelbart, så skub det opad i træet til det kan (forhåbentligt nemt at gøre, hvis det når roden).

55 Rebalancering Skub sværtet knude opad i træet, under brug af omfarvninger og rotationer: Princip undervejs: Højst én knude i træet er sværtet. Hvis sværtningen tælles med, er de rød-sorte krav overholdt. Nemme stoptilfælde: Sværtet knude er rød sværtning kan fjernes ved at farve knuden sort. Sværtet knude er rod sværtning kan bare fjernes ( alle stier får en sort mindre). (Så nok at se på tilfældet at den sværtede knude er sort.)

56 Rebalancering Mål: I O(1) tid, fjern problemet eller skub det eet skridt nærmere roden. Dette vil give rebalancering i O(højde) = O(log n) tid.

57 Rebalancering Mål: I O(1) tid, fjern problemet eller skub det eet skridt nærmere roden. Dette vil give rebalancering i O(højde) = O(log n) tid. Cases for sværtet sort knude x med søskend w. 1. Rød søskend. 2. Sort søskend, og denne har to sorte børn. 3. Sort søskend, og dennes nærmeste barn er rødt, det fjerneste sort. 4. Sort søskend, og dennes fjerneste barn er rødt.

58 Cases i rebalancering (efter sletning) Her er x sværtet knude. Kontrollér at princip vedligeholdes. Kontrollér O(1) tid før sværtning fjernes eller flyttes eet skridt nærmere roden.

59 Idé i hashing Vi antager keys er heltal (for andre datatyper må man tildele dem en heltalsværdi, jvf. hashcode() i java) op til en max-grænse. Universe U = {0, 1, 2,... U 1} Dictionary gemmer delmængde K U, e.g. K = {2, 3, 5, 8}

60 Idé i hashing Vi antager keys er heltal (for andre datatyper må man tildele dem en heltalsværdi, jvf. hashcode() i java) op til en max-grænse. Universe U = {0, 1, 2,... U 1} Dictionary gemmer delmængde K U, e.g. K = {2, 3, 5, 8} Grundideen i hashing er at se på keys som indekser i et array: Problem: Pladsforbrug. Ofte 2 32 = U >> K = n.

61 Hash-funktioner Hash-funktion: h : U {0, 1, 2,... m 1}. Her er m den ønskede tabel størrelse. Ofte vælges m = O(n). F.eks.: h(k) = k mod m

62 Hash-funktioner Endnu bedre: h(k) = ((a k + b) mod p) mod m, hvor a, b er faste, men tilfældigt valgte tal, og p er et primtal større end U. Analyse heraf senere i studiet: kvalitet kan garanteres i en bestemt forstand (kaldet universal hashing). I DM507-bog (inden for DM507 pensum): flere forslag til hash-funktioner, baseret på erfaring, men alle uden teoretisk garanti for kvalitet.

63 Kollisioner To keys hash er til samme array index: Een simpel løsning: Chaining (lænkede lister).

64 Open addressing En anden løsning: Forsøg at finde tom slot. h(k, i) = (h (k) + i) mod m h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m h(k, i) = (h (k) + i h (k)) mod m Insert: i = 0, 1, 2,... forsøges til en empty slot findes. Search: i = 0, 1, 2,... forsøges til element eller empty slot findes. Sletninger: besværligt. Det er nødvendigt at n m (da alle n elementer ligger i tabellen). {h(k, 0), h(k, 1), h(k, 2),..., h(k, m 1)} bør være {0, 1, 2,..., m 1} for alle k (så hele tabellen gennemsøges).

Datastrukturer (recap)

Datastrukturer (recap) Dictionaries Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data. Operationer: Datastrukturens egenskaber udgøres af de tilbudte operationer (API for adgang

Læs mere

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

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.

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

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

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

Læs mere

Sortering af information er en fundamental og central opgave.

Sortering af information er en fundamental og central opgave. Sortering Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

Læs mere

Prioritetskøer og hobe. Philip Bille

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

Læs mere

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer:

Sortering. De n tal i sorteret orden. Eksempel: Kommentarer: Sortering Sortering Input: Output: n tal De n tal i sorteret orden Eksempel: Kommentarer: 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 Sorteret orden kan være stigende eller faldende. Vi vil i dette kursus

Læs mere

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden 6, 2, 9, 4, 5, 1, 4, 3 1, 2, 3, 4, 4, 5, 9 2 / 34 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

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

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

Læs mere

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

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 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

Læs mere

DM507 Algoritmer og datastrukturer

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

Læs mere

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

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

Læs mere

Datastrukturer. Datastruktur = data + operationer herpå

Datastrukturer. Datastruktur = data + operationer herpå Prioritetskøer Prioritetskøer? Datastrukturer Datastruktur = data + operationer herpå Datastrukturer Data: Datastruktur = data + operationer herpå Ofte en ID + associeret data. ID kaldes også en nøgle

Læs mere

Datastrukturer. Datastruktur = data + operationer herpå

Datastrukturer. Datastruktur = data + operationer herpå Prioritetskøer Prioritetskøer? Datastrukturer Datastruktur = data + operationer herpå Datastrukturer Data: Datastruktur = data + operationer herpå Ofte en ID + associeret data. ID kaldes også en nøgle

Læs mere

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt.

Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at beskrive nogle algoritmer og datastrukturer relateret til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Algoritmisk geometri

Algoritmisk geometri Algoritmisk geometri 1 Intervalsøgning 2 Motivation for intervaltræer Lad der være givet en database over ansatte i en virksomhed Ansat Alder Løn Ansættelsesdato post i databasen Antag, at vi ønsker at

Læs mere

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

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):

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2010 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 24. april, 2010 (let justeret 10. maj og 21. maj 2010) Dette projekt udleveres i tre

Læs mere

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

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

Læs mere

Danmarks Tekniske Universitet

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:

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Varighed: timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

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 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

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 23n log n. 4 n (log n) log n Eksamen. kvarter 00 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) Ja Nej n er O(n )? n er O(n )? n er O(n + 0 n)? n + n er O(n )? n log n er Ω(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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.)

Læs mere

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 )?

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 )? Eksamen juni Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) I det følgende angiver log n -tals-logaritmen af n. n+n er O(n)? n 6 er O(n )? nlogn er O(n /logn)? n er O(n )? n er O(n )?

Læs mere

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 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

Læs mere

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer.

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. Merging og Hashing Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang (API =

Læs mere

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

Læs mere

Danmarks Tekniske Universitet

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:

Læs mere

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træer

Læs mere

DM02 Kogt ned. Kokken. Januar 2006

DM02 Kogt ned. Kokken. Januar 2006 DM02 Kogt ned Kokken Januar 2006 1 INDHOLD Indhold 1 Asymptotisk notation 2 2 Algoritme analyse 2 3 Sorterings algoritmer 2 4 Basale datastrukturer 3 5 Grafer 5 6 Letteste udspændende træer 7 7 Disjunkte

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider anmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 02326. Varighed: 4 timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

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.)

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

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

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 Eksamen. kvarter 00 Side 1 af sider Opgave 1 ( %) Ja Nej n log n er O(n / )? n 1/ er O(log n)? n + n er O(n )? n( n + log n) er O(n / )? n er Ω(n )? Opgave ( %) Opskriv følgende funktioner efter stigende

Læs mere

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

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): 1 (tretten) Eksamensdag: Tirsdag den 8. april 2008,

Læs mere

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: (logn) 5. 5n 2 5 logn. 2 logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n +n er O(n )? Ja Nej n er O(n )? n+n er O(n. )? n+n er O(8n)? n logn er O(n )? Opgave (%) Opskriv følgende funktioner

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 3 sider anmarks Tekniske Universitet Skriftlig prøve, den 29. maj 203. ursusnavn: lgoritmer og datastrukturer ursus nr. 02326. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

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 =

Læs mere

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille Ordbøger. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[x] fra et univers af nøgler U og satellitdata data[x]. Ordbogsoperationer. SEARCH(k): afgør om element

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2012 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 29. april, 2012 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Algoritmer og Datastrukturer 1 (003-ordning) Antal sider i opgavesættet (incl. forsiden): 10 (ti)

Læs mere

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Hashing. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille Hashing Ordbøger Hægtet hashing Hashfunktioner Lineær probering Ordbøger Ordbøger. Vedligehold en dynamisk mængde S af elementer.

Læs mere

Merging og Hashing (del I)

Merging og Hashing (del I) Merging og Hashing (del I) Tilgang til data To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (også kaldet key, nøgle) for dataelementer. API for sekventiel tilgang

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 036, side af sider anmarks Tekniske Universitet Skriftlig prøve, den 3. maj 0. Kursusnavn: lgoritmer og datastrukturer Kursus nr. 036. Varighed: timer Tilladte hjælpemidler: lle skriftlige hjælpemidler.

Læs mere

DM507 - Algoritmer og datastrukturer

DM507 - Algoritmer og datastrukturer - Algoritmer og datastrukturer Køretid g(n) Udtryk Beskrivelse lim n f(n) o(f) Vokser langsommere end f = 0 O(f) Vokser højst så hurtigt som f < Θ(f) Vokser som f = c(c > 0) Ω(f) Vokser mindst så hurtigt

Læs mere

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Sortering i lineær tid

Sortering i lineær tid Sortering i lineær tid Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel. Nedre grænse for sammenligningsbaseret sortering Nedre grænser kræver en præcis beregningsmodel.

Læs mere

DATALOGISK INSTITUT, AARHUS UNIVERSITET

DATALOGISK INSTITUT, AARHUS UNIVERSITET DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 1. april 200, kl..00-11.00

Læs mere

Grafer og graf-gennemløb

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. Grafer En mængde V af knuder (vertices). En mængde E V V af kanter (edges).

Læs mere

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel:

Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Ideen er simpel: Opbyg løsningen skridt for skridt ved hele tiden af vælge lige

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Mindste udspændende træ

Mindste udspændende træ Mindste udspændende træ Introduktion Repræsentation af vægtede grafer Egenskaber for mindste udspændende træer Prims algoritme Kruskals algoritme Philip Bille Mindste udspændende træ Introduktion Repræsentation

Læs mere

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

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

Læs mere

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti.

Korteste veje i vægtede grafer. Længde af sti = sum af vægte af kanter på sti. Korteste veje Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. Korteste veje i vægtede grafer Længde af sti = sum af vægte af kanter på sti. δ(u, v) = længden af en korteste

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 005, F0 side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 00. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

Læs mere

Om binære søgetræer i Java

Om binære søgetræer i Java Om binære søgetræer i Java Mads Rosendahl 7. november 2002 Resumé En fix måde at gemme data på er i en træstruktur. Måden er nyttig hvis man får noget data ind og man gerne vil have at det gemt i en sorteret

Læs mere

Divide-and-Conquer algoritmer

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

Læs mere

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

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

Læs mere

Rolf Fagerberg. Forår 2012

Rolf Fagerberg. Forår 2012 Forår 2012 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: DM502 og DM503 Timer: 50% forelæsninger, 50% øvelser Forudsætninger: DM502 og DM503 Eksamenform: Skriftlig eksamen: Timer: 50% forelæsninger,

Læs mere

Grafer og graf-gennemløb

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 ).

Læs mere

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype.

16 Træer. Noter. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. 16 Træer. Definition af et træ. Definitioner i tilknytning til træer. Repræsentation af træer. Binære træer. Den abstrakte datatype. Gennemløb af binære træer. Træer i Eiffel. 229 Definition af et træ.

Læs mere

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse.

19 Hashtabeller. Noter. PS1 -- Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. 19 Hashtabeller. Hashing problemet. Hashfunktioner. Kollision. Søgning og indsættelse. Sammenligning af hashtabeller og søgetræer. 281 Hashing-problemet (1). Vi ønsker at afbilde n objekter på en tabel

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet ksamen 06, F side af sider anmarks Tekniske Universitet Skriftlig prøve, den 9. maj 0. ursusnavn: lgoritmer og datastrukturer ursus nr. 06. jælpemidler: Skriftlige hjælpemidler. et er ikke tilladt at medbringe

Læs mere

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

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

Læs mere

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

Mm6: More sorting algorithms: Heap sort and quick sort - October 29, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm6: More sorting algorithms: Heap sort and quick sort - October 9, 008 Algorithms and Architectures II. Introduction

Læs mere

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter. Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter Philip Bille Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software Engineering BA i Matematik-Økonomi BA i Anvendt Matematik BA

Læs mere

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen kreds af kanter. Træ

Læs mere

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter.

Forén og find. Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter. Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening Stikompression Dynamiske sammenhængskomponenter Philip Bille Forén og find Introduktion Hurtig find Hurtig forening Vægtet forening

Læs mere

Rolf Fagerberg. Forår 2014

Rolf Fagerberg. Forår 2014 Forår 2014 Mål for i dag Dagens program: 1 2 3 4 5 6 Forudsætninger: Format: Programmering og Diskret matematik I (forelæsninger), TE (øvelser), S (arbejde selv og i studiegrupper) Eksamenform: Skriftlig

Læs mere

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

Orienterede grafer. Orienterede grafer. Orienterede grafer. Vejnetværk Philip Bille Orienteret graf (directed graph). Mængde af knuder forbundet parvis med orienterede kanter. Vejnetværk Knude = vejkryds, kant = ensrettet vej. deg + (6) =, deg - (6) = sti fra til 6 8 7 9

Læs mere

Rolf Fagerberg. Forår 2015

Rolf Fagerberg. Forår 2015 Forår 2015 Dagens program 1 2 3 4 5 Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Underviser:, IMADA Forskningsområde: algoritmer og datastrukturer Deltagere: BA i Datalogi BA i Software

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Dynamisk programmering. Flere eksempler

Dynamisk programmering. Flere eksempler Dynamisk programmering Flere eksempler Eksempel 1: Længste fælles delstreng Alfabet = mængde af tegn: {a,b,c,...,z}, {A,C,G,T}, {,1} Streng = sekvens x 1 x 2 x 3... x n af tegn fra et alfabet: helloworld

Læs mere

18 Multivejstræer og B-træer.

18 Multivejstræer og B-træer. 18 Multivejstræer og B-træer. Multivejs søgetræer. Søgning i multivejssøgetræer. Pragmatisk lagring af data i multivejstræer. B-træer. Indsættelse i B-træer. Eksempel på indsættelse i B-træ. Facts om B-træer.

Læs mere

Introduktion til DM507

Introduktion til DM507 Introduktion til DM507 Rolf Fagerberg Forår 2017 1 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA Forskningsområde: algoritmer og datastrukturer 2 / 20 Hvem er vi? Underviser: Rolf Fagerberg, IMADA

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

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

Læs mere

Danmarks Tekniske Universitet

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.

Læs mere

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter

Geometrisk skæring. Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Planfejning 1 Skæring 2 Geometrisk skæring Afgørelse af om der findes skæringer blandt geometriske objekter Bestemmelse af alle skæringspunkter Løsningsmetoder: Rå kraft Planfejning (eng. plane sweep)

Læs mere

Sammenhængskomponenter i grafer

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

Læs mere

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering

Hashing. Hashing. Ordbøger. Ordbøger. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Ordbøger Hægtet hashing Hashfunktioner Lineær probering Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle x.key fra et univers af nøgler U og satellitdata x.data. Ordbogsoperationer. SEARCH(k): afgør om element med nøgle

Læs mere

Oversættere, ugeopgave 3

Oversættere, ugeopgave 3 Oversættere, ugeopgave 3 Anders jerg Pedersen (andersbp@me.com) 29. november 2009 Opgave 1 Vi konsrer først NFA er for grammatikken fra opgave 3.22 med produktionen tilføjet: Produktion NFA 0 A 1 C D 2

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

Minimum udspændende Træer (MST)

Minimum udspændende Træer (MST) Minimum udspændende Træer (MST) Træer Et (frit/u-rodet) træ er en uorienteret graf G = (V, E) som er Sammenhængende: der er en sti mellem alle par af knuder. Acyklisk: der er ingen lukket kreds af kanter

Læs mere

UNION-FIND. UNION-FIND-problemet. Forbundethed kan være svær at afgøre (især for en computer) Eksempel på udførelse

UNION-FIND. UNION-FIND-problemet. Forbundethed kan være svær at afgøre (især for en computer) Eksempel på udførelse UNION-FIND-problemet UNION-FIND inddata: en følge af heltalspar (p, q); betydning: p er forbundet med q uddata: intet, hvis p og q er forbundet, ellers (p, q) Eksempel på anvendelse: Forbindelser i computernetværk

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Kvartetafstand Chris Christiansen

Kvartetafstand Chris Christiansen Kvartetafstand Chris Christiansen 1 af 58 Oversigt Kvartetafstanden. Skitsering af algoritmer. Implementering og tool. Eksperimenter. Visualisering. 2 af 58 Afstand mellem træer 3 af 58 Træer Rodet Urodet

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm8: Hash tables og Hashing - November 10, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm8: Hash tables og Hashing - November 10, 2010 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm8: Hash tables og Hashing - November 10, 2010 1 Algorithms and Architectures II 1. Introduction to analysis and design of algorithms (RLO

Læs mere

Grundlæggende køretidsanalyse af algoritmer

Grundlæggende køretidsanalyse af algoritmer Grundlæggende køretidsanalyse af algoritmer Algoritmers effektivitet Størrelse af inddata Forskellige mål for køretid Store -notationen Klassiske effektivitetsklasser Martin Zachariasen DIKU 1 Algoritmers

Læs mere

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille

Korteste veje. Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs. Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje på DAGs Philip Bille Korteste veje Introduktion Egenskaber for korteste veje Dijkstras algoritme Korteste veje

Læs mere

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET INSTITUT FOR DTLOGI, RHUS UNIVERSITET Science and Technology EKSEN lgoritmer og Datastrukturer (00-ordning) ntal sider i opgavesættet (incl. forsiden): 11 (elleve) Eksamensdag: Torsdag den 1. juni 01,

Læs mere

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

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

Læs mere

Induktive og rekursive definitioner

Induktive og rekursive definitioner Induktive og rekursive definitioner Denne note omhandler matematiske objekter, som formelt er opbygget fra et antal basale byggesten, kaldet basistilfælde eller blot basis, ved gentagen brug af et antal

Læs mere