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

Størrelse: px
Starte visningen fra side:

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

Transkript

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

2 Algorithms and Architectures II 1. Introduction to analysis and design of algorithms (RLO - 11/10) 2. Recursive algorithms and recurrences (RLO - 12/10) 3. Implementation of recursive algorithms (Self study - 25/10) 4. Greedy algorithms, backtracking and recurrences (Self study - 26/10) 5. Sorting algorithms (RLO - 1/11) 6. Implementation of sorting algorithms (Self study - 2/11) 7. Counting, probabilities and randomized algorithms (RLO - 8/11) 8. Hash tables and Hashing (RLO - 10/11) 9. Binary search trees, red-black trees and string matching (Self study - 15/11) 10. Course round-up (RLO - 16/11) 2

3 Dagsorden Introduktion og baggrund Direkte adressering Hashing konceptet Kollision og kollisionsundvigelse af hash værdier Hash funktioner Divisions og multiplikations metoder Universel hashing Åben adressering Lineær, kvadratisk probing Dobbelt hashing Perfekt hashing Opsummering og konklusion Opgaver 3

4 Introduktion Context Management Framework Søgning efter distribuerede information en nødvendighed for funktionaliteten af et CMF Context Access LAnguage (CALA) blev designet til formålet 4

5 Informations modellering Hver context information er udstyret med Identifier Type List af attributter, der hver har Et navn En værdi 1 ID: BluetoohScanner1 Type: BluetoohScanner Attributes: seesbtaddress: 00:1E:4C:FF:E9:D6 haslocation: Position1 BluetoothScanner1 BTDevice-001E4CFFE9D6 2 ID: BTDevice-001E4CFFE9D6 Type: BluetoothDevice Attributes: isseenby: bluetoothscanner1 hasbtaddr: 00:1E:4C:FF:E9:D6 haslocation: Position1 5

6 Eksempel på CALA query <?xml version="1.0" encoding="utf-8"?> <methodcall> <methodname>cmn.request</methodname> <params> <param> <value> <cala xmlns=" > <query> <entityidentifierselector> <hasidentifier>display1</hasidentifier> <entitytype>publicdisplay</entitytype> <attributename>nearbyperson</attributename> </entityidentifierselector> <scope> <networkscope>node</networkscope> </scope> </query> </cala> </value> </param> </params> </methodcall> XML-RPC container Selector based on ID Query only the targeted Agent XML-RPC container 6

7 Krav og udfordringer til søgningen Somme tider har man brug for informationer Af type X og vi kender ikke/er ligeglade med identifiers, men med alle attributter Information med Identifier Z og med attribut G og H Af type X og med Identifier Z med attribut H Hvordan kan man lave en effektiv søgning der samtidig kan kombinere/tillade ovenstående typer forespørgsel? Svar: Ved hashing, men hvordan? Ved registrering af data, indlægges forskellige kombinationer af Type, Id og attributter i en hash tabel, hvorefter hash værdien eventuelt distribueres. I og med Hashing tillader søgning på O(1) tid, kan queries håndteres på O(1) tid, selvom disse kan kombineres på mange forskellige måder. Prisen er øget pladsforbrug da hash nøgler skal gemmes, samt risiko for kollision. 7

8 Direkte adresserings tabeller Direkte adressering er simpelt Search(T, k) : return T[k] Insert(T, x) : T[key[x]] = x Delete(T, x) : T[key[x]] = NIL og tager O(1) tid U: Sæt af mulige keys K: Sæt af anvendte nøgler T / / / / / / Key Data 2 X 3 Y 5 Z 8 W 8

9 Et eksempel på hash tabel Input John Schmidt Nøgle Indeks 0 1 Nøgle - værdi par Lisa Schmidt Lisa Schmidt John Schmidt Sam Doe 998 Sam Doe

