Eksamen i softwareudvikling



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

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. Ordbøger Hægtet hashing Hashfunktioner Lineær probering. Philip Bille

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

Merging og Hashing (del I)

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

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 diskutere nogle metoder til at gemme og hente data effektivt.

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

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

Datastrukturer (recap)

Danmarks Tekniske Universitet

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

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

Danmarks Tekniske Universitet

Datastrukturer (recap)

Danmarks Tekniske Universitet

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

Datastrukturer (recap) Datastruktur = data + operationer herpå

Danmarks Tekniske Universitet

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

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

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: 7 n 1/ log n. (log n) 4

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

1. Redegør for Lister, stakke og køer mht struktur og komplexitet af de relevante operationer

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)

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet

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

Opgave: BOW Bowling. Rules of Bowling. danish. BOI 2015, dag 1. Tilgængelig hukommelse: 256 MB

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Introduktion til datastrukturer

Danmarks Tekniske Universitet

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

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

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

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

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

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

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: 23n log n. 4 n (log n) log n

Abstrakte datatyper C#-version

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

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

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

Algoritmer og datastrukturer Course No Cheat Sheet May 15, 2012

Hashing og hashtabeller

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

Skriftlig Eksamen Algoritmer og Datastrukturer 1. Datalogisk Institut Aarhus Universitet

DM507 - Algoritmer og datastrukturer

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

Hashing og hashtabeller

Danmarks Tekniske Universitet

Database design for begyndere

02105 Eksamensnoter. Lasse Herskind S maj Sortering 3

HASHI HASH? Vidste du at. pillugu suna. nalunngiliuk? Hvad ved du om. Hvad ved du om hash? Mental sundhed. Love og konsekvenser

Introduktion til datastrukturer. Philip Bille

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

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Prioritetskøer og hobe. Philip Bille

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

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

Køreplan Matematik 1 - FORÅR 2005

DM02 Kogt ned. Kokken. Januar 2006

DATALOGISK INSTITUT, AARHUS UNIVERSITET

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

Eksamensopgaver datalogi, dlc 2011 side 1/5. 1. Lodtrækningssystem

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

Specialeforsvar: Fundamentet for et fleksibelt container bibliotek

Danmarks Tekniske Universitet

Lektion 6. Grundlæggende programmering i VR

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

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

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

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Mindste udspændende træ

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

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

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

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

Databaser Obligatorisk opgave 2 Vejledende løsning

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

Studiepraktik. Thomas Bøgholm Mikkel Hansen Jacob Elefsen

Danmarks Tekniske Universitet

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

Et udtryk er (som bekendt?) lineært hvis den differentierede er en konstant funktion, dvs. at den ikke afhænger af x. Betragt f lgende værdiprocedurer

Danmarks Tekniske Universitet

Vejledning til: Mine aktiviteter (behandler)

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

DATALOGISK INSTITUT, AARHUS UNIVERSITET

Rolf Fagerberg. Forår 2014

Bits DM534. Rolf Fagerberg, 2012

Find største element, sæt det på sidste plads. Grundidé i hobsortering. er er

DM507 Algoritmer og datastrukturer

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

Dosering af anæstesistoffer

Transkript:

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. Baseret på vector-modulet, der heller ikke oversatte. Meget omfattende refactoring. Konklusion: Skriv modulet fra bunden.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Anvendelse af bridge pattern. Få datastrukturer. Opdeling i header og src ler og anvendelse af namespace. Inkludering af unittest i hvert modul.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Hashtabel std::list Bucket 1 Bucket 2 Bucket 3 0 1 1 0 0 1 std::vector n nøgler hashes til m slots i tabellen. Minimere index-range. Elementer med kolliderende hashværdier placeres i buckets. Empty slot Used slot m slots Sentinel Hver bucket højst α = n m elementer (load-factor). Simpelt at understøtte it++ operation.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Tabeludvidelse Når load-factor > 5 fordobles kapaciteten. Når load-factor < 2 halveres kapacitet. Genbrug hashværdi, når elementer yttes (beregning af nye index). Under ytning deallokeres/allokeres elementer! Allokering/deallokering administeres af std::vector, std::list.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Hashfunktion En god hashfunktion opfylder Simple Uniform Hashing (lige fordeling af nøgler). Universal hashing sikrer denne egenskab. En universal klasse af hashfunktioner er givet ved: H p,m = {h a,b : a Z p and b Z p} hvor p > m der giver p(p 1) hashfunktioner i H p,m. Pr{h a,b (k) = h a,b (l)} 1. m Universal hashing på heltal men ikke strenge. Hashfunktionen skiftes ikke.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Opbevaring af hashværdi Et index i tabellen bestemmes ved: index = hash_value MOD capacity Når tabellen udvides/indskrænkes, skal de nye index bestemmes. Gemmes hashværdierne, er det kun MOD, der skal udregnes.

Hashtabel Tabeludvidelse Hashfunktion Opbevaring af hashværdi Kompleksitet Kompleksitet INSERT(v), DELETE(it) tager O(1) tid (dobbelthægtede liste). Antag for tabellen at n = O(m) hvor n er elementer og m er slots i tabellen og load-factoren er givet ved α = n m. SEARCH er proportional med α. Da vi har antaget at n = O(m), fås: O(m) m Forudsætter Simple Uniform Hashing! = O(1).

Multiset og equal_range (1) Multiset og equal_range (2) Skift hashfunktion i forbindelse med udvidelse og sammentrækning. Et element består af: pair<pair<k, V>, pair<bool, hash_value> > Opret en elementklasse (node) i stedet. Udvid med dynamisk hashing i stedet og sammenlign ydelse. Slå opbevaring af hashværdi fra/til (plads contra hastighed). Implementer multiset.

Multiset og equal_range (1) Multiset og equal_range (2) Multiset og equal_range (1) K1 K1 K2 K3 K1 K1 K3 Sorteret bucket. equal_range på bucket.

Multiset og equal_range (1) Multiset og equal_range (2) Multiset og equal_range (2) Tilføj liste. K1 K1 K3 equal_range K1 K2 K1 på listen. K3

900 800 Efficiency of set operations:(cphstl::unordered s et::insert(v) n std::set::insert(v)), integer std::set<int>::insert(v) cphstl::unordered s et<int>::insert(v) Execution time per element [in nanoseconds] 700 600 500 400 300 200 100 0 1e+06 1e+07 n

400 350 Efficiency of set operations:(cphstl::unordered s et::find(e) n std::set::find(e)), integer cphstl::unordered s et<int>::find(e) std::set<int>::find(e) Execution time per element [in nanoseconds] 300 250 200 150 100 50 0 1e+06 1e+07 n

Har ikke nået linear hashing og universal hashfunktioner da refactoring har været meget omfattende. Har kostet blod, sved og tårer at implementere iteratorer (it++ operation). Givet praktisk erfaring med anvendelse af design patterns (bridge, iterator). Nuværende modul er forhåbentlig væsentligt lettere at udvide og overskue. God ydelse.