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

Save this PDF as:
 WORD  PNG  TXT  JPG

Størrelse: px
Starte visningen fra side:

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

Transkript

1 Merging og Hashing

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

3 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder).

4 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()

5 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()

6 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()

7 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()...

8 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()

9 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close()

10 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

11 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

12 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

13 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

14 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

15 API for sekventiel tilgang (API = Application Programming Interface: samling af metoder). Læsning: Operationer: readnext(), isendoffile(), open(), close() Skrivning: Operationer: writenext(), open(), close()

16 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer.

17 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close()

18 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close() ID element data stored elements

19 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close() ID element data stored elements Jvf.:

20 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close() ID element data stored elements Jvf.: Dictionary i Python (data = dict[id], dict[id] = data, del dict[id])

21 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close() ID element data stored elements Jvf.: Dictionary i Python (data = dict[id], dict[id] = data, del dict[id]) Databases (ID = CPR, f.eks.)

22 API for random access tilgang Tilgang via ID (også kaldet key, nøgle) for elementer. Operationer: findelm(id), insertelm(id,elementdata), deleteelm(id), open(), close() ID element data stored elements Jvf.: Dictionary i Python (data = dict[id], dict[id] = data, del dict[id]) Databases (ID = CPR, f.eks.) NB: tilgang til liste i Python/arrays i Java kan ses som specialtilfælde hvor ID = index (data = list[7], list[7] = data, list[7] = None)

23 Spørgsmål 1. Hvad kan det simple API Sekventiel tilgang bruges til?

24 Spørgsmål 1. Hvad kan det simple API Sekventiel tilgang bruges til? 2. Hvordan implementeres det mere avancerede API Random access tilgang?

25 Spørgsmål 1. Hvad kan det simple API Sekventiel tilgang bruges til? 2. Hvordan implementeres det mere avancerede API Random access tilgang? Bemærk: Alle data kilder kan tilgås med Sekventiel tilgang API (og nogle tillader kun det): Harddisk CD Bånd Streaming over net Data genereret on-the-fly af et andet program Data i et array (liste i Python)

26 Hvad kan laves med sekventiel tilgang?

27 Hvad kan laves med sekventiel tilgang? Lineær søgning

28 Hvad kan laves med sekventiel tilgang? Lineær søgning Find største element

29 Hvad kan laves med sekventiel tilgang? Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit)

30 Hvad kan laves med sekventiel tilgang? Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Selectionsort

31 Hvad kan laves med sekventiel tilgang? Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Selectionsort Merge af to sorterede lister til een (og dermed Mergesort)

32 Hvad kan laves med sekventiel tilgang? Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Selectionsort Merge af to sorterede lister til een (og dermed Mergesort) Generaliseret merge (eksempler senere)

33 Merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C.

34 Merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C.

35 Merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C

36 Merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C Korrekt metode (dvs. at C ved afslutning er sorteret)?

37 Merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C Korrekt metode (dvs. at C ved afslutning er sorteret)? Korrekthed kan ses ved hjælp af en invariant.

38 Korrekthed og køretid for merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C

39 Korrekthed og køretid for merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C Korrekthed (at C ved afslutning er sorteret) ses ved flg. invariant: Nuværende version af A, B, C er sorterede, og ingen elementer i A, B er mindre end noget element i C.

40 Korrekthed og køretid for merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C Korrekthed (at C ved afslutning er sorteret) ses ved flg. invariant: Nuværende version af A, B, C er sorterede, og ingen elementer i A, B er mindre end noget element i C. Tid:

41 Korrekthed og køretid for merge Slå to (stigende) sorterede lister A og B sammen til een sorteret liste C. Et merge-skridt: Sammenlign nuværende forreste i A og B, og flyt mindste af disse over sidst i C. Start med tom C Sålænge både A og B er ikke-tomme: Udfør et merge-skridt Hvis enten A eller B er ikke-tom: Flyt resten af dens elementer over sidst i C Korrekthed (at C ved afslutning er sorteret) ses ved flg. invariant: Nuværende version af A, B, C er sorterede, og ingen elementer i A, B er mindre end noget element i C. Tid: Θ( A + B )