10 Hash tabeller Ideen er at benytte en funktion til at mappe nøgler til et sted i tabellen Et element med nøgle k, hasher til slot h(k) Et problem er dog at nøgler kan kollidere T 0 h(k 1 ) h(k 4 ) U: Sæt af mulige keys h(k 2 ) = h(k 5 )!! k 1 k 4 h(k 3 ) k5 k 2 k 3 K: Sæt af anvendte nøgler m

11 Kollisions undvigelse ved chaining - princip Kollisioner kan undgås med sammenkædninger af keys T n elements k 1 k 4 k 6 / U: Sæt af mulige keys k 6 k 4 k 1 k9 k 5 k 2 k 3 k 7 k 8 K: Sæt af anvendte nøgler k 2 k 5 k 9 / k 3 / k 7 k 8 / m slots 11

12 Kollisions undvigelse ved chaining - operationer Chained hash insert(t, x) indsæt x ved slutningen af listen T[h(key[x])] k 1 k 4 k 6 / Tager O(1) tid, medmindre der kontrolleres for redundante elementer, for hvilket der skal udføres et søge kald først Chained hash delete(t, x) Sletning af x fra listen T[h(key[x])] Tager O(1) tid hvis dobbelt linked, ellers tager den samme tid som søgning 12

13 Load faktor for chained hash tabeller Definer load faktoren = n/m, dvs. et udtryk for hvor fyldt hash tabellen er på et givet tidspunkt m slots og n elementer per slot Chained hash search(t, k) Søgning efter element med nøgle k i liste T[h(k)] Værste søgetid er givet ved E[X ij ]=1+ ( /2)(n-1)/n (hvorfor tager vi lige på tavlen) Det kan også udtrykkes som (1+ ) Ved n = O(m) har vi = O(m)/m = O(1), og dermed hvis tabellens størrelse er propertional med antallet af elementer i tabellen, er søgetiden O(1), i.e. tager i gennemsnit konstant tid 13

14 Praktisk eksempel med chaining Input John Schmidt Nøgle Indeks 0 1 Nøgle - værdi par Lisa Schmidt Lisa Schmidt Sandra Dee Sam Doe John Schmidt Sandra Dee Sam Doe

15 Dagsorden Introduktion og baggrund Direkte adressering Hashing konceptet Kollision og kollisionsundvigelse af hash værdier Hash funktioner Divisions og multiplikations metoder Universel hashing Åben adressering Lineær, kvadratisk probing Dobbelt hashing Perfekt hashing Opsummering og konklusion Opgaver 15

16 Hash funktioner Hvad er en god hash funktion? og nej, det er ikke en der ryger. En god hash funktion er karakteriseret ved at give nøglerne lige sandsynlighed for at hashe til en af de m slots i tabellen Vi får en tendens til at have meget korte kædede lister for at undgå kollision Omvendt har en dårlig hash funktion en tendens til at hashe til samme område i tabellen. Vi får en tendens til meget lange kædede lister for at undgå kollision Der findes flere standard metoder/hash funktioner som vi gennemgår efterfølgende Bemærk: de fleste hash funktioner anvender naturlige tal, dvs. N={0, 1, 2, } Evt. kan strenge laves om til naturlige tal vha. tværprodukt af ascii værdier 16

17 Simpelt eksempel på hash funktion Overvej CALA forespørgslen <entityidentifierselector> <hasidentifier>display1</hasidentifier> <entitytype>publicdisplay</entitytype> <attributename>nearbyperson</attributename> </entityidentifierselector> Vi kan skabe strengen Display1.PublicDisplay.nearbyPerson ved at fortolke XML stykket fra CALA querien Hvert bogstav tilsvarer en ASCII værdi, f.eks. D = 68, i = 105, s = 115 osv. En nøgle kunne dannes ved f.eks. Summen af de enkelte bogstaver (eller hvert tredje) Produktet af de enkelte bogstaver XOR af alle tal eller andre metoder Problemet er at nogle metoder er svagere end andre, så hvordan får vi en god metode, og hvad karakteriserer en god metode? 17

