Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Størrelse: px
Starte visningen fra side:

Download "Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt."

Transkript

1 Merging og hashing

2 Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester).

3 Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester).

4 Datastrukturer Datastruktur = metode til at gemme og hente data effektivt. Software opbygges ofte i moduler med klare grænseflader til hinanden (jvf. objekter i Java og keywords public, private,... ).

5 Datastrukturer Datastruktur = metode til at gemme og hente data effektivt. Software opbygges ofte i moduler med klare grænseflader til hinanden (jvf. objekter i Java og keywords public, private,... ). Datastrukturer kan beskrives på to niveuaer: Interface: Hvordan kan man tilgå data set udefra (hvad er de tilbudte metoder)? Implementation: (kodes)? Hvordan skal disse metoder implementeres

6 Datastrukturer Datastruktur = metode til at gemme og hente data effektivt. Software opbygges ofte i moduler med klare grænseflader til hinanden (jvf. objekter i Java og keywords public, private,... ). Datastrukturer kan beskrives på to niveuaer: Interface: Hvordan kan man tilgå data set udefra (hvad er de tilbudte metoder)? Implementation: (kodes)? Hvordan skal disse metoder implementeres Dagens emne: to udbredte grundtyper (blandt flere) af interfaces: Sekventiel tilgang Random access

7 Interface for sekventiel tilgang

8 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close()

9 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

10 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

11 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

12 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

13 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

14 Interface for sekventiel tilgang Metoder til læsning: readnext(), isendoffile(), open(), close() Typisk anvendelse: file = open(filename) while not file.isendoffile() x = file.readnext() (... gør noget med x... ) file.close()

15 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close()

16 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close()

17 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close() 4

18 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close() 4 6

19 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close() 4 6 1

20 Interface for sekventiel tilgang Metoder til skrivning: Metoder: writenext(), open(), close()

21 Interface for random access Tilgang via ID (også kaldet key, nøgle) for elementer. ID element data stored elements

22 Interface for random access Tilgang via ID (også kaldet key, nøgle) for elementer. ID element data stored elements Metoder: findelm(id) (returnerer element data) insertelm(id,data) deleteelm(id) open(), close()

23 Interface for random access findelm(id) insertelm(id,data) deleteelm(id) open(), close() Eksempler:

24 Interface for random access findelm(id) insertelm(id,data) deleteelm(id) open(), close() Eksempler: Databaser (ID = CPR, f.eks.)

25 Interface for random access findelm(id) insertelm(id,data) deleteelm(id) open(), close() Eksempler: Databaser (ID = CPR, f.eks.) Map interface i Java data = map.get(id); map.put(id,data); map.remove(id);

26 Interface for random access findelm(id) insertelm(id,data) deleteelm(id) open(), close() Eksempler: Databaser (ID = CPR, f.eks.) Map interface i Java data = map.get(id); map.put(id,data); map.remove(id); Arrays i Java kan ses som et specialtilfælde hvor ID = index data = myarray[7]; myarray[7] = data; myarray[7] = void

27 Dagens spørgsmål 1. Hvad kan det simple interface Sekventiel tilgang bruges til?

28 Dagens spørgsmål 1. Hvad kan det simple interface Sekventiel tilgang bruges til? 2. Hvordan implementeres det mere avancerede interface Random access?

29 Dagens spørgsmål 1. Hvad kan det simple interface Sekventiel tilgang bruges til? 2. Hvordan implementeres det mere avancerede interface Random access? Bemærk: Alle datakilder kan tilgås med sekventiel tilgang. (Og for nogle kan kun sekventiel tilgang laves effektivt.) Harddisk CD Bånd Streaming over net Data genereret on-the-fly af et andet program Data i et array

30 Hvad kan laves med sekventiel tilgang?

31 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning

32 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element

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

34 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Slå to sorterede lister sammen til én sorteret liste

35 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Slå to sorterede lister sammen til én sorteret liste Mergesort

36 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Slå to sorterede lister sammen til én sorteret liste Mergesort Generaliseret merge (eksempler senere)

37 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Slå to sorterede lister sammen til én sorteret liste Mergesort Generaliseret merge (eksempler senere) Bubblesort, selectionsort, insertionsort, quicksort (ikke pensum i DM534)