42 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter længde 4 til længde 8,..., Indtil længde n nås, dvs. alle elementer er i een sorteret liste. Dvs. vi har sorteret elementerne.

43 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter længde 4 til længde 8,..., Indtil længde n nås, dvs. alle elementer er i een sorteret liste. Dvs. vi har sorteret elementerne. Der er lavet log n runder når længde n nås [da 2 k = n k = log n ].

44 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter længde 4 til længde 8,..., Indtil længde n nås, dvs. alle elementer er i een sorteret liste. Dvs. vi har sorteret elementerne. Der er lavet log n runder når længde n nås [da 2 k = n k = log n ]. Tid i alt:

45 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter længde 4 til længde 8,..., Indtil længde n nås, dvs. alle elementer er i een sorteret liste. Dvs. vi har sorteret elementerne. Der er lavet log n runder når længde n nås [da 2 k = n k = log n ]. Tid i alt: Θ(n log n) [da vi log n gange laver Θ(n) arbejde].

46 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4. Arbejdet svarer til at røre alle elementer een gang, dvs. er Θ(n). Derefter længde 4 til længde 8,..., Indtil længde n nås, dvs. alle elementer er i een sorteret liste. Dvs. vi har sorteret elementerne. Der er lavet log n runder når længde n nås [da 2 k = n k = log n ]. Tid i alt: Θ(n log n) [da vi log n gange laver Θ(n) arbejde]. Se illustration af algoritmen og dens analyse næste side.

47 Mergesort Figure: Andrew Myers, Cornell University

48 Generaliseret merge Under merge af to sorterede lister A og B vil elementer med samme værdi møde hinanden under merge-skridtene.

49 Generaliseret merge Under merge af to sorterede lister A og B vil elementer med samme værdi møde hinanden under merge-skridtene. Eksempel: A er datafil med (ID,data) elementer, sorteret efter ID, B er liste af (ID,opdatering) elementer som angiver opdateringer, sorteret efter ID. At gennemløbe A og B via merge-skridt vil tillade os at opdatere data i A. NB: de to lister behøver ikke være lige lange.

50 Generaliseret merge Under merge af to sorterede lister A og B vil elementer med samme værdi møde hinanden under merge-skridtene. Eksempel: A er datafil med (ID,data) elementer, sorteret efter ID, B er liste af (ID,opdatering) elementer som angiver opdateringer, sorteret efter ID. At gennemløbe A og B via merge-skridt vil tillade os at opdatere data i A. NB: de to lister behøver ikke være lige lange. Eksempel: To lister A og B repræsenterer mængder (og er derfor hver især uden dubletter). At gennemløbe A og B via merge-skridt vil tillade os at generere f.eks. A B: Hvis et merge-step ser to ens elementer som forreste i A og B, flyttes det ene over sidst i C, og den anden smides væk. Hvis et merge-step ser to forskellige, smides den mindste væk.

51 Hvordan laves API Random access tilgang? Een metode: Hashing.

52 Hvordan laves API Random access tilgang? Een metode: Hashing.?

53 Hvordan laves API Random access tilgang? Een metode: Hashing.? Hash hacher [fransk] hakke i stykker.

54 Hashing Ide: tildel hver ID et index i et array A hvor element gemmes. Hash-funktion h:

55 Hashing Ide: tildel hver ID et index i et array A hvor element gemmes. Hash-funktion h: h(id) = index i A h(id) k

56 Hashing Ide: tildel hver ID et index i et array A hvor element gemmes. Hash-funktion h: h(id) = index i A Eksempel (antag ID er er heltal): h(id) k hvor k = A. h(x) = x mod k Bemærk at h(x) {0, 1, 2,..., k 1}, så det er altid et lovligt index.