18 Divisionsmetoden Ved divisions metoden mapper vi nøglen k ind i en af de m slots ved at tage rest delen af divisionen mellem k og m, dvs. h(k) = k mod m f.eks. med m = 12, er h(96) = 96 mod 12 = 0 h(97) = 100 mod 12 = 1 h(98) = 101 mod 12 = 2 h(108) = 108 mod 12 = 0 h(109) = 109 mod 12 = 1 h(110) = 110 mod 12 = 2 Bemærk det cykliske i dette eksempel!! 18

19 Divisionsmetoden #2 Ved divisions metoden prøver vi at undgå bestemte værdier af m m bør ikke være en toer potens, således m = 2 p, fordi h(k) i det tilfælde blot vil være de mindste bits af k. Dermed er antallet af effektive talværdier for k reduceret væsentlig. En bedre værdi vil være et tal der ikke er tæt på denne. F.eks. n = 2000 karakter strenge med hver karakter på 8 bit er et valg på m = 701 elementer et ok valg. Det er et primtal tæt på 2000/3 og ikke tæt på nogen værdi af 2 p. h(k) = k mod

20 Multiplikationsmetoden Multiplikationsmetoden baserer sig på først at gange nøglen k med en konstant A i området 0 < A < 1 og derefter tage divisions resten af ka : h(k) = m(ka mod 1), med ka mod 1 = ka - ka En fordel er at værdien m ikke er kritisk for at opnå en god hash funktion Typisk valg er m = 2 p for et givet heltal p Antag w er ord størrelsen på en given maskine, og k bit passer ind i et ord Vi begrænser A til at være på formen s/2 w med s værende et heltal i området 0 < s < 2 w 20

21 Multiplikationsmetoden w bits k X S = A 2 w r 1 r 0 p bits h(k) Den ønskede p længde hash værdi, findes i øverst betydende bit af r 0 Metoden virker for alle gyldige A, men nogle værdier ser ud til at virke bedre end andre, [Knuth] foreslår at A ( 5-1)/

22 Universel hashing H: Sæt af mulige hash funktioner h 1 h 2 h3 h 4 h5 h 6 Et problem er at suspekte typer kan vælge n nøgler der tvinger søge tiden ud i værste tilfælde (n) Universal hashing går ud på at vælge en tilfældig hash funktion fra en gruppe af snedig designet hash funktioner H. k 1 Tilfældige hash funktioner sikrer at vi ikke ender i værste tilfælde Hashing kollision undåes ved chaining k 1 U: Sæt af mulige keys k 6 k9 k 4 k 7 k 8 K: Sæt af anvendte nøgler k 5 k 2 k 3 k 2 k 3 / k 7 22

23 Design af universelle hash funktioner Vælg et primtal p stort nok til at enhver mulig nøgle k er i området 0 til p - 1 Lad Z p være sættet {0, 1,., p - 1} Lad Z p * være sættet {1, 2,, p - 1} Vi antager samtidig at Antallet af mulige nøgler er større en slots i tabellen, p > m Vi definerer en hash funktion h a,b, med a Z p og b Z p * h a,b (k) = ((ak+b) mod p) mod m F.eks. med p = 17 og m =6, vil h 3,4 (8) = 5 Familien af sådanne funktioner betegner vi H p,m = {h a,b : a Z p og b Z p* } og kan vises at være universelle 23

24 Dagsorden Introduktion og baggrund Direkte adressering Hashing konceptet Kollision og kollisionsundvigelse af hash værdier Hash funktioner Divisions og multiplikations metoder Universel hashing Åben adressering Lineær, kvadratisk probing Dobbelt hashing Perfekt hashing Opsummering og konklusion Opgaver 24

25 Åben adressering En anden måde at overkomme hash kollisioner på kaldes åben adressering Ved åben adressering er elementer gemt i selve hash tabellen En par ulemper er dog At hash tabellen nemt kan fyldes op -> hash table overflow At sletning ikke er en simpel opgave fordi et slettet og tomt element er umiddelbare ens. En løsning er at indsætte gravsten på de slettede poster Input John Schmidt Nøgle Indeks 0 1 Nøgle - værdi par - - Lisa Schmidt Lisa Schmidt 872 Probing efter næste element John Schmidt Sandra Doe Sandra Doe Sam Doe Sam Doe

