Hashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering
|
|
- Sunniva Arnesen
- 7 år siden
- Visninger:
Transkript
1 Hashtabeller Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering
2 Dictionaries Mange applikasjoner trenger dynamiske sett som bare har dictionary oparsjonene Insert, Search og Delete. En symboltabell i en kompilator er et eksempel. Det er mulig å implementere dictionariy operasjonene på en vanlig array, men det vil i mange situasjoner være lite praktiskt. Hashtabeller kan være et effektivt alternativ.
3 Direkteadresserte Arrays Direkteadresserte arrays eller tabeller kan brukes til å enkelt implementere en dictionary. Hvert element x har en nøkkel i universet U = {0, 1,..., m 1}, hvor m er relativt liten i.e vi har ganske få ulike nøkler. Hver nøkkel er unik i.e. ingen elementer har samme nøkkel. Direkteadresserte tabeller blir representert av en array T [0... m 1] Hver plass (array indeks) fungerer som en nøkkel i U. Hvis det finnes element x med nøkkel k i settet, så vil T [k] inneholde en peker til elementet. Hvis ikke vil T [k] være tom (representert av nil).
4 Hvordan Direkteadresserte Arrays Fungerer Figuren under viser hvordan direkteadresserte tabeller henger sammen med universet U av mulige nøkler, settet K med faktiske nøkler, og selve elementene.
5 Dictionary Operasjoner på Direkteadresserte Tabeller Implementasjonen av dictionary operasjoner på direkteadresserte tabeller er trivielt. Alle operasjonene har kjøretid på Θ(1).
6 Hashtabeller Problemet med direkteadresserte tabeller er at universet U kan bli stort i.e. det er mange mulige nøkler. I mange tilfeller blir U så stor at en tabell med plass til hver nøkkel er upraktiskt eller til og med umulig. Ofte er antall nøkler som faktiskt blir lagret liten, som vil gi mye bortkastet plass med direkteadresserte tabeller. Når settet med faktiske nøkler K er mye mindre enn universet U med alle mulige nøkler. Kan redusere lagringsbehovet til Θ( K ). Kan få O(1) i gjennomsnitt (men ikke i verstefall).
7 Ideen bak Hashtabeller Ideen bak hashtabeller kan summeres med at i stedet for å lagre et element x med nøkkel k på plass k, så tar vi i bruk en funksjon h og lagrer elementet på plass h(k). Vi bruker fortsatt en array T [0, 1,..., m 1], men nå er ikke m antall mulige nøkler som ved direkteadressert tabeller men ledige plasser. Vi kaller h en hashfunksjon. h : U {0, 1,..., m 1} i.e. h er en funksjon som mapper fra elementene i U til en gyldig plass i T. Vi sier at k hashes til h(k).
8 Hvordan Fungerer Hashtabeller Figuren under viser hvordan nøklene i K U henger sammen med hashfunksjonen h og tabellen T.
9 Hashtabeller og Kollisjoner Når to nøkler får samme plass i hashtabellen får vi en kollisjon. Kan forekomme hvis h er en dårlig hashfunksjon (kommer tilbake til dette senere) Kan forekomme hvis U > m (som er vanlig når hashtabeller velges fremfor direkte adressering) Må forekomme hvis K > m, men ikke nødvendigvis hvis K m. Det finnes ulike strategier for å overkomme problemet med kollisjoner. Chaining (Lenkede Lister) Åpen adressering (open addressing)
10 Ordne Kollisjoner med Chaining Chaining er en metode som tar i bruk lenkede lister for å overkomme problemet med hashkollisjoner. T [j] inneholder en peker til en lenket liste med alle elementer med h(k) = j. T [j] er nil hvis plassen er tom. Chaining fungerer stort sett bedre enn åpen adresssering, men strategien krever også mere plass pga. alle pekerne.
11 Hvordan Fungerer Chaining Figuren under viser hvordan lenkede lister kobles inn i oppsettet med nøkler og hashtabellen.
12 Chained-Hash-Insert Algoritmen Chained-Hash-Insert brukes for å legge til nye elementer i tabellen. Kjøretiden er Θ(1). Vi setter alltid inn det nye elementet først i den eventuelle listen. Vi antar at elementet ikke allerede er satt inn, siden det ville krevd et ekstra søk for å finne det ut.
13 Chained-Hash-Search Algoritmen Chained-Hash-Search algoritmen brukes til å søke etter et element x med nøkkel k. Kjøretiden er proporsjonal med antall elementer i listen i.e. elementer med samme nøkkel, men det kan bevises at gjennomsnitts kjøretid er O(1). Vi skal holde oss til en nokså overfladisk analyse av Chained-Hash-Search i denne forelesningen.
14 Chained-Hash-Delete Algoritmen Chained-Hash-Delete brukes til å slette elementer fra en hashtabell med lenkede lister. Vi tar en peker til elementet x som argument i stedet for nøkkelen. Dette gjør at vi kan utføre slettingen i konstant tid (Θ(1)) så lenge vi bruker en dobbeltlenket liste. Hvis vi hadde brukt en enkeltlenket liste måtte vi først utføre et søk for å finne korrekt element.
15 Analyse av Søking i Hashtabeller med Chaining Analysen av operasjonene på hashtabeller med chaining baseres på den såkalte load faktoren α = n/m n er antall elementer i tabellen m er antall plasser i tabellen Load faktoren α kan sees som gjennomsnitts antall elementer i hver liste (så lenge hashingen er uniform). Vi kan ha α < 1, α = 1 eller α > 1, men lavere load faktorer er naturlig nok å foretrekke.
16 Analyse av Søking i Hashtabeller med Chaining Verstefall kjøretid for søk i hashtabeller forekommer når alle elementene hashes til samme plass. Vi får en enkelt lang list med alle elementene. Verstefall kjøretid for å søke tabellen blir da Θ(n) pluss tiden det tar å regne ut hashverdien (normalt O(1)). Gjennomsnittsytelsen til en hashtabell er avhengig av hvor godt hashfunksjonen distruberer elementene. Det kan bevises (se i boka) at gjennomsnittskjøretiden til et søk er Θ(1 + α). Hvis n = O(m), så er α = n/m = O(m)/m = O(1) i.e. hvis antall elementer ikke er polynomisk større enn antall plasser så er kjøretiden konstant.
17 Hashfunksjoner En god hashfunksjon skal i prinsippet være uniform i.e. den skal sørge for at elementene blir jevnt fordelt utover tabellen. I praksis er dette normalt sett ikke mulig siden vi ikke vet noe om distribusjonen nøklene og hvorvidt de er uavhengige trukket eller ikke. Man tyr derfor ofte til heuristics, som kan beskrives som en kvalifisert gjetning eller tilnærming til et problem.
18 Nøkler som Naturlige Tall Hashfunksjoner går utifra at alle nøkler er naturlige tall. Når de ikke er det e.g. tekststrenger, må de konverteres til naturlige tall. Eksempel: En tekststreng med ASCII-tegn kan konvertes til et tall med radix notasjon. Vi har tekststrengen CLRS. C = 67, L = 76, R = 82 og S = 83 i ASCII verdier. Vi kan da si at CLRS = ( ) + ( ) + (82 128) + 83 =
19 Divisjonsmetoden som Hashfunksjon En hashfunksjon som bruker divisjonsmetoden kan beskrives med følgende ligning. h(k) = k mod m Eksempel: m = 20 og k = 91 gir en hashverdi på k mod m = 11.
20 Fordeler og Ulemper med Divisjonsmetoden Fordelen divisjonsmetoden er at den er rask siden bare en enkelt divisjon må utføres. Ulempen er at man må være forsiktig med valget av størrelsen på tabellen m. 2 er potenser er generelt sett dårlig. Hvis m = 2 p så blir h(k) bare de p minste-signifikante bittene i k. Hvis k er en tekststreng i en radix 2 p så er m = 2 p 1 et dårlig valg siden dette vil gjøre ulike permutasjoner av de samme tegnene for samme hashverdi. Et godt valg for m er typisk et primtall som er relativt langt unna en 2 er potens.
21 Multiplikasjonsmetoden En hashfunksjon som bruker multiplikasjonsmetoden kan beskrives med følgende ligning. h(k) = m(ka mod 1). Hvor ka mod 1 = ka ka i.e. desimaldelen av ka Vi kan også beskrive hashfunksjonen med følgende steg 1 Velg en konstant 0 < A < 1 2 Gang nøkkelen k med A 3 Trekk ut desimaldelen av resultatet 4 Gang desimaldelelen med antall plasser i tabellen m. 5 Finn nærmest heltall mindre enn resultatet og bruk denne som indeks i tabellen.
22 Fordeler og Ulemper med Multiplikasjonsmetoden Fordelen med multiplikasjonsmetoden er at den ikke blir preget av størrelsen m slik som divisjonsmetoden. Ulempen er at metoden er tregere en divisjonsmetoden. Det kan også være vanskelig å finne en god verdi for konstanten A. Alle gyldige verdier er mulige (0 < A < 1) Donald Knuth foreslår å bruke A ( 5 1)/2
23 Åpen Adressering Åpen adressering (open addressing) er et alternativ til chaining for å overkomme kollisjoner i hashverdiene. Ideen går ut på å lagre nøklene i tabellen direkte i stedet for i lenkede lister. Hvert felt inneholder enten en nøkkel eller nil. Vi utfører såkalte probes for å sjekke om en plass er ledig eller ikke. Hashfunksjonen må utvides slik at den kan returnere en sekvens av plasser å utføre probes på. Vi får da en hashfunksjon h(k, i) hvor k er nøkkelen som skal hashes og i {0, 1,... m 1}. Sekvensen av posisjoner som testes må være en permutasjon av 0, 1,..., m 1 slik at vi er innom alle posisjoner.
24 Hash-Search Algoritmen Hash-Search algoritmen kan brukes for å søke i en hashtabell med åpen adressering. Algoritmen returnerer enten posisjonen til elementet, eller nil hvis elementet ikke ikke ble funnet. Kjøretiden til algoritmen avhenger av hvor mange probes som må utføres før elementet finnes eller vi kommer til en ledig plass.
25 Hash-Insert Algoritmen Hash-Insert algoritmen brukes til å sette inn elementer inn i en hashtabell med åpen adressering. Algoritmen returner posisjonen til det nye elementet eller den kaster en exception hvis tabellen er full. Kjøretiden til algoritmen avhenger av hvor mange probes som må utføres før vi kommer til en ledig plass.
26 Sletting fra Hashtabeller med Åpen Adressering Man kan ikke bare slette et element fra en tabell ved å sette plassen som ledig da dette vil ødelegge både probe sekvensen. Vi prøver oss på å slette et element ved å sette posisjonen til ledig. Vi antar at elementet var det andre av tre elementer med samme nøkkel Fremtidige søk vil ikke lenger ha mulighet til å finne det siste elementet siden kjeden er brutt. En løsning er å i stedet sette posisjonen som deleted. Dette fikser problemet med søkingen. Problemet med denne løsningen er at søketiden nå ikke lenger er avhengig av load faktoren α.
27 Hvordan Genererer Probe-Sekvenser Ideelt sett så hadde vi hatt uniform hashing hvor alle permutasjoner m! er like sansynlige som probe-sekvenser. I praksis er det vanskelig å implementere uniform hashing Vi bruker i stedet tilnærminger, men ingen av disse er kapable til å generere m! sekvenser.
28 Lineær Probing I lineær probing tar vi bruk en auxiliary hashfunksjon h som fungerer som en normal hashfunksjon. Gitt en nøkkel k og et probe nummber 0 i < m så implmenteres lineær probing med følgende ligning. h(k, i) = (h (k) + i) mod m Den første probeposisjonen bestemmer hele sekvensen i.e. vi har m mulige sekvenser. Ulempen med lineær probing er at metoden lider av at det bygger seg lange sammenhengende sekvenser som påvirker søketiden.
29 Kvadratisk Probing Som i lineær probing så bygger kvadratisk probing på en auxiliary hashfunksjon h som angir startposisjonen. I motsetning til lineær probing så hopper vi med kvadratisk probing rundt utifra en kvadratisk funksjon. h(k, i) = (h (k) + c 1 i + c 2 i 2 ) mod m Den første probeposisjonen bestemmer hele sekvensen også her i.e. vi har m mulige sekvenser. Kvadratisk probing lider også av at elementer hoper seg opp, men med denne strategien er sjansen mindre.
30 Dobbelhash Probing I dobbelhash probing (double hashing) benytter vi i motsetning til de andre metodene to auxiliary hashfunksjoner h 1 og h 2. h 1 bestemmer første probeposisjon, mens h 2 bestemmer de resterende. h(k, i) = (h 1 (k) + ih 2 (k)) mod m Metoden gir Θ(n 2 ) mulige sekvenser, som er en vesentlig forbedring. Hashfunksjonen h 2 må ha få faktorer felles med m for å besøke alle posisjonene. Kan velge m til å være en 2 er potens og la h 2 alltid generere oddetall større enn 1. Kan la m være et primtall og la 1 < h 2(k) < m.
31 Analyse av Åpen Adressering Som med chaining så er effektiviteten til åpen adressering avhengig av load faktoren α = n/m. Det kan bevises (se fagboka) at det forventede antallet probes i et søk som ikke finner elementet er 1/(1 α). Dette gir en konstant kjøretid på begge operasjonene så lenge α er konstant.
Hashing: Håndtering av kollisjoner
Hashing: Håndtering av kollisjoner Innsetting av dataelement i hashtabell Algoritme: 1. Bruk en hashfunksjon til å beregne hashverdi basert på dataelementets nøkkelverdi 2. Sett inn dataelementet i hashtabellen
DetaljerINF1020 Algoritmer og datastrukturer
Dagens plan Hashing Hashtabeller Hash-funksjoner Kollisjonshåndtering Åpen hashing (kap. 5.3) Lukket hashing (kap. 5.4) Rehashing (kap. 5.5) Sortering ut fra en hashing-ide (side 66-68) Bøttesortering
DetaljerINF1010 Hashing. Marit Nybakken 8. mars 2004
INF1010 Hashing Marit Nybakken marnybak@ifi.uio.no 8. mars 2004 Til nå har vi trodd at en HashMap var en mystisk uendelig stor samleeske der vi på magisk vis kan putte inn objekter og ta ut objekter ved
Detaljer... HASHING. Hashing. Hashtabeller. hash(x)
HASHING Hashing Hashtabeller (kapittel.) Hash-funksjoner (kapittel.) Kollisjonshåndtering Åpen hashing (kapittel.) Lukket hashing (kapittel.) Anta at en bilforhandler har ulike modeller han ønsker å lagre
DetaljerMaps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array
Maps og Hashing INF0 - Algoritmer og datastrukturer HØSTEN 00 Institutt for informatikk, Universitetet i Oslo INF0, forelesning : Maps og Hashing Map - Abstrakt Data Type (kapittel.) Hash-funksjoner (kapittel..)
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 3: Maps og Hashing Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 3 1 / 25 Maps
DetaljerMaps og Hashing. INF Algoritmer og datastrukturer. Map - ADT. Map vs Array
Maps og Hashing INF0 - Algoritmer og datastrukturer HØSTEN 00 Institutt for informatikk, Universitetet i Oslo INF0, forelesning : Maps og Hashing Map - Abstrakt Data Type Hash-funksjoner hashcode Kollisjonshåndtering
DetaljerLars Vidar Magnusson
Binære Søketrær Lars Vidar Magnusson 14.2.2014 Kapittel 12 Binære Søketrær Søking Insetting Sletting Søketrær Søketrær er datastrukturer som støtter mange dynamiske sett operasjoner. Kan bli brukt både
DetaljerLøsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006
Løsningsforslag for Obligatorisk Oppgave 3 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.03.14 Den tredje obligatoriske oppgaven tar for seg forelesning 9 til 13, som dreier seg om
DetaljerØvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth
Øvingsforelesning 2 - TDT4120 Grafer og hashing Benjamin Bjørnseth Informasjon Studasser algdat@idi.ntnu.no Program Presentasjon av øving 2 Grafer og traverseringsalgoritmer BFS, DFS Hashing Gjennomgang
DetaljerAlg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø rodsjo@stud.ntnu.no
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø rodsjo@stud.ntnu.no Dagens tema Grafer Terminologi Representasjon av grafer Bredde først søk (BFS) Dybde først søk (DFS) Hashing Hashfunksjoner,
DetaljerINF2220: Forelesning 3
INF2220: Forelesning 3 Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5) ABSTRAKTE DATATYPER 2 Abstrakte datatyper En ADT består av: Et sett med objekter. Spesifikasjon
DetaljerHashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller
Hashing INF2220 - Algoritmer og datastrukturer HØSTEN 200 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning : Hashing Hashtabeller (kapittel.) Hash-funksjoner (kapittel.2) Kollisjonshåndtering
DetaljerINF2220: Forelesning 3. Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5)
INF2220: Forelesning 3 Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5) Map og hashing Ett minutt for deg selv: Hva vet du om maps/dictionarys og hashing fra tidligere?
DetaljerKapittel 14, Hashing. Tema. Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1
Kapittel 14, Hashing Tema Definere hashing Studere ulike hashfunksjoner Studere kollisjonsproblemet 17-1 Hashing Hashing er en effektiv metode ved lagring og gjenfinning (søking) av informasjon Søkemetoder
DetaljerGrunnleggende Datastrukturer
Grunnleggende Datastrukturer Lars Vidar Magnusson 7.2.2014 Kapittel 10 Stakker og køer Lenkede lister Pekere og objekter Trerepresentasjoner Datastrukturer Vi er i gang med tredje del av kurset hvor vi
DetaljerAlg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Dagens tema Grafer Terminologi Representasjon av grafer Bredde først søk (BFS) Dybde først søk (DFS) Hashing Hashfunksjoner, hashtabeller Kollisjonshåndtering
DetaljerDatastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2
Datastrukturer Algoritmer og datastrukturer Øvingsforelesning 2 Datastrukturer Algoritmer og datastrukturer Øvingsforelesning 2 av Henrik Grønbech Datastrukturer Algoritmer og datastrukturer Øvingsforelesning
DetaljerINF2220: Forelesning 3
INF2220: Forelesning 3 Map og hashing Abstrakte datatyper (kapittel 3.1) Map (kapittel 4.8) Hashing (kapittel 5) REPETISJON: ALGORITMER OG STOR O 2 REPETISJON RØD-SVARTE TRÆR 7 Rød-svarte trær Et rød-svart
DetaljerNy/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00
Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 6. januar 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerO(log n) - søk. Søking i et balansert søketre med n elementer er alltid O(log n) Søkingen er basert på parvise sammenligninger av to og to verdier
Hashing O(log n) - søk Søking i et balansert søketre med n elementer er alltid O(log n) Søkingen er basert på parvise sammenligninger av to og to verdier Er svært raskt uansett hvor stort søketreet er,
DetaljerLars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting
Rød-Svarte Trær Lars Vidar Magnusson 21.2.2014 Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting Rød-Svarte Trær Rød-Svarte trær (red-black trees) er en variasjon binære søketrær som
DetaljerHeapsort. Lars Vidar Magnusson Kapittel 6 Heaps Heapsort Prioritetskøer
Heapsort Lars Vidar Magnusson 24.1.2014 Kapittel 6 Heaps Heapsort Prioritetskøer Sorterings Problemet Sorterings problemet er et av de mest fundementalske problemene innen informatikken. Vi sorterer typisk
Detaljer... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved
Dagens plan: Utvidbar hashing (kapittel 5.6) B-trær (kap. 4.7) Abstrakte datatyper (kap. 3.1) Stakker (kap. 3.3) Når internminnet blir for lite En lese-/skriveoperasjon på en harddisk (aksesstid 7-12 millisekunder)
DetaljerLars Vidar Magnusson
B-Trær Lars Vidar Magnusson 5.3.2014 Kapittel 18 B-trær Standard operasjoner Sletting B-Trær B-trær er balanserte trær som er designet for å fungere bra på sekundære lagringsmedium e.g. harddisk. Ligner
DetaljerO(1) søking? Søking i sortert array og i søketrær: Optimalt søk som er O(1):
Hashing O(1) søking? Søking i sortert array og i søketrær: Er basert på sammenligninger med verdier som allerede finnes i datastrukturen Effektiviteten er log n, avhenger av n (antall verdier i datastrukturen)
DetaljerSortering i Lineær Tid
Sortering i Lineær Tid Lars Vidar Magnusson 5.2.2014 Kapittel 8 Counting Sort Radix Sort Bucket Sort Sammenligningsbasert Sortering Sorteringsalgoritmene vi har sett på så langt har alle vært sammenligningsbaserte
DetaljerHashfunksjoner. Hashfunksjonen beregner en indeks i hashtabellen basert på nøkkelverdien som vi søker etter
Hashfunksjoner Hashfunksjoner Hashfunksjonen beregner en indeks i hashtabellen basert på nøkkelverdien som vi søker etter Hash: «Kutte opp i biter og blande sammen» Perfekt hashfunksjon: Lager aldri kollisjoner
DetaljerSøking i strenger. Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen
Søking i strenger Vanlige søkealgoritmer (on-line-søk) Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen Suffiks-søking Boyer-Moore-algoritmen Hash-basert Karp-Rabin-algoritmen Indeksering av
DetaljerGrunnleggende Grafalgoritmer II
Grunnleggende Grafalgoritmer II Lars Vidar Magnusson March 17, 2015 Kapittel 22 Dybde-først søk Topologisk sortering Relasjonen til backtracking Dybde-Først Søk Dybde-først søk i motsetning til et bredde-først
DetaljerEKSAMENSOPPGAVE. IAI20102 Algoritmer og datastrukturer
EKSAMENSOPPGAVE Fag: Lærer: IAI00 Algoritmer og datastrukturer André A. Hauge Dato:..005 Tid: 0900-00 Antall oppgavesider: 5 med forside Antall vedleggssider: 0 Hjelpemidler: Alle trykte og skrevne hjelpemidler,
DetaljerNotater til INF2220 Eksamen
Notater til INF2220 Eksamen Lars Bjørlykke Kristiansen December 13, 2011 Stor O notasjon Funksjon Navn 1 Konstant log n Logaritmisk n Lineær n log n n 2 Kvadratisk n 3 Kubisk 2 n Eksponensiell n! Trær
DetaljerTuringmaskiner.
Turingmaskiner http://www.youtube.com/watch?v=e3kelemwfhy http://www.youtube.com/watch?v=cyw2ewoo6c4 Søking i strenger Vanlige søkealgoritmer (on-line-søk) Prefiks-søking Naiv algoritme Knuth-Morris-Pratt-algoritmen
DetaljerEKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 28. mai 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerLøsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006
Løsningsforslag for Obligatorisk Oppgave 2 Algoritmer og Datastrukturer ITF20006 Lars Vidar Magnusson Frist 28.02.14 Den andre obligatoriske oppgaven tar for seg forelesning 5, 6, og 7 som dreier seg om
Detaljerpublic interface Collec>on<V> { public void add(v value); public default V remove(v value) { return null;
Hashing The term "hash" comes by way of analogy with its non-technical meaning, to "chop and mix". Indeed, typical hash func>ons, like the mod opera>on, "chop" the input domain into many sub-domains that
DetaljerQuicksort. Lars Vidar Magnusson Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort
Quicksort Lars Vidar Magnusson 29.1.2014 Kapittel 7 Quicksort Randomisert Quicksort Analyse av Quicksort Om Quicksort Quicksort er en svært populær sorteringsalgoritme. Algoritmen har i verstefall en kjøretid
DetaljerEKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen
Fakultet for naturvitenskap og teknologi EKSAMENSOPPGAVE Eksamen i: Dato: 15.mai 2018 Klokkeslett: 09:00 13:00 Sted: Tillatte hjelpemidler: Adm.bygget, rom K1.04 og B154 Ingen Type innføringsark (rute/linje):
DetaljerINF 4130 / / Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger:
INF 4130 / 9135 29/8-2012 Dagens foiler hovedsakelig laget av Petter Kristiansen Foreleser Stein Krogdahl Obliger: Tre stykker, som må godkjennes. Frister: 21. sept, 26. okt, 16. nov Andre, «nærliggende»
DetaljerStudentnummer: Side 1 av 1. Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005
Studentnummer: Side 1 av 1 Løsningsforslag, Eksamen i TDT4120 Algoritmer og datastrukturer August 2005 Faglige kontakter under eksamen: Magnus Lie Hetland, Arne Halaas Tillatte hjelpemidler: Bestemt enkel
DetaljerNy/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00
Ny/utsatt EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 5. januar 2018 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerDivide-and-Conquer II
Divide-and-Conquer II Lars Vidar Magnusson 1712014 Kapittel 4 Analyse av divide-and-conquer algoritmer ved hjelp av rekursjonstrær Analyse av divide-and-conquer algoritmer ved hjelp av masterteoremet Løse
DetaljerPensum: fra boken (H-03)+ forelesninger
Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo INF2220, forelesning 13: Eksamensgjennomgang Bjarne Holen (Ifi, UiO) INF2220 H2009, forelesning 13 1 /
DetaljerGrådige algoritmer. Lars Vidar Magnusson Kapittel 16. Aktivitetvelgingsproblemet Huffmankoder
Grådige Algoritmer Lars Vidar Magnusson 12.3.2014 Kapittel 16 Grådige algoritmer Aktivitetvelgingsproblemet Huffmankoder Ideen bak Grådige Algoritmer Ideen bak grådige algoritmer er å løse optimaliseringsproblem
DetaljerGrunnleggende Grafalgoritmer III
Grunnleggende Grafalgoritmer III Lars Vidar Magnusson 26.3.2014 Kapittel 21 og 22 Usammenhengende-sett Strongly-connected components Usammenhengende Sett Usammenhengende sett er ikke en grafalgoritme i
DetaljerPensum: fra boken (H-03)+ forelesninger
Pensum: fra boken (H-03)+ forelesninger unntatt kursorisk tema KAP. 1 KAP. 2 KAP. 3 JAVA I-110 (ikke gjennomgått) OO + ABSTRAKSJON /GENERISK PROGRAMMERING REKURSJON ALGORITME-TIDSANALYSE; O-NOTASJON KAP.
DetaljerINF2220: Forelesning 2
INF2220: Forelesning 2 Mer om analyse av algoritmer Analyse av binære søketrær Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) ANALYSE AV ALGORITMER 2 Analyse av tidsforbruk Hvor
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer IAI 20102 Høgskolen i Østfold Avdeling for informatikk og automatisering Lødag 5. juni 2004, kl. 09.00-13.00 LØSNINGSFORSLAG 1 Del 1 60% Oppgave 1.1-10% Forklar kort
DetaljerPropabilistisk Analyse og Randomiserte Algoritmer
Propabilistisk Analyse og Randomiserte Algoritmer Lars Vidar Magnusson 22.1.2014 Kapittel 5 Propabilistisk analyse Randomiserte algoritmer Hiring Problemet For å forklare propabilistisk analyse kan det
DetaljerSorteringsproblemet. Gitt en array A med n elementer som kan sammenlignes med hverandre:
Sortering Sorteringsproblemet Gitt en array A med n elementer som kan sammenlignes med hverandre: Finn en ordning (eller permutasjon) av elementene i A slik at de står i stigende (evt. avtagende) rekkefølge
DetaljerGenerelle Tips. INF Algoritmer og datastrukturer. Åpen og Lukket Hashing. Hashfunksjoner. Du blir bedømt etter hva du viser at du kan
Generelle Tips INF2220 - lgoritmer og datastrukturer HØSTEN 2009 Institutt for informatikk, Universitetet i Oslo Du blir bedømt etter hva du viser at du kan Du må begrunne svar Du må ikke skrive av bøker
DetaljerHvor raskt klarer vi å sortere?
Sortering Sorteringsproblemet Gitt en array med n elementer som kan sammenlignes med hverandre: Finn en ordning (eller permutasjon) av elementene slik at de står i stigende (evt. avtagende) rekkefølge
DetaljerMål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU 2 Læringsmål og pensum Mål Lære å bruke unntak (Exceptions)
DetaljerGrunnleggende Grafalgoritmer
Grunnleggende Grafalgoritmer Lars Vidar Magnusson 19.3.2014 Kapittel 22 Representere en graf Bredde-først søk Grafer i Informatikken Problem med grafer går ofte igjen i informatikkens verden, så det å
DetaljerListe som abstrakt konsept/datatype
Lister Liste som abstrakt konsept/datatype Listen er en lineær struktur (men kan allikevel implementeres ikke-lineært bak kulissene ) Hvert element har en forgjenger, unntatt første element i listen Hvert
DetaljerPython: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer
Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer TDT4110 IT Grunnkurs Professor Guttorm Sindre Læringsmål og pensum Mål Forstå, og kunne bruke, algoritmer
DetaljerSøkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?
Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen
DetaljerSIF8010 ALGORITMER OG DATASTRUKTURER
SIF8010 ALGORITMER OG DATASTRUKTURER KONTINUASJONSEKSAMEN, 1999; LØSNINGSFORSLAG Oppgave 1 (12%) Anta at du skal lage et støtteprogram som umiddelbart skal varsle om at et ord blir skrevet feil under inntasting
DetaljerEksamen i tdt4120 Algoritmer og datastrukturer
Norges teknisk naturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap Side 1 av 5 Oppgavestillere: Magnus Lie Hetland Jon Marius Venstad Kvalitetskontroll: Magnar Nedland Faglig
DetaljerIN Algoritmer og datastrukturer
IN2010 - Algoritmer og datastrukturer HØSTEN 2018 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 3: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2010 H2018, forelesning
DetaljerHva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen
Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til
DetaljerHva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen
Lister Hva er en liste? Listen er en lineær datastruktur Hvert element har en forgjenger, unntatt første element i listen Hvert element har en etterfølger, unntatt siste element i listen I motsetning til
DetaljerDivide-and-Conquer. Lars Vidar Magnusson 13.1.2015
Divide-and-Conquer Lars Vidar Magnusson 13.1.2015 Kapittel 4 Maximum sub-array problemet Matrix multiplikasjon Analyse av divide-and-conquer algoritmer ved hjelp av substitusjonsmetoden Divide-and-Conquer
DetaljerUke 5 Disjunkte mengder
Uke 5 Disjunkte mengder MAW, kap.. 8 September 19, 2005 Page 1 Hittil Forutsetninger for og essensen i faget Metodekall, rekursjon, permutasjoner Analyse av algoritmer Introduksjon til ADT er Den første
DetaljerForelesning 6 torsdag den 4. september
Forelesning 6 torsdag den 4. september 1.13 Varianter av induksjon Merknad 1.13.1. Det finnes mange varianter av induksjon. Noen av disse kalles noen ganger sterk induksjon, men vi skal ikke benytte denne
DetaljerInnhold. Innledning 1
Innhold Innledning 1 1 Kompleksitetsanalyse 7 1.1 Innledning.............................. 8 1.2 Hva vi beregner........................... 8 1.2.1 Enkle operasjoner...................... 8 1.2.2 Kompleksitet........................
DetaljerPensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15
http://www.idi.ntnu.no/~algdat algdat@idi.ntnu.no Pensum: 3. utg av Cormen et al. Øvingstime: I morgen, 14:15 b c g a f d e h The pitch drop experiment. Foreløpig kjørt fra 1927 til nå. Åtte dråper har
DetaljerAvsluttende eksamen i TDT4120 Algoritmer og datastrukturer
Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer Eksamensdato 3. desember 2012 Eksamenstid 0900 1300 Sensurdato 3. januar 2013 Språk/målform Bokmål Kontakt under eksamen Magnus Lie Hetland (tlf.
DetaljerOm Kurset og Analyse av Algoritmer
Om Kurset og Analyse av Algoritmer Lars Vidar Magnusson 8.1.2014 Praktisk informasjon om kurset Hva er en algoritme? (kapittel 1) Hvordan analysere en algoritme? (kapittel 2) Praktisk Informasjon Introduction
DetaljerDatastrukturer for rask søking
Søking Søkeproblemet Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke? Effektiviteten til søkealgoritmer avhenger av: Om datastrukturen
DetaljerBacktracking som løsningsmetode
Backtracking Backtracking som løsningsmetode Backtracking brukes til å løse problemer der løsningene kan beskrives som en sekvens med steg eller valg Kan enten finne én løsning eller alle løsninger Bygger
DetaljerStein Krogdahl, Dino Karabeg, Petter Kristiansen. Kenneth A. Berman and Jerome L. Paul.
Stein Krogdahl, Dino Karabeg, Petter Kristiansen steinkr at ifi.uio.no dino at ifi.uio.no pettkr at ifi.uio.no INF 4130 / 9135 Algoritmer: Design og effektivitet Algorithms: Sequential Parallel and Distributed
DetaljerDynamisk programmering Undervises av Stein Krogdahl
Dynamisk programmering Undervises av Stein Krogdahl 5. september 2012 Dagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist) Kapittel 9 er lagt ut på undervisningsplanen.
DetaljerForelesning 4 torsdag den 28. august
Forelesning 4 torsdag den 28. august 1.10 Rekursjon Merknad 1.10.1. Hvert tall i sekvensen 1, 2, 4, 8, 16,... er to ganger det foregående. Hvordan kan vi beskrive sekvensen formelt? Vi kan ikke skrive
DetaljerDefinisjon. I et binært tre har hver node enten 0, 1 eller 2 barn
Binære trær Definisjon I et binært tre har hver node enten 0, 1 eller 2 barn Rekursiv definisjon: Et binært tre er enten tomt, eller: Består av en rotnode og to binære trær som kalles venstre subtre og
DetaljerHistogramprosessering
Histogramprosessering Lars Vidar Magnusson January 22, 2018 Delkapittel 3.3 Histogram Processing Histogram i Bildeanalyse Et histogram av et digitalt bilde med intensitet i intervallet [0, L) er en diskret
DetaljerHøgskoleni østfold EKSAMEN. 4 dobbeltsidige ark med notater Lars Magnusson
Høgskoleni østfold EKSAMEN Emnekode: ITF 20006 Emne: Algoritmer og Datastrukturer Dato: 22.05.2015 Eksamenstid: kl 09.00 til kl 13.00 Hjelpemidler: Faglærer: 4 dobbeltsidige ark med notater Lars Magnusson
DetaljerEksamensoppgave i TDT4120 Algoritmer og datastrukturer
Eksamensoppgave i TDT4120 Algoritmer og datastrukturer Faglig kontakt under eksamen Magnus Lie Hetland Tlf. 918 51 949 Eksamensdato 12. august, 2014 Eksamenstid (fra til) 0900 1300 Hjelpemiddelkode D.
DetaljerDictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:
1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis Terje Rydland - IDI/NTNU 2 Datastruktur: Dictionaries Kap 9.1 Dictionary er et objekt som lagrer en samling
DetaljerMinimum Spenntrær - Kruskal & Prim
Minimum Spenntrær - Kruskal & Prim Lars Vidar Magnusson 4.4.2014 Kapittel 23 Kruskal algoritmen Prim algoritmen Kruskal Algoritmen Kruskal algoritmen kan beskrives med følgende punkter. Vi har en en sammenkoblet
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 12. desember 2008 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 7 sider. Vedlegg: Tillatte hjelpemidler: INF2220
DetaljerDynamisk programmering
Dynamisk programmering Metoden ble formalisert av Richard Bellmann (RAND Corporation) på 50-tallet. Programmering i betydningen planlegge, ta beslutninger. (Har ikke noe med kode eller å skrive kode å
DetaljerMorfologi i Binære Bilder III
Morfologi i Binære Bilder III Lars Vidar Magnusson March 28, 2017 Delkapittel 9.5 Some Basic Morphological Algorithms Boundary Extraction (Grenseuthenting) Vi kan hente ut grensen til et sett (boundary)
DetaljerDisjunkte mengder ADT
Binære relasjoner A A = {(x, y) x, y A}: mengden av ordnede par over A. Disjunkte mengder ADT Weiss kap. 8.1 8.5 Løser ekvivalensproblemet Lett og rask implementasjon Vanskelig tidsforbrukanalyse Ark 1
Detaljerdeeegimnoorrrsstt Sjette forelesning
deeegimnoorrrsstt Sjette forelesning 1 2 Rebus. Hva er dette? Svar: Kvadratiske sorteringsalgoritmer :-> Som vanlig relativt abstrakte beskrivelser her. Ta en titt på pseudokode i boka for mer detaljert
DetaljerOversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays
Oversikt C programmering 1 C programmering Introduksjon Kildekode Kompilering Hello world Hello world med argumenter 2 Funksjoner 3 Datatyper 4 Pekere og arrays 5 Kontrollstrukturer Lars Vidar Magnusson
DetaljerINF Algoritmer og datastrukturer
INF2220 - Algoritmer og datastrukturer HØSTEN 2017 Ingrid Chieh Yu Institutt for informatikk, Universitetet i Oslo Forelesning 4: Prioritetskø og Heap Ingrid Chieh Yu (Ifi, UiO) INF2220 H2017, forelesning
DetaljerØvingsforelesning 4. Martin Aasen
Øvingsforelesning 4 Martin asen 2 Først en kjapp recap av øving 2 verage-case vs. amortisert analyse verage-case mortisert analyse Forventet kjøretid over instanser Snitt over operasjoner 3 mortisert analyse
DetaljerINF2220: Time 12 - Sortering
INF0: Time 1 - Sortering Mathias Lohne mathialo Noen algoritmer Vi skal nå se på noen konkrete sorteringsalgoritmer. Gjennomgående i alle eksempler vil vi sortere tall etter tallverdi, men som diskutert
DetaljerTDT4165 PROGRAMMING LANGUAGES. Exercise 02 Togvogn-skifting
TDT4165 PROGRAMMING LANGUAGES Fall 2012 Exercise 02 Togvogn-skifting Problembeskrivelse Du er sjef for å skifte vognene til et tog. Vi antar at hver vogn selv har en motor og at toget ikke har noe lokomotiv.
DetaljerLøsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014
Løsningsforslag Dette er et utbygd løsningsforslag. D.v.s at det kan forekomme feil og at løsningene er mer omfattende enn det som kreves av studentene på eksamen. Oppgavesettet består av 5 (fem) sider.
DetaljerAvsluttende eksamen i TDT4120 Algoritmer og datastrukturer
Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer Eksamensdato 14. desember 2011 Eksamenstid 1500 1900 Sensurdato 14. januar Språk/målform Bokmål Kontakt under eksamen Magnus Lie Hetland (tlf.
DetaljerAnalyse av Algoritmer
Analyse av Algoritmer Lars Vidar Magnusson 10.1.2014 Asymptotisk notasjon (kapittel 3) Kompleksitetsklasser Uløselige problem Asymptotisk Notasjon Asymptotisk analyse innebærer å finne en algoritmes kjøretid
DetaljerForelesning 30: Kompleksitetsteori
MAT1030 Diskret Matematikk Forelesning 30: Kompleksitetsteori Roger Antonsen Institutt for informatikk, Universitetet i Oslo Forelesning 30: Kompleksitetsteori 19. mai 2009 (Sist oppdatert: 2009-05-19
DetaljerStack. En enkel, lineær datastruktur
Stack En enkel, lineær datastruktur Hva er en stack? En datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn sist Et nytt element legges alltid på toppen av stakken Skal vi
DetaljerDagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist)
Dynamisk programmering Undervises av Stein Krogdahl 5. september 2012 Dagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist) Kapittel 9 er lagt ut på undervisningsplanen.
Detaljern/b log b n = (lg n) a log b n = n log b a
Masterteoremet 1 T (n) = at (n/b) + f(n) Antall «barn»: Størrelse per «barn»: «Høyde»: a n/b log b n = (lg n) Rota har f(n) arbeid; hver løvnode har en konstant mengde arbeid. Hva vil dominere totalen?
DetaljerINF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )
INF2220: Forelesning 1 Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel 4.1-4.3 + 4.6) PRAKTISK INFORMASJON 2 Praktisk informasjon Kursansvarlige Ragnhild Kobro Runde (ragnhilk@ifi.uio.no)
DetaljerOversikt over kvadratiske kongruenser og Legendresymboler
Oversikt over kvadratiske kongruenser og Legendresymboler Richard Williamson 3. desember 2014 Oppgave 1 Heltallet er et primtall. Er 11799 en kvadratisk rest modulo? Hvordan løse oppgaven? Oversett først
Detaljer