O(1) søking? Søking i sortert array og i søketrær: Optimalt søk som er O(1):
|
|
- Irene Borgen
- 7 år siden
- Visninger:
Transkript
1 Hashing
2 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) Søket går saktere jo flere data som er lagret Optimalt søk som er O(1): Finn den søkte verdien med bare ett direkte oppslag i datastrukturen, uavhengig av n Er praktisk mulig bare hvis antall elementer er lite og vi har en gitt nummerering av alle elementer som kan lagres i datastrukturen (f.eks. 11 spillere på et fotballag)
3 Hashing: Et forsøk på å lage en O(1) datastruktur Alle dataene lagres i en 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 (og innsetting og fjerning) i hashtabellen blir da O(1)!
4
5 Hashing: Eksempel Skal lage et register for maksimalt 1000 objekter Hvert objekt indentifieres med en nøkkelverdi som er et unikt syvsifret tall, f.eks Kan bruke array med 10 mill. elementer, men... Bruker en array med lengde 1000 (hashlengden) Bruker en enkel hashfunksjon: De tre siste sifrene av nøkkelverdien brukes som hashverdi hash(key) = key % 1000 hash( ) = 996 (objektet lagres på indeks 996) Og da er alt i orden og vi har en O(1) struktur?
6 Problem: Kollisjoner (hash-clash) Kollisjon: To dataobjekter får samme indeks i hash-tabellen Eksempel: hash(key) = key % 1000 hash( ) = 331 hash( ) = 331 Hashing kan bli O(n) hvis mange kollisjoner
7 Og kollisjoner skjer «hele tiden» «En ulykke skjer sjelden alene» «Alt her i verden» (data) har en tendens til å ville skje samtidig og/eller opptre i klynger/clustere: Byer, bilkøer, industriklynger, sosiale samlinger Fornavn Maurtuer, fiskestimer, gresshoppesvermer Skogholt, oaser 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
8 Hashing, kollisjoner og effektivitet Ved bruk av hashing vil det alltid være mange kollisjoner i store datamengder For at hashing skal være effektivt, må: Hashfunksjonen som brukes gi et lite/minimalt 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
9 Vanlige anvendelser av hashing I store databasesystemer Internt i operativsystemer: Memoryhåndtering Filsystemer I kompilatorer Symboltabeller (funksjons- og variabelnavn) Spillprogrammer Lagring av «alle muligheter videre» i strategispill som f.eks. sjakk Rask gjenfinning av f.eks. grafikkelementer i 3D-spill Stavekontroll Rask tilgang til riktig stavede ord krever ikke alfabetisk sortering MS Word, emacs...
10 Hashfunksjoner Hash: «Kutte opp i biter og blande sammen» Perfekt hashfunksjon: Lager aldri kollisjoner, alle elementer får unik indeks Finnes bare for kontrollerte tilfeller der alle data er kjent Krav til en god/effektiv hashfunksjon: Beregning av hashverdien må være rask og O(1) Sprer hashverdiene jevnt i hashtabellen Minimerer antall kollisjoner Konstruksjon av gode hashfunksjoner er ingen «eksakt vitenskap»: Avhengig av datasettet og av lengden(!) på tabellen Baserer seg i stor grad på heuristikk og empiri
11 Noen (mer eller mindre) ulike og vanlige typer hashfunksjoner Trunkering Sammenslåing («folding») Midten-av-kvadratet Bytte av tallsystem Utplukk og ombytting Basert på lengde av nøkkelverdi
12 Hashfunksjon: Trunkering og/eller bruk av resten ved heltallsdivisjon «Klipper» bare ut en del av nøkkelverdien Eksempler: Nøkkelverdi er en streng: Bruk de tre første bokstavene, tolket som siffer 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 oftest mye kollisjoner i tabellen
13 Hashing med heltallsdivisjon Eksempel 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 =
14 Hashfunksjon: Sammenslåing («folding») Del opp nøkkelverdien i flere «småbiter» Så sammen/kombinér «småbitene», med f.eks. aritmetiske operasjoner, til en hashverdi Eksempel: Nøkkelverdi: Lengde av hashtabell (hashlengde) 1000 Hashverdi: ( ) % 1000 = 100 Sammenslåing sprer oftest bedre enn trunkering, spesielt hvis hashlengden er et primtall! (997 og 1009 er bedre som hashlengder enn 1000)
15 Sammenslåing: Eksempel hashlengde = 1009 nøkkelverdi: en tekststreng int hash(string s) { int h = 0; for (int i = 0; i < s.length(); i++) h += (int)(s.charat(i)) return h % 1009; } hash("vw Karmann Ghia") = 317 hash("porsche 356A") = 979 hash("alfa Romeo Spider") = 556 hash("renault Floride") = 463
16 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 Kan også brukes på ikke-numeriske nøkkelverdier, ved å tolke bitsekvensene som tallverdier
17 Hashfunksjon: Bytte av tallsystem Antar nøkkelverdi er et desimalt heltall, skrevet i det vanlige 10-tallsystemet 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 Bytte av tallsystemer i Java: Se f.eks. Integer.toOctalString
18 Hashfunksjon: Utplukk og ombytting Tar ut enkelte siffer (eller tegn) fra nøkkelverdien og bytter om på disse Sprer relativt godt i de fleste tilfeller 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
19 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
20 Innsetting av dataelement i hashtabell 1. Bruk en hashfunksjon til å beregne elementets hashverdi h ut i fra elementets nøkkelverdi 2. Sett inn dataelementet i hashtabellen Innsetting 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 load factor: Måler hvor full en hashtabell er load factor = antall elementer / hashlengde load factor = 0.5 : halvfull hashtabell
21 Håndtering av kollisjoner To standard metoder for å håndtere 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) Kjeding (chaining): Hvert element i hash-tabellen er en lenket liste (eller et søketre?) som inneholder alle elementer med samme hashverdi Load factor: Åpen adressering: Maks. 1.0 Kjeding: Kan være større enn 1.0
22 Åpen adressering Hvis hashindeksen som beregnes er opptatt, gjør vi en «probing» (søk) etter en annen 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å håndtere muligheten for at vi ikke finner noen ledig plass i tabellen (kommer tilbake til startindeksen) Fire strategier/metoder for åpen adressering: Lineær probing Kvadratisk probing Dataavhengig probing/rehashing Probing med en (pseudo) randomgenerator
23 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
24 Lineær probing: Eksempel
25 Fordeler med lineær probing Enkelt å programmere Svært rask beregning av probes (kun én addisjon) Det kan bevises matematisk at: Hvis dataene som settes inn er «rimelig» tilfeldige og load factor er 0.5 (maks. halvfull hashtabell), vil lineær probing (nesten) alltid gi hashtabeller med O(1) effektivitet
26 Problemer med lineær probing Forsterker tendenser til clustering/klumping: Sprer ikke data som begynner å lage clustere Alle elementer som hashes til samme indeks («primary clustering») vil fortsatt bli liggende i en «klump» i tabellen Innsetting og søking vil begynne å ta lang tid når tabellen er full (load factor > 0.7) Det blir (for) lange sekvenser i tabellen som må gås gjennom for å finne en ledig plass Bedre med en probingstrategi som bidrar til å løse opp «primary clustering»
27 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 kommer til slutten av/havner utenfor tabellen
28 Kvadratisk probing: Eksempel
29 Fordeler med kvadratisk probing Relativt enkelt å programmere Sprer elementene bedre enn lineær probing Løser opp «primary clustering» ved å flytte elementer med lik hashverdi langt fra hverandre Det kan bevises matematisk at: Hvis load factor er 0.5 og hashlengden er et primtall, vil kvadratisk probing alltid gi hashtabeller med O(1) effektivitet
30 Problemer med kvadratisk probing Beregning av «probes» med kvadrering er mer kostbart Løser ikke opp «secondary clusters»: «Klumper» av elementer, som har hashverdier som ligger nære hverandre i hashtabellen, vil bare flyttes rundt og i liten grad spres Matematisk analyse av kvadratisk probing er vanskeligere enn for lineær probing, og ikke komplett de mest bruke løsningene er i stor grad basert på «best practice»
31 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
32 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
33 Andre metoder for åpen adressering For å få enda bedre spredning og fjerne også sekundære clustere: Dataavhengig probing/rehashing Bruk en ny og anderledes hashingfunksjon 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. 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 er deterministiske (pseudo random)
34 Når hashtabellen blir «full» Ved bruk av åpen adressering bør hashlengden økes, for å sikre ~O(1) effektivitet, når: load factor blir > 0.8, eller vi ikke finner noen ledig indeks ved kollisjoner Vanlig å øke lengden av hashtabellen til det «dobbelte» Vet at effektiviteten er garantert for load factor < 0.5 Velger oftest 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
35 Fjerning av elementer fra en hashtabell med åpen adressering Er vanskelig, fordi vi risikerer å «bryte kjeden» ved å fjerne et element som ligger i en liste av probes som er resultatet av flere kollisjoner 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
36 Hashing med kjeding Hashtabellen er en array av lister (buckets): Vanlig å bruke en usortert lenket liste Alternativt kan den lenkete listen «simuleres» ved å legge elementer som kolliderer i et ekstra «overflow» område i hashtabellen, for å spare noe overhead/ lagerplass til pekere (se figur 14.3 i læreboken) 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
37 Kjeding: Eksempel
38 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 Hashing med kjeding er O(1) hvis: Hashfunksjonen sprer jevnt, slik at ingen lister blir veldig lange Load factor ikke er for stor, slik at listene ikke blir for lange selv om hashfunksjonen er god
39 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.
40 Effektivitet av kjeding: Test av søking Load factor = 1.0 Varierende hashlengde Fast hashlengde Varierende load factor
41 Kjeding: Fordeler og ulemper Fordeler: Raskere(?) søking enn for åpen adressering, fordi vi alltid bare sammenligner med elementer som har samme 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
42 Sammenligning: Søkealgoritmer og datastrukturer 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** Nja... O(1) O(1) O(1) Søkealgoritme Datastruktur Hashtabell Interpol.- søk Array Ja O(n) O(log(log n)) O(n) *: 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
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,
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
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
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
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
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
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
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
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
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
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
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
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
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
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... 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)
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
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
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
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
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
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
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
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
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
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
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
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
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(?):
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
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,
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):
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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,
DetaljerIndeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser
UNIVERSITETET I OSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Treliknende strukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF30 3.3.2014
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
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
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
DetaljerIndeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser
UNIVERSITETET I OSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF30 29.2.2016 Ellen
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
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
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
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
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 /
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
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: 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-
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.
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
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
DetaljerIndeksering. Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser
UNIVERSITETET I OSLO Indeksering Konvensjonelle indekser B-trær og hashing Flerdimensjonale indekser Trestrukturer Hashliknende strukturer Bitmapindekser Institutt for Informatikk INF3100 V18 Evgenij Thorstensen
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.
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.
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
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.
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
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
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
DetaljerINF2220: Gruppe me 2. Mathias Lohne Høsten 2017
INF0: Gruppe me Mathias Lohne Høsten 0 1 Rød-svarte trær Vanlige binære søketrær blir fort veldig ubalanserte. røv å sett inn 1,,, 4, 5,, 7,... (i den rekkefølgen) i et binært søketre. Da vil vi i praksis
DetaljerDagens plan: INF2220 - Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær
Dagens plan: INF2220 - lgoritmer og datastrukturer HØTEN 2007 Institutt for informatikk, Universitetet i Oslo (kap. 4.7) (kap. 12.2) Interface ollection og Iterator (kap. 3.3) et og maps (kap. 4.8) INF2220,
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
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»
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
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
DetaljerAlgoritmer - definisjon
Algoritmeanalyse Algoritmer - definisjon En algoritme* er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede
DetaljerNITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 2013
NITH PG4200 Algoritmer og datastrukturer Løsningsforslag Eksamen 4.juni 20 ette løsningsforslaget er til tider mer detaljert enn det man vil forvente av en eksamensbesvarelse. et er altså ikke et eksempel
DetaljerAlgoritmer - definisjon
Algoritmeanalyse Algoritmer - definisjon En algoritme er en beskrivelse av hvordan man løser et veldefinert problem med en presist formulert sekvens av et endelig antall enkle, utvetydige og tidsbegrensede
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
DetaljerFlerveis søketrær og B-trær
Flerveis søketrær og B-trær Flerveis søketre * Generalisering av binært søketre Binært søketre: Hver node har maksimalt 2 subtrær/barn og 1 verdi Barna ligger sortert på verdi i forhold til den ene verdien
DetaljerKompleksitetsanalyse Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder
Helge Hafting 25.1.2005 Opphavsrett: Forfatter og Stiftelsen TISIP Lærestoffet er utviklet for faget LO117D Algoritmiske metoder Innhold 1 1 1.1 Hva er en algoritme?............................... 1 1.2
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
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.
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........................
DetaljerDagens tema. Sortering. Fortsettelse om programmering vha tråder.
Dagens tema Sortering. Fortsettelse om programmering vha tråder. «orden» i dataene vi blir fort lei av å lete poleksempel internett «alt» er søking og sortering alternativer til sortering og søking binære
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
DetaljerInnledning. IN2010/INF Algoritmer og datastrukturer. Tirsdag 27. november 2018 Kl (4 timer)
Innledning IN2010/INF2220 - Algoritmer og datastrukturer Tirsdag 27. november 2018 Kl. 14.30-18.30 (4 timer) Oppgavesettet består av totalt 15 oppgaver. Poengsum er angitt for hver oppgave. Maksimum poengsum
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.
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
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
Detaljer