57 Hashing Ide: tildel hver ID et index i et array A hvor element gemmes. Hash-funktion h: h(id) = index i A Eksempel (antag ID er er heltal): h(id) k hvor k = A. h(x) = x mod k Bemærk at h(x) {0, 1, 2,..., k 1}, så det er altid et lovligt index. Med k = 41: h(46) = 5 (da = 46) h(12) = 12 (da = 12) h(100) = 18 (da = 100) h(479869) = 5 (da = )

58 Hashing Hvorfor ikke bare h(x) = x?

59 Hashing Hvorfor ikke bare h(x) = x? Eksempel: gem 5 CPR-numre.

60 Hashing Hvorfor ikke bare h(x) = x? Eksempel: gem 5 CPR-numre. CPR-nummre: {0, 1, 2, } Så størrelse af array A skal være for at gemme 5 tal. Spild af plads (10 10 bytes = 4 Gb).

61 Hashing Hvorfor ikke bare h(x) = x? Eksempel: gem 5 CPR-numre. CPR-nummre: {0, 1, 2, } Så størrelse af array A skal være for at gemme 5 tal. Spild af plads (10 10 bytes = 4 Gb). Ofte er nøgler heltal (32 eller 64 bits), dvs. har eller muligheder.

62 Kollisioner h(x) = x mod 41: h(46) = 5 (da = 46) h(12) = 12 (da = 12) h(100) = 18 (da = 100) h(479869) = 5 (da = )

63 Kollisioner h(x) = x mod 41: h(46) = 5 (da = 46) h(12) = 12 (da = 12) h(100) = 18 (da = 100) h(479869) = 5 (da = ) h(479869) h(46) k

64 Een løsning: Chaining Gem alle elementer for en array-celle i en lænket liste.

65 Een løsning: Chaining Gem alle elementer for en array-celle i en lænket liste. h(479869) h(46) k data data

66 Een løsning: Chaining Gem alle elementer for en array-celle i en lænket liste. h(479869) h(46) k data data De listen skal gennemløbes sekventielt, stiger tiden fra Θ(1) til Θ( liste ).

67 Een løsning: Chaining Gem alle elementer for en array-celle i en lænket liste. h(479869) h(46) k data data De listen skal gennemløbes sekventielt, stiger tiden fra Θ(1) til Θ( liste ). Vi vil derfor gerne have få kollisioner.

68 Kan kollisioner undgås? Afhænger af forholdet mellem hash-funktionen h og det konkrete datasæt som er gemt.

69 Kan kollisioner undgås? Afhænger af forholdet mellem hash-funktionen h og det konkrete datasæt som er gemt. I værste fald hash er alle n elementer til samme celle. Tid: Θ(n).

70 Kan kollisioner undgås? Afhænger af forholdet mellem hash-funktionen h og det konkrete datasæt som er gemt. I værste fald hash er alle n elementer til samme celle. Tid: Θ(n). Hvis n (antal elementer gemt) er større end k (array-størrelse), er der mindst een kollision

71 Kan kollisioner undgås? Afhænger af forholdet mellem hash-funktionen h og det konkrete datasæt som er gemt. I værste fald hash er alle n elementer til samme celle. Tid: Θ(n). Hvis n (antal elementer gemt) er større end k (array-størrelse), er der mindst een kollision (duehulsprincippet).

72 Kan kollisioner undgås? Afhænger af forholdet mellem hash-funktionen h og det konkrete datasæt som er gemt. I værste fald hash er alle n elementer til samme celle. Tid: Θ(n). Hvis n (antal elementer gemt) er større end k (array-størrelse), er der mindst een kollision (duehulsprincippet). Hvad hvis vi antager h smider tallene ind i celler tilfældigt? (Set over alle mulige datasæt kan man argumentere for at dette svarer til jævnest mulig fordeling.)

73 Fødselsdage og Hashing Situation: n tilfældige mennesker går ind i et rum. Spørgsmål: Er der nogen der har fødselsdag samme dato i året?

74 Fødselsdage og Hashing Situation: n tilfældige mennesker går ind i et rum. Spørgsmål: Er der nogen der har fødselsdag samme dato i året? At samle personer med tilfældige fødselsdage svarer til at indsætte tilfældigt i en tabel af størrelse 365 (= antal dage i et år).