38 Hvad kan laves med sekventiel tilgang? F.eks.: Lineær søgning Find største element Find sum og antal af elementer (og dermed gennemsnit) Slå to sorterede lister sammen til én sorteret liste Mergesort Generaliseret merge (eksempler senere) Bubblesort, selectionsort, insertionsort, quicksort (ikke pensum i DM534) Morale: Man kan lave forbavsende mange algoritmer baseret på det simple interface Sekventiel tilgang.

39 Merge Mål: Slå to sorterede lister A og B sammen til én sorteret liste C. C A B

40 Merge Mål: Slå to sorterede lister A og B sammen til én sorteret liste C. C A B Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det mindste af disse over sidst i C.

41 Merge Mål: Slå to sorterede lister A og B sammen til én sorteret liste C. C A B Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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

42 Merge Mål: Slå to sorterede lister A og B sammen til én sorteret liste C. C A B Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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 Er det en korrekt metode (dvs. er C ved afslutning sorteret)?

43 Merge Mål: Slå to sorterede lister A og B sammen til én sorteret liste C. C A B Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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 Er det en korrekt metode (dvs. er C ved afslutning sorteret)? Korrekthed kan ses ved hjælp af en invariant.

44 Korrekthed og køretid for merge Mål: Slå to (stigende) sorterede lister A og B sammen til én sorteret liste C. Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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

45 Korrekthed og køretid for merge Mål: Slå to (stigende) sorterede lister A og B sammen til én sorteret liste C. Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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) kan 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.

46 Korrekthed og køretid for merge Mål: Slå to (stigende) sorterede lister A og B sammen til én sorteret liste C. Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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) kan ses ved flg. invariant: Tid: Nuværende version af A, B, C er sorterede, og ingen elementer i A, B er mindre end noget element i C.

47 Korrekthed og køretid for merge Mål: Slå to (stigende) sorterede lister A og B sammen til én sorteret liste C. Et merge-skridt: Sammenlign (nuværende) forreste element i A og B, og flyt det 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) kan 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 )

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

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

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

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

52 Mergesort Merge lister af længde 1 (disse er automatisk sorterede) parvis sammen til sorterede lister af længde 2 (= 2 1 ). Arbejdet svarer til at røre alle elementer én gang, dvs. er Θ(n). Derefter merge de sorterede lister af længde 2 til sorterede lister af længde 4 (= 2 2 ). Arbejdet svarer til at røre alle elementer én gang, dvs. er Θ(n). Derefter længde 4 til længde 8 (= 2 3 ),... Efter i skridt: længde = 2 i. Indtil længde n nås, dvs. alle elementer er i én sorteret liste. Dvs. vi har sorteret elementerne. Der er lavet log n runder når længde n nås [da 2 i = n i = 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.

53 Mergesort Figure: Andrew Myers, Cornell University

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

55 Generaliseret merge Under merge af to sorterede lister A og B vil elementer med samme værdi møde hinanden under merge-skridtene. Dette kan udnyttes: 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.

56 Generaliseret merge Under merge af to sorterede lister A og B vil elementer med samme værdi møde hinanden under merge-skridtene. Dette kan udnyttes: 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.

57 Hvordan laves interface Random access? Én metode: Hashing.

58 Hvordan laves interface Random access? Én metode: Hashing.?

59 Hvordan laves interface Random access? Én metode: Hashing.? Hash hacher [fransk] hakke i stykker.

60 Hashing Idé: tildel hver ID et index i et array A hvor element gemmes. Hash-funktion h:

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

62 Hashing Idé: 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.

63 Hashing Idé: 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 = )

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

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

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

67 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. Dvs. samme situation eller værre.

68 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 = )

69 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

70 Én løsning: Chaining Gem alle elementer for en array-celle i en lænket liste.

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

72 Én 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 ).

73 Én 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.

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

75 Kan kollisioner undgås? Det 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).

76 Kan kollisioner undgås? Det 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 én kollision

77 Kan kollisioner undgås? Det 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 én kollision (duehulsprincippet).

78 Kan kollisioner undgås? Det 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 én kollision (duehulsprincippet). Hvad hvis vi antager h indsætter tallene i celler tilfældigt? NB: Dette er ikke en brugbar hash-funktion, da vi ikke kan finde elementerne igen (vi kan ikke huske, hvor de er lagt). Men man kan argumentere for, at dette giver en jævnest mulig fordeling set over alle mulige datasæt. Det giver derfor en nedre grænse for, hvor godt en hash-funktion kan opføre sig. Vi studerer derfor nu denne situation.

79 Fødselsdage og hashing

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