26 Lineær probing Givet en ordinær hash funktion h : U {0, 1,, m - 1}, i bogen også kaldet auxillery hash funktion, kan den lineære probing skrives som h(k, i) =(h (k) + i) mod m Givet en nøgle k, er det første slot undersøgt T[h (k)] Dernæst er slot T[h (k) + 1], T[h (k) + 2],, T[m - 1] undersøgt Metoden er nem at implementere men lider af såkaldt Primary Clustering Lange køer af udfyldte slots dannes over tid, hvilket forøger den gennemsnitlige søge tid Clusters opstår fordi et tomt slot, efterfulgt af i udfyldte slot bliver udfyldt med sandsynligheden (i + 1)/m 26

27 Kvadratisk probing Kvadratisk probing baserer sig på en hash funktion af typen h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m Initierende hash værdi efterprøvet er således T[h (k)] og efterfølgende T[h (k) + f(i, i 2 )] Denne virker bedre end lineær probing, dog virker den ikke godt hvis to nøgler har samme initierende hash (samme problem har lineær probing dog også) h(k 1,0) = h(k 2, 0) => h(k 1, 1) = h(k 2, 1) lider den af Secundary Clustering der er som Primary Clustering blot tendensen er svagere 27

28 Dobbelt hashing Dobbelt hashing har formen h(k, i) = (h 1 (k) + ih 2 (k)) mod m Den initierende aflæste værdi findes i T[h 1 (k)] og efterfølgende værdier er offsettet med i h 2 (k) mod m Dobbelt hashing er bedre end de andre metoder i den forstand at der dannes (m 2 ) probe sekvenser og ikke (m) sekvenser som for den lineære/kvadratiske metode Hvert hash par (h 1 (k), h 2 (k)) leder til en forskellig probe sekvens 28

29 Eksempel med dobbelt hashing h(k, i) = (h 1 (k) + i h 2 (k)) mod 13 h 1 (k) = k mod 13 h 2 (k) = k mod Først h(79, 0) = 1 Hvad med h(69, 0) = 4 Og med h(72, 0) = 7 Med h(50, 0) = 11 Nu bliver det tricky: h(98, 0) = 7 Er optaget, så vi prøver h(98, 1) = 4 98 mod 13 = 7, 98 mod 11 = 10, 17 mod 13 = 4 (7+10) mod 13 = 4, nej dur ikke (7+20) mod 13 = 1, nej dur ikke (7+30) mod 13 = 11, nej dur ikke (7+40) mod 13 = 8, ja der er plads Og h(14, 0) = 1 Hmm.. h(14, 1) =

30 Et par tip til design af dobbelt hash funktioner Et godt valg af h 2 (k) kræver at værdierne dannet er relative primes i forhold til hash tabellens størrelse Relative primes: to heltal der ikke deler nogen fælles positiv divisor, med undtagelsen af tallet 1 En måde at opnå dette er at lade m optræde som en toer potens, dvs. m = 2 p og sikre h 2 (k) altid returnerer et ulige tal En anden måde at vælge sine dobbelt funktioner er h 1 (k) = k mod m h 2 (k) = 1 + (k mod m ) Her er m et primtal og m er et lidt mindre tal, f.eks. m = m

31 Dobbelt hashing kompleksitet Man kan vise at vores forventet antal af forsøg ved et mislykket søgning givet ved: E[X] = 1/(1- ) og at det forventede antal forsøg for en succesfuld søgning er E[Y] = (1/ )ln(1/(1- )) 31

