Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.
|
|
- Kurt Lund
- 4 år siden
- Visninger:
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.
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 mereTilgang 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 mereTilgang 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 mereMerging 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 mereSortering. 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 mereSortering. 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 mereSortering 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 mereSortering 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 mereSortering. 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 mereDatastrukturer (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 mereDatastrukturer (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 mereDatastrukturer (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 mereSkriftlig 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 mereSkriftlig 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 mereDM507 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 mereHashing. 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 mereHashing. 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 mereDM507 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 mereDM507 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 mereHashing. 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 mereDM507 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 mereDM507 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 mereDM507 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 mereDM507 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 mereDanmarks 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 mere1. 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 mereInvarianter. 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 mereDivide-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 mereDM507 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 mereDivide-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 mereDM507 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 mereDM507 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 mereGrå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 mereDanmarks 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 mereDanmarks 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 mereGrå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 mereDanmarks 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 mereDM507 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 mereDM507 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 mereDanmarks 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 mereRolf 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 mereSkriftlig 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 mereRolf 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 mereGrå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 mereDanmarks 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 mereSortering. 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 mereSkriftlig 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 mere19 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 mereSkriftlig 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 mereSkriftlig 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 mereSø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 mereDanmarks 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 mereDanmarks 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 mereSø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 mereHashing 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 mereDatastrukturer. 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 mereEt 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 mereDivide-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 mereOpgave 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 mereOpskriv 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 mereAlgoritmer 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 mereAlgoritmer 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 mereOpskriv 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 mereOpskriv 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 mereDanmarks 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 mereBRP 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 mereDivide-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 mereDanmarks 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 mereAbstrakte 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 mereDanmarks 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 mereEksamen 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 mereGrå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 mereOpskriv 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 mereIntroduktion 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 mereAnalyse 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 mereAnalyse 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 mereOpskriv 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 mereKorteste 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 mereMm7: 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 mereDATALOGISK 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 mereAlgorithms 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 mereOpskriv 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 mereSø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 mereOpskriv 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 mereHashing 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 mereMartin 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 merePrioritetskø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 mereDanmarks 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 mereOpskriv 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 mereKorteste 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 merePerspektiverende 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 merePrioritetskø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 mereDanmarks 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 mere02105 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 mereDanmarks 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 mereSortering 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 mereAlgoritmer 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 mereIntroduktion 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 mereOpskriv 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 mereDatastrukturer. 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