75 Fødselsdagsparadokset Situation: n tilfældige mennesker går ind i et rum. Spørgsmål: Er der nogen der har fødselsdag samme dato i året?

76 Fødselsdagsparadokset Situation: n tilfældige mennesker går ind i et rum. Spørgsmål: Er der nogen der har fødselsdag samme dato i året? n Sandsynlighed for to med samme fødselsdag /365.??? 1/2.?? Spørgsmål: for hvilket n bliver sandsynligheden 1/2?

77 Fødselsdagsparadokset Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag)

78 Fødselsdagsparadokset Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag) Så vi kigger i stedet på P(ingen med samme fødseldag blandt de n første personer), og spørger hvornår den er mindre end 1/2.

79 Fødselsdagsparadokset Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag) Så vi kigger i stedet på P(ingen med samme fødseldag blandt de n første personer), og spørger hvornår den er mindre end 1/2. Ingen med samme fødseldag blandt de n første personer 1) Ingen med samme fødselsedag blandt de n 1 første personer OG 2) den n te persons fødselsdag falder ikke sammen med nogen af disses.

80 Fødselsdagsparadokset Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag) Så vi kigger i stedet på P(ingen med samme fødseldag blandt de n første personer), og spørger hvornår den er mindre end 1/2. Ingen med samme fødseldag blandt de n første personer 1) Ingen med samme fødselsedag blandt de n 1 første personer OG 2) den n te persons fødselsdag falder ikke sammen med nogen af disses. Hvis 1) gælder, er præcis n 1 forskellige datoer optaget når den n te person går ind i rummet. Hvis personerne antages at have tilfældige fødselsdage, er sandsynligheden for 2) derfor (365 (n 1))/365 når 1) gælder.

81 Fødselsdagsparadokset Hvis vi kalder P(ingen med samme fødseldag blandt de n første personer) for s n, kan vi se af ovenstående at 365 (n 1) s n = s n Da s 1 naturligvis er 1 (med kun een person i rummet er der ingen med samme fødselsdag), ser vi at: s 1 = 1 s 2 = = s 3 = = s 4 = =

82 Fødselsdagsparadokset Hvis man udregner disse udtryk (evt. via at skrive et program, der gør det), ses at s 22 = s 23 = Vi var interesserede i, for hvilket n det var mere sandsynligt at nogen havde samme fødselsdags end at ingen havde. Dvs. (se bemærkning på tidligere side) for hvilket n at s n 1/2 Af beregningen ovenfor kan vi nu svare: når n bliver 23. Af samme slags beregninger fås f.eks. s 50 =

83 Fødselsdagsparadokset og Hashing At samle personer med tilfældige fødselsdage svarer til at indsætte tilfældigt i en tabel af størrelse 365 (antal dage i et år). Ovenstående metode kan derfor bruges til at beregne sandsynligheden for, at kollisioner opstår ved indsættelse af n elementer i en hashtabel, hvis det antages at hashfunktionen tildeler tabel-indekser til elementer på en tilfældig måde. (Man skal blot udskifte 356 med den aktuelle tabelstørrelse.)

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

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

Sortering. Eksempel: De n tal i sorteret orden

Sortering. Eksempel: De n tal i sorteret orden Sortering 1 / 32 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 / 32 Sortering Input: Output: Eksempel: n tal De n tal i sorteret orden

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den. maj 00. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af opgaverne:

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

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

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

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet. Mandag den 22. marts 2004, kl Skriftlig Eksamen Algoritmer og Datastrukturer 1 Datalogisk Institut Aarhus Universitet Mandag den. marts 00, kl..00 11.00 Navn Gerth Stølting Brodal Årskort 1 Dette eksamenssæt består af en kombination

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

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

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

Eksamen i softwareudvikling

Eksamen i softwareudvikling Test af hashtabelmodul 8. april 2008 Introduktion Svært at overskue modulet (intet namespace eller opdeling i header og src ler). Brugt lang tid på at oversætte modulet. Masser af todos, memory leaks etc.

Læs mere

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 12/11-2002 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

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

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

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

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