32 Analyse af dobbelt hashing Med åben adressering har vi højest et element per slot i hash tabellen, dvs. at n m, og dermed 1 (husk at = n/m) Lad os definere X til at være antallet af forsøg vi gør os ved en mislykket søgning, og Y til at være antallet af forsøg vi gør os ved en succesfuld søgning Resten tager vi på tavlen Og dermed er vores forventet antal af forsøg ved et mislykket søgning givet ved: E[X] = 1/(1- ) Ved lignende, men lidt mere omfattende bevisførelse kan vi vise at det forventede antal forsøg for en succesfuld søgning er E[Y] = (1/ )ln(1/(1- )) 32

33 Perfekt hashing En yderligere metode er anvendelse af statiske nøgler Når nøglerne en gang er gemt i tabellen, ændres de ikke! Eksempler Reserverede ord i et programmeringssprog Filnavne på en CD - ROM Hvis kravet om hukommelse er O(1) anvender vi også perfekt hashing Den basal ide er at anvende et to-niveau hashing system med anvendelse af universel hashing på hvert niveau Første niveau er essentiel hashing med chaining Andet niveau er en række-individuel hash funktion 33

34 / / / / / Eksempel T m m / / / / / 75 / m m 7 a 0 a 2 a 5 a / / / / / / / Perfekt hashing til at gemme sættet K={10, 22, 37, 40, 52, 60, 70, 72, 75} Ydre hash funktion har a = 3; b = 42; p = 101 og m = 9 b 0 b 2 b 5 b 7 s 0 s 5 Generel hash funktion ((ak + b) mod p) mod m s 2 s 7 / / / / 37 / 34

35 Valg af hash funktioner der garanterer kollisionsfri hashing Ved forsigtig valg af hash funktioner, kan vi garantere der ikke er nogen kollisioner på andet niveau, hvilket er hvad vi har brug for! Vi benytter os af en hashfunktion fra H, og hvis vi vælger m = n 2, så kan vi vise at der er stor sandsynlighed for at undgå kollision (den er mindre en 50%) Man skal måske prøve et par gange, men husk at K er statisk! For primær hash tabel benytter vi af de universelle hashfunktioner H p,m, med p værende et primtal større end den største nøgle For den sekundære hash tabel benytter vi en af de universelle hashfunktioner H p,mj Med n j = m j = 1 har vi ikke brug for slot j, og vi kan derfor benytte a = b = 0 35

36 Surprice. Geohashing! 36

37 Dagsorden Introduktion og baggrund Direkte adressering Hashing konceptet Kollision og kollisionsundvigelse af hash værdier Hash funktioner Divisions og multiplikations metoder Universel hashing Åben adressering Lineær, kvadratisk probing Dobbelt hashing Perfekt hashing Opsummering og konklusion Opgaver 37

38 Opsummering og konklusion Hash tabeller er en smart måde at organisere sin data på i hukommelsen, med en hurtig søgetid O(1) Kræver relativ lidt hukommelse i forhold til direkte adressering Hash tabeller kræver hash funktioner, hvis primære formål er at mappe nøgler til tabelelementer En god hash funktion leder til få kollisioner Nogle metoder at overkomme kollisioner på er ved Chaining: anvendelse af linked lister på bekostning af søgetid, associeret til de enkelte tilgange i hash tabellen Åben adressering: der baserer sig på at holde data indenfor hash tabellen. Her bruger vi så probing til tilgang af kollideret data. Lineær og kvadratisk probing giver tendens til gruppering af data, men er anvendelige Dobbelt hashing er en god måde at overkomme problemer med gruppering af data Perfekt hashing kan anvendes med fordel når vi har med statiske nøglesæt at gøre 38

39 Dagsorden Introduktion og baggrund Direkte adressering Hashing konceptet Kollision og kollisionsundvigelse af hash værdier Hash funktioner Divisions og multiplikations metoder Universel hashing Åben adressering Lineær, kvadratisk probing Dobbelt hashing Perfekt hashing Opsummering og konklusion Opgaver 39

40 Opgaver Opgave Opgave , Opgave Implementer en hash tabel der anvender åben adressering, og som kan håndtere HASH - DELETE korrekt, samt sikre at HASH - INSERT håndtere slettet data korrekt. Se evt. opgave

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

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

