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
|
|
- Aleksander Langeland
- 8 år siden
- Visninger:
Transkript
1 Hashing
2 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, fordi logaritmen vokser meget langsomt......men vil allikevel gi lengre søketider for voksende n Kan vi klare å lage en datastruktur som har samme effektivitet uansett hvor stor n er?
3 O(1) søking? O(1) - søking: Uavhengig av antall elementer Finn verdien med bare ett direkte oppslag i datastrukturen Er praktisk mulig bare hvis vi har en nummerering av alle mulige elementer som kan lagres i datastrukturen, og vi vet hvor hvert element ligger Eksempel: Data om alle personer i Norge, lagret i en array der indeksen til data om hver person er personnummeret
4 Hashing: Et forsøk på O(1) effektivitet Alle dataene lagres i en lang array med «nok plass», en hashtabell (aka «buckets») Hvert element som lagres har en nøkkelverdi Ut i fra nøkkelverdien beregnes hvilken indeks i hashtabellen som et element skal ligge på Indeksen beregnes med en hashfunksjon Indeksen som beregnes kalles en hashverdi Hvis alle hashverdier som beregnes er ulike, har alle elementer en unik indeks søking blir O(1)!
5
6 Typiske anvendelser av hashing Databasesystemer Minnehåndtering i operativsystemer Håndtering av variabler og metoder i kompilatorer Rask gjenfinning av grafikkelementer i 3D-spill Stavekontroll i editorer og tekstbehandlere: Riktig stavede ord kan legges i en hashtabell i stedet for å sorteres alfabetisk i et søketre
7 Hashing: Eksempel Skal lage et register for maksimalt 1000 objekter Unike nøkkelverdier: Syvsifret tall, f.eks Kan bruke en array med 10 mill. elementer, men... Bruker en array med lengde 1000 (hashlengden) Tre siste sifre i nøkkelverdi brukes som hashverdi: hash(key) = key % 1000 hash( ) = 996 (lagres på indeks 996) Og da er alt i orden og vi har en O(1) struktur?
8 Problem: Kollisjoner Kollisjon*: To elementer får samme indeks Eksempel: hash(key) = key % 1000 hash( ) = 331 hash( ) = 331 Hashing kan bli O(n) hvis det er mange kollisjoner i hashtabellen! *: Aka «hash-clash»
9
10 Og kollisjoner skjer «hele tiden» «En ulykke skjer sjelden alene» «Alt» har en tendens til å opptre i klynger/clustere: Byer, bilkøer, industriklynger, sosiale samlinger Fornavn Maurtuer, fiskestimer, gresshoppesvermer Galakser, stjernehoper Hvorfor det alltid er slik vet vi egentlig ikke, men: Det skal «veldig lite til» før ting begynner å kollidere Klassisk eksempel: Fødselsdagsparadokset
11 Hashing, kollisjoner og effektivitet Det er alltid mange kollisjoner i hashing med store datamengder For at hashing skal være effektivt må: Hashfunksjonen som brukes gi et lite antall kollisjoner og spre dataene godt i hashtabellen Kollisjoner håndteres så effektivt som mulig Hvis disse to kravene tilfredsstilles, kan hashing være mer effektivt enn både søketrær og B-trær for svært store datamengder
12 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 Alle elementer får en unik indeks Kan bare lages i tilfeller der alle data er kjent
13 Effektive hashfunksjoner Krav til en effektiv hashfunksjon: Beregning av hashverdien må være rask og O(1) Sprer hashverdiene jevnt i hashtabellen Gir et lite antall kollisjoner Utvikling av effektive hashfunksjoner er ikke en «eksakt vitenskap»: Antall kollisjoner avhenger både av datasettet og av lengden på hashtabellen Baserer seg i stor grad på heuristikk og empiri
14 Hashfunksjoner og hashlengde Hashlengde: Antall elementer i hashtabellen Hashfunksjonen beregner en indeks i hashtabellen: Verdien som returneres må være større eller lik 0 (null) og mindre enn hashlengden Beregner en verdi h basert på nøkkelverdien Returnerer resten ved heltallsdivisjon av h med hashlengden: h % hashlengde Vi vil alltid få bedre spredning og færre kollisjoner hvis hashlengden er et primtall: F.eks. er 997 og 1009 bedre hashlengder enn 1000
15 Noen typer hashfunksjoner Avkorting Sammenslåing / Folding Midten-av-kvadratet Bytte av tallsystem Utplukk og ombytting Basert på lengde av nøkkelverdi
16 Hashfunksjon: Avkorting (truncation) «Klipper» bare ut en del av nøkkelverdien Eksempel, nøkkelverdi er en streng: Bruk de k første bokstavene, tolket som siffer Eksempel, nøkkelverdi er et heltall: Bruk de k siste sifferne Finnes med heltallsdivisjon: nøkkelverdi % 10 k Fordel: Rask beregning av hashverdi Ulempe: Fordeler ujevnt, gir mye kollisjoner i tabellen
17 Eksempel: Hashing med enkel avkorting hashlengde = 8 hash(key) = key % hashlengde hash(36) = 36 % 8 = 4 hash(18) = 18 % 8 = 2 hash(72) = 72 % 8 = 0 hash(43) = 43 % 8 = 3 hash(6) = 6 % 8 =
18 Hashfunksjon: Sammenslåing / Folding Del opp nøkkelverdien i flere «småbiter» Slå sammen «småbitene», med f.eks. aritmetiske operasjoner, til en hashverdi Eksempel: Nøkkelverdi: Lengde av hashtabell (hashlengde) 1000 Hashverdi: ( ) % 1000 = 100 Folding sprer bedre enn avkorting
19 Enkel folding av tekststrenger int hash(string S) { int h = 0; for (int i = 0; i < S.length(); i++) h += (int)(s.charat(i)); return h % hashlengde; } Noen verdier med hashlengde = 1009 : hash("vw Karmann Ghia") = 317 hash("porsche 356A") = 979 hash("alfa Romeo Spider") = 556 hash("renault Floride") = 463
20 Problem: Enkel folding sprer dårlig I eksemplet på forrige side vil de fleste hashverdiene havne i et relativt lite intervall noen hundre opp til et par tusen for tekst-strenger av begrenset lengde Ubrukelig for store datasett med millioner av data For å spre bedre kan vektet folding brukes: Gi tegnene en vekt basert på posisjon Tolker strengen noe tilsvarende som et desimalt tall, der hvert tegn er et siffer som angir antallet av en potens av 10
21 Eksempel: Vektet folding av tekststrenger Tolk f.eks. 4 og 4 tegn i strengen som «desimale tall»: VW_Karmann_Ghia Beregn: ((V + W*10 + _*100 + K*1000) + (a + r*10 + m*100 + a*1000) + (n + n*10 + _*100 + G*1000) + (h + i*10 + a*100)) % hashlengde Gir mye større spenn i verdiene som beregnes
22 Kode: Vektet folding av tekststrenger int hash(string S) { int h = 0, i = 0; while (i < S.length()) { int potens = 1; for (int j = 0; (j < 4 && i < S.length()); j++) { h += (int)(s.charat(i)) * potens; potens *= 10; i++; } } return h % hashlengde; }
23 Javas egen hashfunksjon for strenger Merk: String.hashCode() ignorerer overflow og kan returnere negative verdier(!)
24 Hashfunksjon: Midten-av-kvadratet Anta nøkkelverdien er et heltall* Beregn kvadratet av nøkkelverdien Hashverdi: Siffere i midten av kvadratet Eksempel: Bruker hashverdier med tre sifre ( ) Nøkkelverdi: = hash(18562) = 547 *: For ikke-numeriske nøkkelverdier kan vi bare tolke bitsekvensene som tall
25 Hashfunksjon: Bytte av tallsystem* Antar nøkkelverdi er et desimalt heltall: Grunntallet er 10, sifferne er 0, 1, 2, 3,..., 8, = = Skriver om nøkkelverdien til f.eks. 8-tallsystemet: Grunntallet er 8, sifferne er 0, 1, 2, 3, 4, 5, 6, = = Hvis hashlengden er 1009: hash(1369) = 2531 % 1009 = 513 *: Det finnes flere metoder for bytte av tallsystemer i Java, se f.eks. Integer.toOctalString
26 Hashfunksjon: Utplukk og ombytting Plukker ut noen siffer eller tegn fra nøkkelverdien Bytter deretter om på disse sifferne/tegnene Eksempel: Vil ha fire-sifrede hashverdier Nøkkelverdier med tolv siffer: Tar ut siffer nummer tre, seks, ni og tolv: 3851 Hashverdi: En eller annen omstokking av sifferne: Reversering: 1583 Høyreskift: 1385 Venstreskift: 8513 Parvis bytting: 8315
27 Hashfunksjon: Basert på lengde av nøkkelverdi Beregner en hashverdi basert på en nøkkelverdi og nøkkelverdiens lengde Eksempel: Nøkkelverdier med åtte siffer: Ganger de tre første sifrene med lengden av nøkkelverdiene: = 3696 Deler på det siste sifferet: 3696 / 7 = 528 hashverdi = 528 % hashlengde
28 Test av ulike hashfunksjoner Enkelt testprogram: hashfunctions.java Tester følgende metoder ved å telle antall kollisjoner: 1. Enkel folding 2. Vektet folding 3. Javas innebygde hashfunksjon (vektet folding) 4. Midten-av-kvadrat 5. Bytte av tallsystem 6. Utplukk og bytting 7. Lengde av dataverdi Hasher hele linjer med tekst fra standard input Testdatasett: cars.txt
29 Innsetting av dataelement i hashtabell Algoritme: 1. Bruk en hashfunksjon til å beregne hashverdi basert på dataelementets nøkkelverdi 2. Sett inn dataelementet i hashtabellen Innsetting i hashtabell er O(1) hvis problemet med kollisjoner kan løses med en O(1) operasjon Innsetting blir langsommere enn O(1) når hashtabellen blir «for full» av data og det blir mange kollisjoner
30 Load factor Hashing er svært effektivt så lenge hashtabellen har «mange ledige plasser» og det er lite kollisjoner «Load factor» L er et mål på hvor full en hashtabell er L = n / h n: Antall elementer lagret i hashtabellen h: hashlengden Tolking av load factor: L = 0.5 Halvfull hashtabell L < 1.0 L > 1.0 Færre datalelementer enn arrayplasser Flere datalelementer enn arrayplasser
31 To metoder for håndtering av kollisjoner Åpen adressering (open adressing): Hvis en indeks i hash-tabellen er opptatt, legges elementet et annet sted i tabellen på en eller annen systematisk måte (f.eks. neste ledige) Load factor maks 1.0 Kjeding (chaining): Hvert element i hash-tabellen er en lenket liste (eller et søketre?) som inneholder alle elementer med samme hashverdi Load factor kan være større enn 1.0
32 Åpen adressering Hvis hashindeksen som beregnes er opptatt, gjør vi en «probing» (et søk) etter en annen ledig indeks i hashtabellen der vi kan legge elementet Probingen må være systematisk/deterministisk, slik at vi kan finne igjen elementet ved søking Må kunne håndtere muligheten for at vi ikke finner noen ledig plass i tabellen på en robust måte
33 Enkleste variant av åpen adressering: Lineær probing Beregn dataelementets hashverdi h Hvis indeks h i hashtabellen er opptatt: Sett inn nytt dataelement på første ledige indeks etter indeks h Hvis indeks h + 1 er opptatt, prøv å sette inn på indeks h + 2, h + 3, h + 4, osv., inntil en ledig plass er funnet Gjør en «wrap-around» (fortsett med indeks 0) hvis vi kommer til slutten av tabellen
34 Lineær probing: Eksempel
35 Fordeler med lineær probing Enkelt å programmere: hashlinear.java Svært rask beregning av probes (kun én addisjon) Det kan bevises at: Hvis dataene som settes inn er «rimelig tilfeldige» og load factor er 0.5 (maks. halvfull hashtabell), vil lineær probing alltid gi hashtabeller med O(1) effektivitet
36 Problemer med lineær probing Lite effektiv håndtering av clustering / klumping: Sprer ikke data som hashes til samme område i hashtabellen «primary clustering» Alle elementer som har samme hashverdi vil bli liggende i en «klump» i tabellen Innsetting og søking lite effektivt når tabellen er full: Lineær probing får problemer for load factor > 0.7 Får lange «opptatte sekvenser» i tabellen som må gås gjennom for å finne en ledig plass
37 Åpen adressering med kvadratisk probing Beregn dataelementets hashverdi h Hvis indeks h i hashtabellen er opptatt: Forsøk å sette inn på indeks h + 1 Hvis indeks h + 1 er opptatt, prøv å sette inn på indeksene: h + 4, h + 9, h + 16, h + 25, h + 36, osv., inntil en ledig plass finnes Gjør en «wrap-around» (fortsett med indeks 0) hvis vi havner utenfor hashtabellen
38 Kvadratisk probing: Eksempel
39 Fordeler med kvadratisk probing Enkelt å programmere: hashquadratic.java Sprer elementene bedre enn lineær probing Løser opp «primary clustering» ved å flytte elementer med lik hashverdi langt fra hverandre Det kan bevises at: Hvis load factor er 0.5 og hashlengden er et primtall, vil kvadratisk probing alltid gi hashtabeller med O(1) effektivitet
40 Problemer med kvadratisk probing Beregning av kvadratiske «probes» er mer kostbart enn lineære Løser ikke opp «secondary clusters»: Elementer som har hashverdier som ligger nære hverandre i hashtabellen, vil i liten grad spres Matematisk analyse av kvadratisk probing er vanskeligere enn for lineær probing og ikke komplett, de mest brukte løsningene er i stor grad basert på «best practice»
41 Lineær og kvadratisk probing: Sammenligning av effektivitet av søking Konstant load factor lik 0.9, varierende hashlengder Søk der element ble funnet Søk der element ikke ble funnet
42 Lineær og kvadratisk probing: Sammenligning av effektivitet av søking Konstant hashlengde lik 1000, varierende load factor Søk der element ble funnet Søk der element ikke ble funnet
43 Åpen adressering med rehashing Probing med rehashing*: Bruk en annen og anderledes hashfunksjon for å finne neste indeks/probe ved kollisjoner Hvis neste indeks også er opptatt, prøv med f.eks. 2 ganger ny hashverdi, deretter 3 ganger ny verdi etc. Gir ofte bedre spredning enn lineær og kvadratisk probing Kan løse opp både primære og sekundære clustere *: Også kalt «dataavhengig probing»
44 Åpen adressering med bruk av en randomgenerator Probing med en (pseudo) randomgenerator: Hvis kollisjon, bruk hashverdien som seed i en randomgenerator og beregn nye indekser som en sekvens av «tilfeldige» tall (% hashlengde) inntil ledig plass funnet Fungerer fordi alle randomgeneratorer egentlig er deterministiske (pseudo random) og sekvensen av tilfeldige tall kan gjenskapes Kan også gi bedre spredning enn lineær og kvadratisk probing
45 Når hashtabellen blir full Med åpen adressering bør hashlengden økes når: Load factor blir > 0.8, eller: Vi ikke finner noen ledig indeks ved kollisjoner Vanlig å doble lengden av hashtabellen: Vet at effektiviteten er garantert for load factor < 0.5 Velger alltid hashlengde lik nærmeste primtall Økning av hashlengden er en O(n) operasjon: Alle elementer må hashes på nytt for at de skal kunne finnes igjen med ny hashlengde
46 Fjerning av elementer fra en hashtabell med åpen adressering Problem: Vi risikerer å «bryte kjeden» ved å fjerne et element som ligger i en liste av probes Vanlig løsning: Ikke fjern elementer, men bruk i stedet en ekstra boolsk array til å merke at elementer skal slettes Ved kollisjoner kan vi stoppe kjeden av probes når vi kommer til et element som er merket som fjernet, og bare overskrive dette elementet Alle elementer som er merket som fjernet, blir tatt vekk hver gang vi må gjøre en fullstendig rehashing i forbindelse med økning av lengden på hastabellen
47 Hashing med kjeding Hashtabellen er en array av lister (buckets): Vanlig å bruke usorterte lenkede lister Alternativt kan listene «simuleres» ved å legge elementer som kolliderer i et «overflow» område i hashtabellen, for å spare overhead til pekere* Kollisjoner løses enkelt: Alle elementer som får samme hashverdi legges inn i listen som ligger på denne indeksen i hashtabellen Hashing med kjeding partisjonerer dataene opp i små delmengder som kan behandles effektivt *: Se figur E.3 i Appendix E i læreboka
48 Kjeding: Eksempel
49 Effektivitet av hashing med kjeding Innsetting og søking krever: Beregning av hashverdi / indeks i hashtabellen Sekvensielt søk i den usorterte listen som ligger lagret på denne indeksen Enkel implementasjon: hashchained.java Hashing med kjeding kan bli O(1) hvis: Hashfunksjonen sprer jevnt, slik at listene blir omtrent like lange Load factor ikke er for stor, slik at listene ikke blir svært lange
50 Load factor, hashlengde og kjeding Kjeding fungerer også for load factor større enn 1.0, hvis hashfunksjonen sprer jevnt Fra Wikipedia: Chained hash tables remain effective even when the number of table entries n is much higher than the number of slots. Their performance degrades more gracefully (linearly) with the load factor. For example, a chained hash table with 1000 slots and 10,000 stored keys (load factor 10) is five to ten times slower than a 10,000-slot table (load factor 1); but still 1000 times faster than a plain sequential list, and possibly even faster than a balanced search tree.
51 Effektivitet av kjeding: Test av søking Load factor = 1.0 Varierende hashlengde Fast hashlengde Varierende load factor
52 Kjeding: Fordeler og ulemper Fordeler: Raskt, sammenligner bare elementer med lik hashverdi Tåler load factor >> 1.0, mindre behov for økning av hashlengde og full rehashing Fjerning av elementer er enkelt (lenket liste) Ulemper: Krever O(n) ekstra plass til referanser/pekere Økning av hashlengde med full rehashing er mer komplisert/tidkrevende enn for åpen adressering, fordi vi må håndtere dynamisk hukommelse/pekere
53 Sammenligning: Søkealgoritmer og datastrukturer Søkealgoritme Datastruktur Sortert? Innsetting Søking Fjerning Sekvensiell Liste/array Nei O(1) O(n) O(n) Binærsøk Array Ja O(n) O(log n) O(n) Søketre* Binært tre Ja O(log n) O(log n) O(log n) Hashing** Hashtabell Tja O(1) O(1) O(1) *: Garantert oppførsel (AVL) **: Ikke garantert
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
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
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)
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
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
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
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
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..)
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?
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
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
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
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
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
DetaljerHashtabeller. Lars Vidar Magnusson Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering
Hashtabeller Lars Vidar Magnusson 12.2.2014 Kapittel 11 Direkte adressering Hashtabeller Chaining Åpen-adressering Dictionaries Mange applikasjoner trenger dynamiske sett som bare har dictionary oparsjonene
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
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)
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
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
DetaljerObligatorisk oppgave 1 INF1020 h2005
Obligatorisk oppgave 1 INF1020 h2005 Frist: fredag 7. oktober Oppgaven skal løses individuelt, og må være godkjent for å kunne gå opp til eksamen. Før innlevering må retningslinjene Krav til innleverte
DetaljerDefinisjon: Et sortert tre
Binære søketrær Definisjon: Et sortert tre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større
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
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
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
DetaljerFlerveis søketrær og B-trær
Flerveis søketrær og B-trær Flerveis (multi-way, n-ært) søketre Generalisering av binært søketre Binært søketre: Hver node har maksimalt 2 barn og 1 nøkkelverdi. Barna ligger sortert på verdi i forhold
DetaljerDefinisjon av binært søketre
Binære søketrær Definisjon av binært søketre For alle nodene i et binært søketre gjelder: Alle verdiene i nodens venstre subtre er mindre enn verdien i noden Alle verdiene i nodens høyre subtre er større
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
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
DetaljerRepetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!
Repetisjon: Binære søketrær Dagens plan: Rød-svarte trær (kap. 12.2) B-trær (kap. 4.7) bstrakte datatyper (kap. 3.1) takker (kap. 3.3) For enhver node i et binært søketre gjelder: lle verdiene i venstre
DetaljerHeap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock
Heap og prioritetskø Marjory the Trash Heap fra Fraggle Rock Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle
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
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,
DetaljerBinære trær: Noen algoritmer og anvendelser
Binære trær: Noen algoritmer og anvendelser Algoritmer / anvendelser: Søking i usortert binært tre Telling av antall noder og nivåer i treet Traversering av binære trær Binære uttrykkstrær Kunstig intelligens(?):
DetaljerEKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 9. mai 2016 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet består
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
DetaljerHeap* En heap er et komplett binært tre: En heap er også et monotont binært tre:
Heap Heap* En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger til venstre En heap er også et
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
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
DetaljerINF2220: Forelesning 2
INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre
DetaljerINF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)
INF2220: Forelesning 2 Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7) REPETISJON: BINÆRE SØKETRÆR 2 Binære søketrær 8 4 12 2 7 9 15 6 11 13 16 For enhver node i et binært søketre
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):
DetaljerTDT4105 Informasjonsteknologi, grunnkurs
1 TDT4105 Informasjonsteknologi, grunnkurs Matlab: Sortering og søking Anders Christensen (anders@idi.ntnu.no) Rune Sætre (satre@idi.ntnu.no) TDT4105 IT Grunnkurs 2 Pensum Matlab-boka: 12.3 og 12.5 Stoffet
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
DetaljerBinær heap. En heap er et komplett binært tre:
Heap Binær heap En heap er et komplett binært tre: Alle nivåene i treet, unntatt (muligens) det nederste, er alltid helt fylt opp med noder Alle noder på nederste nivå ligger så langt til venstre som mulig
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerOrdliste. Obligatorisk oppgave 1 - Inf 1020
Ordliste. Obligatorisk oppgave 1 - Inf 1020 I denne oppgaven skal vi tenke oss at vi vil holde et register over alle norske ord (med alle bøyninger), og at vi skal lage operasjoner som kan brukes til f.
DetaljerAlgoritmer og Datastrukturer IAI 21899
Eksamen i Algoritmer og Datastrukturer IAI 21899 Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 30. november 2000, kl. 09.00-14.00 LØSNINGSFORSLAG 1 Del 1, Binære søketrær Totalt
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
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
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
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
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
Detaljer7) Radix-sortering sekvensielt kode og effekten av cache
) Radix-sortering sekvensielt kode og effekten av cache Dels er denne gjennomgangen av vanlig Radix-sortering viktig for å forstå en senere parallell versjon. Dels viser den effekten vi akkurat så tilfeldig
DetaljerUNIVERSITETET. Indeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Hashliknende strukturer.
UNIVERSITETET IOSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF30 22.2.2011
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,
DetaljerFra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes
Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert 20.03.10 Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes til å løse problemer. Undersøke ulike implementasjoner
DetaljerAlgoritmer og Datastrukturer
Eksamen i Algoritmer og Datastrukturer Høgskolen i Østfold Avdeling for informatikk og automatisering Torsdag 10. desember 1998, kl. 09.00-15.00 Hjelpemidler: Alle trykte og skrevne hjelpemidler. Kalkulator.
DetaljerOppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.
Høgskoleni Østfold EKSAMEN Emnekode: Emnenavn: ITF20006 Algoritmer og datastrukturer Dato: Eksamenstid: 9. mai 2016 9.00 13.00 Hjelpemidler: Faglærer: Alle trykte og skrevne Jan Høiberg Om eksamensoppgaven
DetaljerHva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først
Køer Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først Et nytt element legges alltid til sist i køen Skal vi ta ut et element, tar vi alltid
DetaljerHvorfor sortering og søking? Søking og sortering. Binære søketrær. Ordnet innsetting forbereder for mer effektiv søking og sortering INF1010 INF1010
Hvorfor sortering og søking? Man bør ha orden i dataene umulig å leve uten i informasjonssamfunnet vi blir fort lei av å lete poleksempel internett alt er søking og sortering alternativer til sortering
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
DetaljerNITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013
NITH PG00 Algoritmer og datastrukturer Løsningsforslag Eksamen.juni 0 Dette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. Det er altså ikke et eksempel
DetaljerSelv-balanserende søketrær
Selv-balanserende søketrær Georgy Maksimovich Adelson-Velsky Evgenii Mikhailovich Landis Søketrær og effektivitet O(log n) effektivitet av binære søketrær kan ikke garanteres Treet til venstre har høyde
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
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 /
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
DetaljerINF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak
LISTER Vanligste datastruktur Mange implementasjonsmåter (objektkjeder, array...) Operasjoner på listen definerer forskjellige typer lister (LIFO, FIFO,...) På norsk bruker vi vanligvis ordet «liste» for
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
DetaljerKonvertering mellom tallsystemer
Konvertering mellom tallsystemer Hans Petter Taugbøl Kragset hpkragse@ifi.uio.no November 2014 1 Introduksjon Dette dokumentet er ment som en referanse for konvertering mellom det desimale, det binære,
DetaljerEt eksempel: Åtterspillet
Trær Et eksempel: Åtterspillet To spillere som «trekker» annenhver gang I hvert trekk velges et av tallene 1, 2, 3, men ikke tallet som motspiller valgte i forrige trekk Valgte tall summeres fortløpende
DetaljerNorsk informatikkolympiade runde
Norsk informatikkolympiade 2017 2018 1. runde Sponset av Uke 46, 2017 Tid: 90 minutter Tillatte hjelpemidler: Kun skrivesaker. Det er ikke tillatt med kalkulator eller trykte eller håndskrevne hjelpemidler.
DetaljerEksamen iin115 og IN110, 15. mai 1997 Side 2 Oppgave 1 Trær 55 % Vi skal i denne oppgaven se på en form for søkestrukturer som er spesielt godt egnet
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i IN 115 og IN110 Algoritmer og datastrukturer Eksamensdag: 15. mai 1997 Tid for eksamen: 9.00 15.00 Oppgavesettet er på 8 sider.
DetaljerINF1010 notat: Binærsøking og quicksort
INF1010 notat: Binærsøking og quicksort Ragnhild Kobro Runde Februar 2004 I dette notatet skal vi ta for oss ytterligere to eksempler der rekursjon har en naturlig anvendelse, nemlig binærsøking og quicksort.
DetaljerBinære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013
Binære søketrær Et notat for INF Stein Michael Storleer 6. mai 3 Dette notatet er nyskrevet og inneholder sikkert feil. Disse vil bli fortløpende rettet og datoen over blir oppdatert samtidig. Hvis du
DetaljerKap 9 Tre Sist oppdatert 15.03
Kap 9 Tre Sist oppdatert 15.03 Definere et tre som en datastruktur. Definere begreper knyttet til tre. Diskutere mulige implementasjoner av tre Analysere implementasjoner av tre som samlinger. Diskutere
DetaljerRekursiv programmering
Rekursiv programmering Babushka-dukker En russisk Babushkadukke er en sekvens av like dukker inne i hverandre, som kan åpnes Hver gang en dukke åpnes er det en mindre utgave av dukken inni, inntil man
DetaljerEt eksempel: Åtterspillet
Trær Et eksempel: Åtterspillet To spillere som «trekker» annenhver gang I hvert trekk velges et av tallene 1, 2, 3, men ikke tallet som motspiller valgte i forrige trekk Valgte tall summeres fortløpende
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
DetaljerINF2220: Time 4 - Heap, Huffmann
INF0: Time 4 - Heap, Huffmann Mathias Lohne mathialo Heap (prioritetskø) En heap (også kalt prioritetskø) er en type binært tre med noen spesielle struktur- og ordningskrav. Vi har to typer heap: min-
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
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
DetaljerHøgskolen i Gjøvik. Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N. EKSAMENSDATO: 11. august 1995 TID:
Høgskolen i Gjøvik Avdeling for elektro- og allmennfag K O N T I N U A S J O N S E K S A M E N FAGNAVN: FAGNUMMER: Algoritmiske metoder LO 164A EKSAMENSDATO: 11. august 1995 TID: 09.00-14.00 FAGLÆRER:
DetaljerEKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00
EKSAMEN Emnekode: ITF20006 Emne: Algoritmer og datastrukturer Dato: 18. mai 2017 Eksamenstid: 09:00 13:00 Hjelpemidler: Alle trykte og skrevne Kalkulator Faglærer: Jan Høiberg Om eksamensoppgavene: Oppgavesettet
DetaljerPG4200 Algoritmer og datastrukturer Forelesning 9
PG4200 Algoritmer og datastrukturer Forelesning 9 Lars Sydnes, NITH 2. april 2014 hash [hæs] hakke, skjære i stykker, ødelegge; hakkemat; lapskaus; hasj; virvar, rot, røre; Hvordan kan noe som kalles hashing
DetaljerBinære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen
Binære søketrær En ordnet datastruktur med raske oppslag Sigmund Hansen Lister og trær Rekke (array): 1 2 3 4 Lenket liste (dobbelt-lenket): 1 2 3 4 Binært søketre: 3 1 4 2 Binære
DetaljerAlle hele tall g > 1 kan være grunntall i et tallsystem.
Tallsystemer Heltall oppgis vanligvis i det desimale tallsystemet, også kalt 10-tallssystemet. Eksempel. Gitt tallet 3794. Dette kan skrives slik: 3 1000 + 7 100 + 9 10 + 4 = 3 10 3 + 7 10 2 + 9 10 1 +
DetaljerEKSAMEN. Emne: Algoritmer og datastrukturer
1 EKSAMEN Emnekode: ITF20006 000 Dato: 18. mai 2012 Emne: Algoritmer og datastrukturer Eksamenstid: 09:00 til 13:00 Hjelpemidler: 8 A4-sider (4 ark) med egne notater Faglærer: Gunnar Misund Oppgavesettet
DetaljerAlle hele tall g > 1 kan være grunntall i et tallsystem.
Tallsystemer Heltall oppgis vanligvis i det desimale tallsystemet, også kalt 10-tallssystemet. Eksempel. Gitt tallet 3794. Dette kan skrives slik: 3 1000 + 7 100 + 9 10 + 4 = 3 10 3 + 7 10 2 + 9 10 1 +
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
DetaljerUNIVERSITETET. Indeksering. Hvordan finne et element raskt? Vera Goebel, Ellen Munthe-Kaas
UNIVERSITETET IOSLO Indeksering Hvordan finne et element raskt? Basert på foiler av Hector Garcia Molina Basert på foiler av Hector Garcia-Molina, Vera Goebel, Ellen Munthe-Kaas Oversikt Konvensjonelle
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)
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
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»
DetaljerBacktracking som løsningsmetode
Backtracking Backtracking som løsningsmetode Backtracking løser problemer der løsningene kan beskrives som en sekvens med steg eller valg Kan enten finne én løsning eller alle løsninger Bygger opp løsningen(e)
DetaljerAlgoritmeanalyse. (og litt om datastrukturer)
Algoritmeanalyse (og litt om datastrukturer) Datastrukturer definisjon En datastruktur er den måten en samling data er organisert på. Datastrukturen kan være ordnet (sortert på en eller annen måte) eller
DetaljerLogaritmiske sorteringsalgoritmer
Logaritmiske sorteringsalgoritmer Logaritmisk sortering Rekursive og splitt og hersk metoder: Deler verdiene i arrayen i to (helst) omtrent like store deler i henhold til et eller annet delingskriterium
DetaljerUNIVERSITETET I OSLO. Indeksering. Hvordan finne et element raskt? Institutt for Informatikk. INF Ellen Munthe-Kaas
UNIVERSITETET I OSLO Indeksering Hvordan finne et element raskt? Institutt for Informatikk INF3100 2.3.2010 Ellen Munthe-Kaas 1 Oversikt Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser
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
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
DetaljerUNIVERSITETET I OSLO
UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 11. juni 2004 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 8
Detaljer