81 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? Bemærk: 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) januar 2. januar 3. januar... Ovenfor er fire personer samlet (hvor ingen har fødselsdag samme dag). Dette er altså et eksempel på den (hashing) situation vi ønsker at studere.

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

83 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? n Sandsynlighed for (mindst) to med samme fødselsdag /365..? 1/ Spørgsmål : for hvilket n bliver sandsynligheden 1/2?

84 Fødselsdage og hashing Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag)

85 Fødselsdage og hashing Bemærk: P(nogen har samme fødseldag) = 1 - P(ingen har samme fødseldag) Så for at svare på spørgsmålet kigger vi 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.

86 Fødselsdage og hashing 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.

87 Fødselsdage og hashing 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. Situationen for n = 5 (dvs. 4 personer allerede til stede, uden kollision): ikke kollision kollision opst ar ikke kollision ikke kollision kollision opst ar kollision opst ar ikke kollision kollision opst ar...

88 Fødselsdage og hashing 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 s n = s n (n 1) 365 (Eftersom OG mellem uafhængige hændelser bliver til gange.) Da s 1 naturligvis er 1 (med kun én person i rummet er der helt sikkert ingen med samme fødselsdag), ser vi at: s 1 = 1 s 2 = s = = s 3 = s = = s 4 = s = =

89 Fødselsdagsparadokset Hvis man udregner disse udtryk (evt. via at skrive et program, der gør det), ses at s 22 = s 23 =

90 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. for hvilket n at s n 1/2. Af beregningen ovenfor får vi vores svar : allerede når n bliver 23.

91 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. for hvilket n at s n 1/2. Af beregningen ovenfor får vi vores svar : allerede når n bliver 23. Navnet fødselsdagsparadokset bruges, fordi dette er et mindre antal personer end de fleste intuitivt vil gætte på.

92 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. for hvilket n at s n 1/2. Af beregningen ovenfor får vi vores svar : allerede når n bliver 23. Navnet fødselsdagsparadokset bruges, fordi dette er et mindre antal personer end de fleste intuitivt vil gætte på. Af samme slags beregninger fås f.eks. s 50 = Dvs. at der er under 3% sandsynlighed for, at der i en gruppe af 50 personer ikke er to med samme fødselsdato.

93 Fødselsdagsparadokset og hashing Recall: 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 365 med den aktuelle tabelstørrelse.

94 Fødselsdagsparadokset og hashing Recall: 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 365 med den aktuelle tabelstørrelse. Morale: vi kan se af sådanne beregninger, at den første kollision opstår overraskende hurtigt, når der indsættes i hashtabeller. Det er derfor nødvendigt at have et system til at klare kollisioner (f.eks. de lænkede lister fra tidligere) for at kunne bruge hashing i praksis.

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

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

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