Læs mere

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

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

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

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

Læs mere

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

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

Læs mere

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

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

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

Læs mere

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

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

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

Læs mere

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

Grundlæggende Algoritmer og Datastrukturer. Hashing [CLRS, kapitel ]

Grundlæggende Algoritmer og Datastrukturer. Hashing [CLRS, kapitel ] Grundlæggende Algoritmer og Datastrukturer Hashing [CLRS, kapitel 11.1-11.4] hash (Engelsk-Dansk) 1. (sb) (ret med kød og kartofler) biksemad (fx a meat and potato hash); (fig.) kludder; noget værre rod;

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

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

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet 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

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

Gerth Stølting Brodal. Hashing [CLRS, kapitel ]

Gerth Stølting Brodal. Hashing [CLRS, kapitel ] Algoritmer og Datastrukturer 1 Gerth Stølting Brodal Hashing [CLRS, kapitel 11.1-11.4] hash (Engelsk-Dansk) 1. (sb) (ret med kød og kartofler) biksemad (fx a meat and potato hash); (fig.) kludder; noget

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

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

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

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

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

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

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing 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). Mål

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

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

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

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

Læs mere

Merging og Hashing (del I)

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

Læs mere

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO) Mm1: Introduction to analysis and design of algorithms - October 11, 2010 1 Algorithms and Architectures II 1. Introduction to analysis and

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

Introduktion til datastrukturer. Philip Bille

Introduktion til datastrukturer. Philip Bille Introduktion til datastrukturer Philip Bille Plan Datastrukturer Stakke og køer Hægtede lister Dynamiske tabeller Datastrukturer Datastrukturer Datastruktur: Metode til at organise data så det kan søges

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet Eksamen 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

Mm1: Introduction to analysis and design of algorithms - October 7, 2008

Mm1: Introduction to analysis and design of algorithms - October 7, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm1: Introduction to analysis and design of algorithms - October 7, 2008 Algorithms and Architectures II 1. Introduction

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

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009

Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 23, 2009 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jens Myrup Pedersen (JMP) Mm4: Sorting algorithms - October 3, 009 Algorithms and Architectures II. Introduction to analysis and design of

Læs mere

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Torsdag den 21. marts 2013,

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning)

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN. Grundkurser i Datalogi. Algoritmer og Datastrukturer 1 (2003-ordning) INSTITUT FOR DATALOGI, AARHUS UNIVERSITET EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 10. august 2012, kl. 9.00-11.00 Eksamenslokale: Finlandsgade

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet 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

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

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet 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

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

INSTITUT FOR DATALOGI, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi INSTITUT FOR DATALOGI, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 12 (tolv) Eksamensdag: Fredag den 16. august 2013,

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: Onsdag den 31. marts 2010, kl.

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af 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

Grundlæggende køretidsanalyse af algoritmer

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

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Tirsdag den 27. maj 2003, kl. 9.00 3.00 Opgave (25%) For konstanten π = 3.4592... gælder identiteten π 2 6 =

Læs mere

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

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

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

Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012. May 15, 2012 Algoritmer og datastrukturer Course No. 02105 Cheat Sheet 2012 May 15, 2012 1 CONTENTS 2012 CONTENTS Contents 1 Kompleksitet 3 1.1 Køretid................................................ 3 1.2 Asymptotisk

Læs mere

Hashing og hashtabeller

Hashing og hashtabeller Datastrukturer & Algoritmer, Datalogi C Forelæsning 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

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 11. august 2011,

Læs mere

Mm5: Counting, probabilities and randomized algorithms - Oktober 24, 2008

Mm5: Counting, probabilities and randomized algorithms - Oktober 24, 2008 Algorithms and Architectures I Rasmus Løvenstein Olsen (RLO), Jimmy Jessen Nielsen (JJE) Mm5: Counting, probabilities and randomized algorithms - Oktober 24, 2008 1 Algorithms and Architectures II 1. Introduction

Læs mere