Søgning og Sortering. Philip Bille

Søgning og Sortering. Philip Bille Søgning og Sortering Philip Bille Plan Søgning Linæer søgning Binær søgning Sortering Indsættelsesortering Flettesortering Søgning Søgning 1 4 7 12 16 18 25 28 31 33 36 42 45 47 50 1 2 3 4 5 6 7 8 9 10

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

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

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

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

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

Rolf Fagerberg. Forår 2013

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

Læs mere

Mm8: Hash tables, Hashing and binary search trees - November 7, 2008

Mm8: Hash tables, Hashing and binary search trees - November 7, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm8: Hash tables, Hashing and binary search trees - November 7, 2008 1 Algorithms and Architectures II 1. Introduction

Læs mere

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

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]

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

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

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille

Søgning og Sortering. Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering. Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering Flettesortering Philip Bille Søgning og Sortering Søgning Linæer søgning Binær søgning Sortering Indsættelsessortering

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

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

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

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. 2 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset

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

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

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm3: More about recurrences - October 10, 2008 1 Algorithms and Architectures II 1. Introduction to analysis and

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

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

dpersp Uge 40 - Øvelser Internetalgoritmer

dpersp Uge 40 - Øvelser Internetalgoritmer Øvelse 1 dpersp Uge 40 - Øvelser Internetalgoritmer (Øvelserne 4 og 6 er afleveringsopgaver) a) Hver gruppe får en terning af instruktoren. Udfør 100 skridt af nedenstående RandomWalk på grafen, som også

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

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

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

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

Databaser Obligatorisk opgave 2 Vejledende løsning

Databaser Obligatorisk opgave 2 Vejledende løsning University of Southern Denmark Department of Mathematics and Computer Science Databaser Obligatorisk opgave 2 Vejledende løsning Afleveres senest: Søndag d. 5. maj kl 23.59 Spilleregler Denne obligatoriske

Læs mere

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser.

Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. 25 Sortering III. Basale forudsætninger. Sortering ved fletning med tre bånd, i to faser. Sortering ved fletning, med fire bånd, i én fase (balanceret fletning). Polyfase fletning med tre bånd. Generaliseret

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

Algoritmer og invarianter

Algoritmer og invarianter Algoritmer og invarianter Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker. Iterative algoritmer Algoritmen er overordnet set een eller flere while eller for-løkker.

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

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 16/11-2004 Hashing og hashtabeller Teknik til at repræsentere mængder Konstant tid for finde og indsætte men ingen sortering af elementerne Specielt

Læs mere

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort

Sortering. Sortering ved fletning (merge-sort) Del-og-hersk. Merge-sort Sortering Sortering ved fletning (merge-sort) 7 2 9 4! 2 4 7 9 7 2! 2 7 9 4! 4 9 7! 7 2! 2 9! 9 4! 4 1 2 Del-og-hersk Merge-sort Del-og-hersk er et generelt paradigme til algoritmedesign Del: opdel input-data

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

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

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

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

Introduktion til datastrukturer

Introduktion til datastrukturer Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Philip Bille Introduktion til datastrukturer Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller

Læs mere

BRP Sortering og søgning. Hægtede lister

BRP Sortering og søgning. Hægtede lister BRP 18.10.2006 Sortering og søgning. Hægtede lister 1. Opgaver 2. Selection sort (udvælgelsessortering) 3. Kompleksitetsanalyse 4. Merge sort (flettesortering) 5. Binær søgning 6. Hægtede lister 7. Øvelser:

Læs mere

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538) Skriftlig Eksamen Algoritmer og sandsynlighed (DM538) Institut for Matematik & Datalogi Syddansk Universitet Fredag den 9 Januar 2015, kl. 10 14 Alle sædvanlige hjælpemidler(lærebøger, notater etc.) samt

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

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm2: Rekursive algoritmer og rekurrens - October 10, 2008 1 Algorithms and Architectures II 1. Introduction to analysis

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm2: Rekursive algoritmer og rekurrens - October 12, 2010 1 Algorithms and Architectures II 1. Introduction to analysis and design of algorithms