Tilgang til data. To udbredte metoder for at tilgå data: Sekventiel tilgang Random access: tilgang via ID (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 (key, nøgle) for dataelementer. API for sekventiel tilgang (API = Application

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 / 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. 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 1 / 36 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, 6, 9 Mange opgaver er hurtigere i sorteret information (tænk på ordbøger, telefonbøger,

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. 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) Datastruktur = data + operationer herpå

Datastrukturer (recap) Datastruktur = data + operationer herpå Dictionaries Datastrukturer (recap) Datastruktur = data + operationer herpå Datastrukturer (recap) Data: Datastruktur = data + operationer herpå En ID (nøgle) + associeret data (ofte underforstået, også

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

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

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 Mandag den 6. juni 2016, kl. 15:00 19:00 Besvarelsen skal afleveres elektronisk. Se

Læs mere

DM507 Algoritmer og datastrukturer

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

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

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 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

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

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

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

DM507 Algoritmer og datastrukturer

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

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

DM507 Algoritmer og datastrukturer

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

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

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

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen.

Invarianter. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af) dens udførelse. Udgør ofte kernen af ideen bag algoritmen. Invariant: Et forhold, som vedligeholdes af algoritmen gennem (dele af)

Læs mere

Divide-and-Conquer algoritmer

Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Divide-and-Conquer algoritmer Det samme som rekursive algoritmer. 1. Opdel problem i mindre delproblemer (af samme type). 2. Løs delproblemerne ved rekursion (dvs. kald algoritmen

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

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

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 23. maj 20. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 0205. Varighed: 4 timer Tilladte hjælpemidler: Alle skriftlige hjælpemidler.

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

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

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

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

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 26. maj 2009. Kursusnavn Algoritmik og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning

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

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

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

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

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

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

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

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

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

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

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

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

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

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

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

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

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

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 2 2 n 1/n (logn) n. n 2 Side af sider Opgave (%) Ja Nej n er O(n n)? n er O(n+n )? ( n ) er O( n )? logn er O(n / )? n +n er O(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn)

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: 5n 4. logn. n 4n 5 n/logn. n n/logn 5n Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n er O(n 7 )? (logn) er O( n)? n(logn) er O(n)? n er O( n )? n er Ω(n )? Opgave (%) Opskriv følgende funktioner efter stigende orden med

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen (bemærk at log n betegner totals logaritmen): n 2 (log n) 2 2. Eksamen august Algoritmer og Datastrukturer (-ordning) Side af sider Opgave (%) n + n er O(n )? n / er O(n / )? n er O(n log n)? n er O((log n) )? n er Ω(n )? Ja Nej Opgave (%) Opskriv følgende funktioner

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

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

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 2 sider Danmarks Tekniske Universitet Skriftlig prøve, den 2. maj 200. Kursusnavn Algoritmer og datastrukturer I Kursus nr. 0205. Tilladte hjælpemidler: Alle skriftlige hjælpemidler. Vægtning af

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

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

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

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

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

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

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

Analyse af ombytningspuslespil

Analyse af ombytningspuslespil Analyse af ombytningspuslespil 1 / 7 Konkret eksempel på algoritmeanalyse Prøv ombytningspuslespillet på kurset webside. Spørgsmål: Hvilken bedste (laveste) score kan du opnå på 5 forsøg? Hvilken algoritme

Læs mere

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 3/2. n logn (3/2) n. 2 3logn (3/2) n Side af 0 sider Opgave (4%) Ja Nej n er O(n / )? n +n er O(n )? (logn) er O( logn )? n er O()? /n er O(logn)? Opgave (4%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: logn

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

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008

Mm7: A little bit more about sorting - and more times for exercises - November 4, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm: A little bit more about sorting - and more times for exercises - November 4, 2008 1 Algorithms and Architectures

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): 12 (tolv) Eksamensdag: Torsdag den 26. marts 2009, kl.

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: n+logn logn (logn) 7 (3/2) n

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n+logn logn (logn) 7 (3/2) n Side af sider Opgave (%) Ja Nej n er O( n )? n er O(log n)? n er O(n )? n + er O(0n)? nlogn er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: nlogn logn

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: n 7 n 1 7 7/n. 7nlogn. 7n 7nlogn n7 Side af 0 sider Opgave (%) Ja Nej /n er O(n )? n (logn) er O(n 3 )? n + n er O(3 n )? n er O((logn) 3 )? nlogn er Ω(n)? Opgave (%) Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen:

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

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox Martin Olsen DM0 Projekt 0 Del I. marts 0 FOTO: Colourbox Indhold Indledning... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Opgave... Kildekode til SimpleInv.java... Kildekode til MergeSort.java...

Læs mere

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

Prioritetskøer. Prioritetskøer. Prioritetskøer. Prioritetskøer Philip Bille. Vedligehold en dynamisk mængde S af elementer. Hver element x er tilknyttet en nøgle x.key og satellitdata x.data. MAX(): returner element med største nøgle. EXTRACTMAX(): returner og fjern

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

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

Opskriv følgende funktioner efter stigende orden med hensyn til O-notationen: (logn) 7 n 1/2 2 n /n 3 2logn n 2 /logn Eksamen august 0 Algoritmer og Datastrukturer (00-ordning) Side af sider Opgave (%) n er Ω(n)? n er O( n )? n er O(8logn)? + er O(n)? n er O(n / )? Opgave (%) Opskriv følgende funktioner efter stigende

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

Perspektiverende Datalogi Internetalgoritmer. MapReduce. Gerth Stølting Brodal

Perspektiverende Datalogi Internetalgoritmer. MapReduce. Gerth Stølting Brodal Perspektiverende Datalogi Internetalgoritmer MapReduce Gerth Stølting Brodal MapReduce Implementationer Dean, F. and Ghemawat, S. (2004) MapReduce: Simplified Data Processing on Large Clusters. In: Sixth

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

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

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3 02105 Eksamensnoter Lasse Herskind S153746 12. maj 2017 Indhold 1 Sortering 3 2 Analyse af algoritme 4 2.1 Køretid.......................................... 4 2.2 Pladsforbrug.......................................

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

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

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

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

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

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

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