Mm4: Greedy algorithms, backtracking and more recurrences - October 21, 2008

Mm4: Greedy algorithms, backtracking and more recurrences - October 21, 2008 Algorithms and Architectures I Rasmus Løvenstein lsen (RL), Jimmy Jessen Nielsen (JJE) Mm4: Greedy algorithms, backtracking and more recurrences - ctober 21, 2008 Algorithms and Architectures II 1. Introduction

Læs mere

Danmarks Tekniske Universitet

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

Læs mere

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

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

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

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

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

Database optimering - Indeks

Database optimering - Indeks Database optimering - Indeks Alle kender til dette irritations moment, hvor programmet man sidder og arbejder med, bare ikke er hurtigt nok. Selvom det kun drejer sig om få sekunder man sidder og venter,

Læs mere

Køreplan Matematik 1 - FORÅR 2005

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

Læs mere

Introduktion til SQL queries

Introduktion til SQL queries Denne guide er oprindeligt udgivet på Eksperten.dk Introduktion til SQL queries Denne artikel beskriver nogle forskellige muligheder i SQL queries. Eksemplerne skulle gerne være standard SQL og virke i

Læs mere

Selection Udvælgelse. For at markere mere end en polygon, holdes Ctrl samtidig. Klik på næste polygon. Gentag for i alt 5 polygoner.

Selection Udvælgelse. For at markere mere end en polygon, holdes Ctrl samtidig. Klik på næste polygon. Gentag for i alt 5 polygoner. Selection Udvælgelse Der er flere metoder til at udvælge data i GIS. I de følgende opgaver arbejdes med 3 kategorier: Select med mus Select med udtryk Select med Spatial Query Åbn filen Markblok.shp fra

Læs mere

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen

Sekvensafstand DM34 - Eksamensopgave. Jacob Aae Mikkelsen Sekvensafstand DM34 - Eksamensopgave Jacob Aae Mikkelsen 19 10 76 kokken@grydeske.dk 27. maj 2005 Resumé Rapporten her beskriver tre forskellige rekursive metoder til at sammenligne tekst strenge med.

Læs mere

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Skriftlig Eksamen Algoritmer og Datastrukturer (dads) Datalogisk Institut Aarhus Universitet Mandag den 27. maj 2002, kl. 9.00 13.00 Opgave 1 (25%) Denne opgave handler om multiplikation af positive heltal.

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

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

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

Danmarks Tekniske Universitet

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

Læs mere

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

Talteoriopgaver Træningsophold ved Sorø Akademi 2007

Talteoriopgaver Træningsophold ved Sorø Akademi 2007 Talteoriopgaver Træningsophold ved Sorø Akademi 2007 18. juli 2007 Opgave 1. Vis at når a, b og c er positive heltal, er et sammensat tal. Løsningsforslag: a 4 + b 4 + 4c 4 + 4a 3 b + 4ab 3 + 6a 2 b 2

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

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

DB undervisning 01-01

DB undervisning 01-01 Databaser... 2 Tabeller... 2 Redundans... 3 Første regel... 4 Anden regel... 4 Tredje regel... 5 Relationer... 5 Opskrift... 6 SQL sætninger til at oprette tabeller... 7 SQL sætninger til at indsætte data...

Læs mere

Import af rekursivt (parent-child) hierarki i Palo

Import af rekursivt (parent-child) hierarki i Palo Import af rekursivt (parent-child) hierarki i Palo Dette dokument beskriver hvordan et simpelt rekursivt (parent-child) hierarki kan importeres ind i Palo på forskellige måder via SQL og samtidig bibeholde

Læs mere

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

DATALOGISK INSTITUT, AARHUS UNIVERSITET. Det Naturvidenskabelige Fakultet EKSAMEN. Grundkurser i Datalogi DATALOGISK INSTITUT, AARHUS UNIVERSITET Det Naturvidenskabelige Fakultet EKSAMEN Grundkurser i Datalogi Antal sider i opgavesættet (incl. forsiden): 1 (tolv) Eksamensdag: Fredag den 7. august 009, kl.