Læs mere

\ \ Computerens Anatomi / /

\ \ Computerens Anatomi / / HTX Roskilde - mat-it-prog, 1.4 \ \ Computerens Anatomi / / Introduktion En PC ( personlige computer ) eller computer er bygget op af forskellige komponenter. Vi vil hermed gennemgå størstedelen af computerens

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

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

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

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

Analyse af algoritmer

Analyse af algoritmer Analyse af algoritmer Analyse af algoritmer Køretid Pladsforbrug Asymptotisk notation O, Θ og Ω-notation. Eksperimentiel analyse af algoritmer Philip Bille Analyse af algoritmer Analyse af algoritmer Køretid

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

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

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer

Introduktion til datastrukturer. Introduktion til datastrukturer. Introduktion til datastrukturer. Datastrukturer Introduktion til datastrukturer Introduktion til datastrukturer Philip Bille Datastrukturer Datastruktur. Metode til at organise data så det kan søges i/tilgås/manipuleres effektivt. Mål. Hurtig Kompakt

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

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1

Københavns Universitet, Det naturvidenskabelige Fakultet. Afleveringsopgave 1 Københavns Universitet, Det naturvidenskabelige Fakultet 1 Lineær Algebra (LinAlg) Afleveringsopgave 1 Eventuelle besvarelser laves i grupper af - 3 personer og afleveres i to eksemplarer med 3 udfyldte

Læs mere

CPUer og maskinkode DM534. Rolf Fagerberg

CPUer og maskinkode DM534. Rolf Fagerberg CPUer og maskinkode DM534 Rolf Fagerberg CPUers opbygning En CPU er bygget op af elektriske kredsløb (jvf. sidste forelæsning), som kan manipulere bits. En CPU manipulerer flere bits ad gangen, deres antal

Læs mere

e-conomic modul til Magento

e-conomic modul til Magento Opsætningsguide til e-conomic modul til Magento Version 4.0.6 Magentomoduler ApS Myggenæsgade 3, 4. Lejl. 4 København kontakt@magentomoduler.dk Opsætning Opsætning af modulet kræver at du har adgang til

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

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

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

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet

Algoritmer og Datastrukturer 1. Gerth Stølting Brodal Aarhus Universitet Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Aarhus Universitet Kursusbeskrivelsen Kursusbeskrivelsen: Algoritmer og datastrukturer 1 Formål Deltagerne vil efter kurset have indsigt i algoritmer

Læs mere

Køreplan Matematik 1 - FORÅR 2005

Køreplan Matematik 1 - FORÅR 2005 Lineær algebra modulo n og kryptologi Køreplan 01005 Matematik 1 - FORÅR 2005 1 Introduktion Kryptologi er en ældgammel disciplin, som går flere tusinde år tilbage i tiden. Idag omfatter disciplinen mange

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

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal

Introduktion. Introduktion. Algoritmer og datastrukturer. Eksempel: Maksimalt tal Philip Bille Algoritmer og datastrukturer Algoritmisk problem. Præcist defineret relation mellem input og output. Algoritme. Metode til at løse et algoritmisk problem. Beskrevet i diskrete og entydige

Læs mere

Take-home Eksamen. DM505 Design og programmering af databaser. Syddansk Universitet Institut for Matematik og Datalogi

Take-home Eksamen. DM505 Design og programmering af databaser. Syddansk Universitet Institut for Matematik og Datalogi Syddansk Universitet Institut for Matematik og Datalogi DM505 Design og programmering af databaser Take-home Eksamen Udleveret: 4. maj 2013, kl. 10:00 Afleveres senest: 5. maj 2013 kl 10.00 Forår 2013

Læs mere

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid

Analyse af algoritmer. Analyse af algoritmer. Analyse af algoritmer. Køretid Philip Bille Mål. At bestemme og forudsige resourceforbrug og korrekthed af algoritmer Eks. Virker min algoritme til at beregne korteste veje i grafer? Hvor hurtigt kører min algoritme til at søge efter

Læs mere