Læs mere

DM507 - Algoritmer og datastrukturer

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

Læs mere

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

Binære søgetræer. Binære søgetræer. Nærmeste naboer. Nærmeste nabo Philip Bille Nærmeste naboer. Vedligehold en dynamisk mængde S af elementer. Hvert element har en nøgle key[] og satellitdata data[]. operationer. PREDECESSOR(k): returner element med største nøgle k.

Læs mere

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: Fredag den 13. august 2010, kl.

Læs mere

Sider og segmenter. dopsys 1

Sider og segmenter. dopsys 1 Sider og segmenter dopsys 1 Lokal vs global sideallokering (1) Med (a) som udgangspunkt giver (b) lokal hhv. (c) global allokering forskellige resultater dopsys 2 Lokal vs global sideallokering (2) Den

Læs mere

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo er et Windows 98/NT/2000/Me/Xp/Vista/Win7/Win8 program, der kan holde rede på hjemmets, firmaets, foreningens eller skolens inventar

Læs mere

DM02 Kogt ned. Kokken. Januar 2006

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

Læs mere

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

Indholdsfortegnelse for kapitel 3

Indholdsfortegnelse for kapitel 3 Indholdsfortegnelse for kapitel 3 Kapitel 3 Design............................................................ 2 Database........................................................... 3 ER-diagram.................................................

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

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

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

Læs mere

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML

De vigtigste SQL-sætninger. SQL kap Oprette database. DDL og DML SQL kap 6-7 + 17-20 DDL og DML 1 De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en

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

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: Tirsdag den 20. marts 2012, kl.

Læs mere

Software Projekt NoSQL vs RMDB

Software Projekt NoSQL vs RMDB Software Projekt NoSQL vs RMDB Skrevet af Carsten Sørensen, Hans Jørgen Frandsen, Peter Haislund Department of Computer Science, University of Aarhus Aabogade 34, 8200 Arhus N, Denmark 201200089, 19960442,

Læs mere

1. Opret følgende flade database, find selv passende datatyper. 2. Opret begrænsningerne på datatyperne, du ser fx fornavn maks 25 tegn

1. Opret følgende flade database, find selv passende datatyper. 2. Opret begrænsningerne på datatyperne, du ser fx fornavn maks 25 tegn Opgave 1. Opret følgende flade database, find selv passende datatyper. 2. Opret begrænsningerne på datatyperne, du ser fx fornavn maks 25 tegn 3. Medlemsnr skal være større end 1000 4. Der skal oprettes

Læs mere

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output...

Indhold. Maskinstruktur... 3. Kapitel 1. Assemblersprog...3. 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... Indhold Maskinstruktur... 3 Kapitel 1. Assemblersprog...3 1.1 Indledning...3 1.2 Hop-instruktioner... 7 1.3 Input og output... 9 Kapitel 2. Maskinkode... 13 2.1 Den fysiske maskine... 13 2.2 Assemblerens

Læs mere

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

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

Læs mere

Kom godt igang med Inventar registrering

Kom godt igang med Inventar registrering Kom godt igang med Inventar registrering (InventoryDB) (Med stregkodesupport) programmet fra PetriSoft Introduktion... 1 Inventar registrering... 2 Værktøjsudleje... 3 Service database til reperationer

Læs mere

AuthorizationCodeService

AuthorizationCodeService AuthorizationCodeService Sammenhængende Digital Sundhed i Danmark, version 1.1 W 1 AuthorizationCodeService Sammenhængende Digital Sundhed i Danmark version 1.1 Kåre Kjelstrøm Formål... 3 Introduktion...

Læs mere

1. Basal select med (stjerne)

1. Basal select med (stjerne) 1. Basal select med (stjerne) 1. List alle øltyper. a. select * from oltyper 2. List alle bryggerier a. select * from bryggeri 3. List alle Danmarks postnumre samt tilhørende by, landsdel og antal indbyggere

Læs mere

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

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

Læs mere