Linjär sökning. Föreläsning 12. Binär sökning. Exempel: Binära sökträd. Binärt sökträd
|
|
- Rune Martinsson
- för 8 år sedan
- Visningar:
Transkript
1 Föreläsning 2 Sökning, Sökträd och Sortering Linjär sökning Starta från början och sök tills elementet hittat eller sekvensen slut. Komplexitet Elementet finns: I medel gå igenom halva listan, O(n) Elementet saknas: I medel gå igenom hela listan, O(n) Om listan är sorterad: Elementet saknas: Räcker i medel att leta genom halva listan n/2, O(n) Binär sökning Om sekvensen har index (tex i en array eller numrerad lista) kan man söka binärt. Successiv halvering av sökintervallet. Vi får värsta-falls och medelkomplexitet O(log n). Jämför med elementet närmast mitten i intervallet. Om likhet klart! Om det sökta värdet kommer före i sorteringsordningen fortsätt sökningen rekursivt i det vänstra delintervallet. Om det kommer efter i sorteringsordningen fortsätt sökningen rekursivt i det högra delintervallet. Exempel: Sök efter elementet 3. Linjär sökning: 8 jämförelser innan träff. Binär sökning: 2 jämförelser innan träff. Sök efter elementet Linjär sökning: 8 jämförelser innan man ger upp. Binär sökning: 4 jämförelser innan man ger upp Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation: Ett binärt träd som är sorterat med avseende på en sorteringsordning R av etikett-typen så att I varje nod N gäller att alla etiketter i vänster delträd går före N som i sin tur går före alla etiketter i höger delträd. Alla noder är definierade. Binära sökträd Om trädet är komplett så vet vi att både medel- och värstafallskomplexiteten är O (log n). Men Det tar tid och kraft att se till att trädet är komplett. Ibland kan man tvingas bygga om hela trädet. Det räcker att se till att balansen är god
2 Balanserade binära sökträd Finns flera olika metoder t.ex.: AVL träd Röd svarta träd (Red-black tree) B-träd Annan trädstruktur med balanseringsfunktionalitet. Flervägs sökträd Ett m-vägs sökträd (m-way search tree, m-ary search tree) är en generalisering av ett binärt sökträd. Trädet är ett ordnat träd där varje nod har högst m delträd. Etiketterna är sekvenser av upp till m- värden i stigande sorteringsordning som fungerar som delningspunkter vid sökning. Oftast är etiketterna nycklar och värdet till en viss nyckel finns i lövet Flervägs sökträd Till en nod med k+ delträd, t, t,, t k hör en sekvens med värden v, v 2,, v k. Sorteringsvillkoret för trädet är att: alla värden i t går före v (i sorteringsordningen) alla värden i t j ligger mellan v j och v j+ för <j<k alla värden i t k går efter v k Operationerna blir liknande de för binärt sökträd. Plattare träd. Höjden = log m n B-träd Ett B-träd av ordning m är en typ av balanserat m-vägs sökträd som uppfyller följande: Roten är antingen ett löv eller har minst två barn Alla noder utom roten och löven har mellan m/ 2 och m barn Alla löv är på samma djup Mer jobb i noderna B-träd Insättning av nya element görs alltid på den djupaste nivån, i rätt löv för att bevara sorteringsordningen. En insättning kan leda till att noden blir för stor (dvs > m). Då måste noden delas upp. Borttagning kan leda till att man måste justera värdena och slå ihop noder eller omfördela värden mellan dem. B-träd av ordning 3 kallas också 2-3 träd 36 B-träd analys: För ett B-träd av ordning m, med höjden h och n nycklar insatta gäller h = O(log n). För att välja rätt underträd vid sökning krävs att man stänger in sökt nyckel mellan två nycklar i noden. Om nycklarna är sorterade och lagrade i en vektor kan man använda binärsökning. Sökning i en nod O(log m) Nycklarna i vektorn måste skiftas runt vid splittring av en nod. Kostnad O(m) Eftersom m är en konstant blir det O() arbete i varje nod vid sökning och insättning. Antalet noder som berörs är uppåt begränsad av höjden. Värstafallskostnad för sökning och insättning O(log n) 362
3 Exempel på B-träd: 2-4 träd Varje nod har, 2 eller 3 nycklar och varje ickelöv har 2-4 barn. Regel för insättning: Man letar sig fram till rätt löv på liknande sätt som i ett vanligt sökträd. Den nya nyckeln sätts in där. Om det blir för många nycklar i det lövet splittras det och det mittersta värdet skickas upp till föräldern som en uppdelningspunkt (eller en ny rotnivå skapas om vi 363 var i rotnoden) Exempel på B-träd: 2-4 träd Regel för borttagning: Leta rätt på rätt nod. Om detta inte är en lövnod byt plats på denna nod och största i delträdet till vänster eller minsta i delträdet till höger. Man letar sig fram till rätt löv i noden, ta bort den som ska bort. Några olika fall kan uppstå vid borttagningen ur lövnoden Enkla fallet: Det finns flera nycklar i noden. Plocka bara bort Halvsvåra fallet: Syskonen har extra noder som vi kan förskjuta till vår nod. Svåra fallet: Vi får tomt och syskonen har bara ett element. Då måste slå ihop noder. 364 Strängsökning Specialfall av sökning. Man söker inte ett enstaka element utan en sekvens av element. Elementet ofta tecken, men kan även vara andra typer av data. Formellt: Vi har ett mönster P med längd m och vi söker i en sekvens S av längd n där m<<n. Ett antal algoritmer Naiv Strängsökning Knuth Morris Pratt Booyer Moore Rabin-Karp Första försök till algoritm: Exempel Börja jämföra mönstret med sekvensen med start i position ett. Jämför mönstret från vänster till höger tills man misslyckas. Flytta då fram en position i sekvensen och försök igen. Värsta fallet: Varje element i S avläses m gånger, dvs O(n*m) I praktiken bättre
4 Knuth Morris Pratt Utnyttjar en felfunktion f som berättar hur mycket av mycket av den senaste jämförelsen man kan återanvända om man felar är definierat som det längsta prefixet i P[,...,j] som också är suffix av P[,...,j] där P är vårt mönster. visar hur mycket av början av strängen matchar upp till omedelbart före felet Felfunktion exempel Om jämförelsen felar på position 4, så vet vi att a,b i position 2,3 är identiska med position, j P[j] A B A B A C f(j) KMP-algoritmen KMPfailureFunction(P) Input: String T (text) with n characters and P (pattern) with m characters. Output: Starting index of the first substring of T matching P, or an indication that P is not a substring of T. f <- KMPfailureFunction(P) i <- i <- j <- j <- while i < m- do while i < n do if P[j] = P[i] then if P[j] = S[i] then f(i)<- j+ if j = m- then return i-m- // En matchning i <- i+ i <- i+ j <- j+ j <- j+ else if j > then else if j > ingen match then // ingen match, vi har gått j index direkt efter j <- f(j-) //j index efter pref som match. prefix // matchande prefix i P else //ingen matchning j <- f(j-) f(i) <- else i <- i+ i <- i+ return ingen matchning av delsträngen P i S i KMP exempel a b a c a a b a c c a b a c a b a a a a a a a b a c a b a b a c a b j a b a c a b a b a c a b a b a c a b j P[j] a b a c a b f(j) 2 KMP-Algoritmen Låt k = i - j (startpositionen för ev matchning) För varje varv i while-loopen händer ett av följande: S[i] = P[j], öka i och j med, k oförändrad. S[i] < > P[j] och j >, i är oförändrad men k ökar med minst eftersom den ändras från i - j till i - f(j-) S[i] < > P[j] och j =, öka i med och öka k med (ty j oförändrad). Alltså för varje varv i loppen ökar antingen i eller k med minst. Max antal varv blir 2n Detta antar att f redan är beräknad (som är O(m)). Total komplexitet: O(n + m)
5 Boyer-Moores algoritm Två idéer: Gör matchningen baklänges, med start i mönstrets sista element. Utnyttja kunskap om mönstrets uppbyggnad och informationen om värdet på den första felmatchande elementet i S för att flytta fram mönstret så långt som möjligt varje gång. Om det finns upprepningar av element i mönstret så får man bara flytta fram till den högraste förekomsten. Förskjutningstabell talar om hur långt man får flytta. Rabin-Karp Beräkna ett hashvärde för mönstret och för varje delsträng av texten som man ska jämföra med Om hashvärdena är skilda, beräkna hashvärdet för det nästa M tecknen i texten Om hashvärdena är lika, utför en brute-force jämförelse mellan P och delsträngen Med andra ord: Endast en jämförelse per deltext Brute-force endast när hashvärdena matchar Rabin-Karp exempel Rabin-Karp hashfunktionen Hashvärdet för AAAAA = 37 Hashvärdet för AAAAH = AAAAAAAAAAAAAAAA AAAAH <> 37 AAAAAAAAAAAAAAAA AAAAH <> 37 AAAAAAAAAAAAAAHA AAAAH = Vilken? Den får inte kosta för mycket... Betrakta de nästa M tecknen i söksträngen som ett M-siffrigt tal i basen b, där b är antalet bokstäver i alfabetet Textsekvensen t[i..i+m-] avbildas på talet! x(i) = t[i]b M- + t[i+]b M t[i+m-] Rabin-Karp hashfunktionen Billigt att beräkna x(i+) från x(i)! x(i+) = t[i+]b M- + t[i+2]b M t[i+m] x(i+) = x(i)b! skifta ett vänster,! - t[i]b M! ta bort den vänstraste termen! + t[i+m]! lägg till den nya högertermen Behöver inte räkna om hela talet utan gör bara en justering för det nya tecknet Hash-värdet fortsättning Om M är stort blir blir (b M ) enormt därför så hashar man med mod ett stort primtal q h(i) = ((t[i]b M- mod q) + (t[i+]b M-2 mod q)+...+ (t [i+m-] mod q)) mod q h(i+) = (h(i)b mod q!! - (t[i]b M mod q)!! + (t[i+m] mod q) mod q
6 Algoritm hash_m <- Beräkna hashvärdet för M hash_s <- Beräkna hashvärdet för den första delsträngen do if (hash_m = hash_s) then Bruteforce jämförelse av M och S hash_s + tecken beräknas while end of text or match Komplexitet Om det är tillräckligt stort primtal q för hashfunktionen så kommer hashvärdet från två mönster vara distinkta I detta fall så tar sökningen O(N) där N är antalet tecken i strängen Men det finns alltid fall som ger i närheten av värsta fallet O(N*M) om primtalet är för litet Sortering Varför ska man sortera Sortering vs sorterad datatyp Stabilitet Grundprinciper för sortering Genomgång av några sorteringsalgoritmer Hur fort går det att sortera en lista med n tal? Sortering varför? Snabba upp andra algoritmer Sökning Hantera stora datamängder Sortering vs Sorterad datatyp Sortering förändrar ordningen mellan objekten i en struktur efter en sorteringsordning (fallande, ökande) Sorterad datatyp De strukturförändrande operationerna i gränsytan (insert, delete) upprätthåller en sorteringsordning mellan de lagrade objekten Saker att beakta Absolut komplexitet Totala komplexiteten i alla implementationssteg Tabell->lista->dubbellänkad lista Passar en viss typ av sortering för en viss typ av implementation Ska man sortera och sedan söka eller osorterad plus linjär sökning
7 Stabilitet Den inbördes relationen mellan två objekt med samma nyckel bibehålls vid sortering [(,),(2,3),(5,7),(8,),(,7) ] => [(8,),(2,3), (5,7),(,7),(,)] Alla sorteringsalgoritmer går inte att göra stabila!! Mer om detta senare Olika grundprinciper Insticks O(n 2 ) välj ut ett godtyckligt och sätt in det på rätt plats Urvals O(n 2 ) välj ut det objekt som är på tur och sätt in det sist/först Utbytes O(n*log(n)) byta plats på objekt som ligger fel inbördes Samsortering O(n*log(n)) bygger på sammanslagning av redan sorterade strukturer Nyckelsortering O(m+n) kräver mer information/kunskap om objektmängden Mer principer Naiva sorteringar - O(n 2 ) Insticks, urvals, och vissa utbytes Smarta sorteringar - O(nlog(n)) Utbytes och samsorteringar Ännu smartare sorteringar - O(n+m) Nyckelsorteringar Bubbelsortering for i= to n- do for j= to n- do if (el[j] > el[j+] do swap(el[j],el[j+]) Stabil sortering? Tidskomplexiteten? O(n 2 )för en fältbaserad lista O(?)för en länkad lista? Divide and Conquer Rekursiv algoritm princip Grundidén är att dela upp problemet i mindre och mindre problem Lös dom för basfallet Slå ihop till en totallösning Mergesort och Quicksort är av denna typ Men de jobbar lite annorlunda O(n*log(n)) Algoritm Sortera sekvensen S Mergesort Divide: Om S har 2 eller flera element dela S i två lika stora delsekvenser S och S2 Recurse: Sortera sekvenserna S och S2 rekursivt Conquer: Sätt tillbaka elementen i S genom att slå samman S och S2 till en sorterad sekvens
8 Analys av mergesort Mergesortträd Ta ett binärt träd T Varje nod i T representerar ett rekursivt anrop av mergesort Associera insekvensen för varje anrop med varje nod v i T Externa noder i T representerar varje enskilt element i ursprungssekvensen S Exempel Divide: Om S har 2 eller flera element dela S i två lika stora delsekvenser S och S2 Recurse: Sortera sekvenserna S och S2 rekursivt Conquer: Sätt tillbaka elementen i S genom att slå samman S och S2 till en sorterad sekvens Ihopslagning av två sekvenser Agorithm merge(s,s2,s) while S is not empty and S2 is not empty do if S.first().element()! S2.first().element() then S.insertLast(S.remove(S.first())) else S.insertLast(S2.remove(S2.first())) while S is not empty do S.insertLast(S.remove(S.first())) while S2 is not empty do S.insertLast(S2.remove(S2.first())) Exempel på sammanslagning S S Agorithm merge(s,s2,s) while S is not empty and S2 is not empty do if S.first().element()! S2.first().element() then S.insertLast(S.remove(S.first())) else S.insertLast(S2.remove(S2.first while S is not empty do S.insertLast(S.remove(S.first())) while S2 is not empty do S.insertLast(S2.remove(S2.first())) S Analys av exekveringstiden Höjden på sorteringsträdet kopplat till sorteringen av en sekvens med n element blir log 2 (n) Antag att insättning och borttagning är av O() Tiden i varje nod i trädet exkluderat tiden för det rekursiva jobbet nedanför är O(n/2 i ) där i är djupet på noden ligger på, ty storleken på sekvensen är n/2 i Det är exakt 2 i noder på djupet i => totala tiden på djupet i i trädet är O(2 i n/2 i ) vilket är O(n) och höjden på trädet är log (n) Så den totala tidskomplexiteten är O(nlog(n)) Algoritm Quicksort Välj ut ett pivotelement Dela upp listan i tre delar Less, Equal, Greater Sortera Less och Greater rekursivt Slå ihop Less+Equal+Greater
9 Quicksort - val av pivotelement O(nlog(n) i bästa fallet Valet av pivotelement kritiskt Vill ha ett pivotelement som ligger i mitten Vid sned fördelning får man insticks/urvals sortering med O(n 2 ) Alternativ (eftersträvar en enkel tilldelning) Välj första/sista, slumpmässigt Medel/median mellan några stycken Största av de två första som skiljer sig åt Algoritm Exempel Välj ut ett pivotelement (det första i listan) Dela upp listan i tre delar Less, Equal, Greater Sortera Less och Greater rekursivt Slå ihop Less+Equal+Greater Analys av Quicksort Men medelfallet ligger nära bästa fallet och värsta fallet inträffar förhoppningsvis inte så ofta. Slumpa ett pivotelement borde ge bra tidskomplexitet Inplace variant av quicksort Algoritm Traversera parallellt från båda hållen i S, gå bakåt från början av S tills man hittar ett element som är >= PE, traversera från slutet mot början till man hittar ett element som är < PE Skifta plats på dessa två element Upprepa till traverseringarna mötes Skifta in PE på rätt plats Rekursivt anropa på Less och Greater 4 42 Exempel Hur snabbt kan man sortera? Jämförelsebaserad sortering "(nlog(n)) undre gräns Nyckelsortering snabbare L R R 43 44
10 !(nlog(n)) bevis Exekveringstiden för en jämförelsebaserad sortering måste vara lika med eller större än djupet på det besluts träd som är associerad med algoritmen Varje nod i detta träd är kopplat till en jämförelse som bestämmer ordning mellan två element i S Därav, varje extern nod i T representerar en unik permutation av elementen i S, och det måste finnas n! noder i T, och höjden är log(n!) Eftersom n! Har åtminstone n/2 termer som är större än eller lika med n/2 => log(n!) = log(n/2)n/2= (n/2)log(n/2) => "(nlog(n)) Det att sortera snabbare än O(nlog(n)) För att göra det måste vi veta mer om objekten vi vill sortera Gå att avbilda på heltalen Största värdet & minsta värdet [V min V max ] O(N+M) där N är antalet element och M är V max -V min N (3,k) (,a) (2,h) (9,j) (3,i) (2,o) (8,s) (,e) (7,q) (4,p) (2,y) (9,w) (,m) M Facksortering (,a) (2,h) (,e) (2,o) (,m) (2,y) (3,k) (3,i) (4,p) (7,q) (8,s) (9,j) (9,w) (,a) (,e) (,m) (2,h) (2,o) (2,y) (3,k) (3,i) (4,p) (7,q) (8,s) (9,j) (9,w) Radix Sort Radix # bas Tittar på strukturen hos nycklarna Antag att talen är representerade i basen M, tex. M=2 binära talsystemet 9 = M= decimala talsystemet Sorterar genom att jämföra siffror/bitar i samma position 48 Straight Radix Sort O(bN) for i! to b- do sortera fältet på ett stabilt sätt, med avseende på i:e biten Jämföra från höger till vänster Antag att vi kan sortera fältet stabilt på O (N) => O(bN) Hur gör vi det? Facksortering. Straight Radix Sort 49 4
11 Funkar den? Straight Radix Sort På grund av stabilitet, så förändras inte den relativa ordningen mellan två nycklar med samma värde Straight Radix Sort, med basen Radix Exchange sort Titta på bitarna från vänster till höger. Sortera fältet på den vänstraste biten 2. Dela fältet i två delar toppen & botten 3. Rekursion! Sortera toppen rekursivt, ignorera vänstraste biten! Sortera botten rekursivt, ignorera vänstraste biten O(bN) där b är antalet bitar och N antalet tal Radix Exchange Sort Toppen Botten Radix Exchange Sort Bygger på samma idé som inplace quicksort, för att dela upp i två delar (toppen och botten) repeat scan top-down to find a key starting with ; scan bottom-up to find a key starting with ; exchange keys; until scan indices cross Radix Exchange Sort 45
12 Några av algoritmerna sammanfattade Algoritm Tidskomplexitet Stabil Minne HeapSort O(n log n) nej O() BubbleSort O(n 2 ) ja O() MergeSort O(n log n) ja O(n) InplaceQuicksort max O(n 2 ) medel O(n log n) nej O(log n) InsertionSort O(n 2 ) beror på datatyp O() RadixExchangeSort O(bN) nej O(b)
Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd
Innehåll Föreläsning 12 Sökträd Sökning Sökning och Sökträd 383 384 Binärt sökträd Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon. Organisation:
Datastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 12 2 Innehåll Handledning, labbar, samarbete, etc Sökträd Sökning Delar av kapitel 15.4-15.5 i boken + OHbilderna 3 Handledning/labutlämning Ingen labhandledning
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning 7 Introduktion till sortering TDDC91,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 24 september 2018 Magnus Nielsen, IDA, Linköpings universitet 7.1 1
Tommy Färnqvist, IDA, Linköpings universitet
Föreläsning 8 Sortering och urval TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 1 oktober 2013 Tommy Färnqvist, IDA, Linköpings universitet 8.1 Innehåll Innehåll 1 Sortering
Föreläsning 11 Datastrukturer (DAT037)
Föreläsning 11 Datastrukturer (DAT037) Fredrik Lindblad 1 4 december 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Lägre gräns för sortering Count sort,
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Sortering Selectionsort, Bubblesort,
Träd Hierarkiska strukturer
Träd Hierarkiska strukturer a 1 a 2 a 3 a 4 a 2 a 5 a 6 a 7 Hierarki: Korta vägar till många Hur korta? Linjär lista: n 2 Träd: Antal element på avståndet m: g m a 1 a 3 a 8 a 12 m = log g n a 9 a 10 Väglängden
ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar
Föreläsning 1 Innehåll ADT Prioritetskö Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util ar Implementering av prioritetskö med heap Sortering med hjälp
Sortering. Brute-force. Sortering Ordna element enligt relation mellan nyckelvärden
Sortering Brute-force Sortering Ordna element enligt relation mellan nyckelvärden Flera olika algoritmer med olika fördelar Brute-force Gå igenom alla permutationer och hitta den där elementen ligger i
Programkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (Listor, Träd, Sökträd och AVL-träd) Elias Castegren elias.castegren.7381@student.uu.se Datastrukturer Vad är en datastruktur?
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Prioritetskö Heap Representation som
Tentamen kl Uppgift 4. Uppgift 5
2D344 Grundläggande Datalogi för F Tentamen 2003-03-0 kl 4.00 9.00 Inga hjälpmedel. Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ
Föreläsning 13 Innehåll
Föreläsning 13 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Heapar Implementering av prioritetskö med heap Klassen PriorityQueue i java.util Programexempel LPT-algoritmen
Datastrukturer och algoritmer. Innehåll. Tabell. Tabell - exempel. Gränsyta till Tabell. Tabell. Modell. Hashtabell Relation, lexikon.
Datastrukturer och algoritmer Föreläsning 7 Tabell, hashtabell Relation & lexikon Innehåll Tabell Tabell Hashtabell Relation, lexikon Modell Uppslagsbok Organisation Ändlig avbildning av argument på värden
Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5
Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5? FORTSÄTTNING TRÄD RECAP (förra föreläsningen) RECAP (förra föreläsningen) Träd är icke-linjära datastrukturer som ofta
Lösningar Datastrukturer TDA
Lösningar Datastrukturer TDA416 2016 12 21 roblem 1. roblem 2. a) Falskt. Urvalssortering gör alltid samma mängd av jobb. b) Sant. Genom att ha en referens till sista och första elementet, kan man nå både
Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna
Föreläsning Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Implementering med lista ar Implementering av prioritetskö med heap Sortering
Föreläsning 9 Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT07) Fredrik Lindblad 27 november 207 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/20/course/dat07 Innehåll 2
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6
Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6? DAGENS AGENDA Komplexitet Ordobegreppet Komplexitetsklasser Loopar Datastrukturer Några nyttiga regler OBS! Idag jobbar
ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar
Föreläsning 1 Innehåll Prioritetsköer och heapar Prioritetsköer och heapar ADT prioritetskö Klassen PriorityQueue i java.util Heapar Implementering av prioritetskö med heap Sortering med hjälp av heap
Seminarium 13 Innehåll
Seminarium 13 Innehåll Prioritetsköer och heapar Prioritetsköer ADTn Klassen PriorityQueue i java.util Implementering med lista Heapar ADTn För implementering av prioritetskö För sortering Efter seminariet
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT07) Fredrik Lindblad 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat07 1 Innehåll
TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find
TDDI16 Datastrukturer och algoritmer Prioritetsköer, heapar, Union/Find Prioritetsköer En vanligt förekommande situation: Väntelista (jobbhantering på skrivare, simulering av händelser) Om en resurs blir
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-27 Idag Balanserade sökträd Splayträd Skipplistor AVL-träd AVL-träd Sökträd Invariant (för varje nod): Vänster och höger delträd har samma
Vad har vi pratat om i kursen?
Vad har vi pratat om i kursen? Föreläsning 1 & 2 Systemminnet och systemstacken Rekursion Abstrakta datatyper Föreläsning 3 ADT:n Länkad lista Föreläsning 4 ADT:n Kö ADT:n Stack Föreläsning 5 Komplexitet
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 4 oktober 2017 1 Idag Algoritmkonstruktion (lite blandat) Redovisning och inlämning av labbteori 3 2 Uppgifter Uppgift
Föreläsning 9. Sortering
Föreläsning 9 Sortering Föreläsning 9 Sortering Sortering och Java API Urvalssortering Instickssortering Söndra och härska Shellsort Mergesort Heapsort Quicksort Bucketsort Radixsort Läsanvisningar och
Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9
Quicksort Koffman & Wolfgang kapitel 8, avsnitt 9 1 Quicksort Quicksort väljer ett spcifikt värde (kallat pivot), och delar upp resten av fältet i två delar: alla element som är pivot läggs i vänstra delen
Tommy Färnqvist, IDA, Linköpings universitet. 1 ADT Map/Dictionary 1 1.1 Definitioner... 1 1.2 Implementation... 2
Föreläsning 4 ADT Map/Dictionary, hashtabeller, skip-listor TDDC91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 9 september 2015 Tommy Färnqvist, IDA, Linköpings universitet 4.1
Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd
Föreläsning AVL-träd, Multi-Wa -sökträd, B-träd DDD7: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer november 5 omm Färnqvist, IDA, Linköpings universitet. Innehåll Innehåll Binära
Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.
Programmering för Språkteknologer II Markus Saers markus.saers@lingfil.uu.se Rum -040 stp.lingfil.uu.se/~markuss/ht0/pst Innehåll Associativa datastrukturer Hashtabeller Sökträd Implementationsdetaljer
Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn
Träd allmänt Träd allmänt Ett generellt träd är Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn där t1,..., tn i sin tur är träd och kallas subträd, vars rotnoder kallas
Algoritmer, datastrukturer och komplexitet
Algoritmer, datastrukturer och komplexitet Övning 6 Anton Grensjö grensjo@csc.kth.se 9 oktober 2015 Anton Grensjö ADK Övning 6 9 oktober 2015 1 / 23 Översikt Kursplanering Ö5: Grafalgoritmer och undre
TDDI16 Datastrukturer och algoritmer. Algoritmanalys
TDDI16 Datastrukturer och algoritmer Algoritmanalys 2017-08-28 2 Översikt Skäl för att analysera algoritmer Olika fall att tänka på Medelfall Bästa Värsta Metoder för analys 2017-08-28 3 Skäl till att
Lösningsförslag för tentamen i Datastrukturer (DAT037) från
Lösningsförslag för tentamen i Datastrukturer (DAT7) från --9 Nils Anders Danielsson. Träd- och köoperationerna har alla tidskomplexiteten O(log s), där s är antalet element i trädet/kön (notera att jämförelser
Föreläsning 4 Datastrukturer (DAT037)
Föreläsning 4 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-10 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt Se http://wwwcsechalmersse/edu/year/2015/course/dat037 Förra
Sökning och sortering
Sökning och sortering Programmering för språkteknologer 2 Sara Stymne 2013-09-16 Idag Sökning Analys av algoritmer komplexitet Sortering Vad är sökning? Sökning innebär att hitta ett värde i en samling
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Binära sökträd algoritmer för sökning, insättning och borttagning, implementering effektivitet balanserade binära sökträd, AVL-träd Abstrakta datatyperna mängd (eng. Set) och lexikon
Fredag 10 juni 2016 kl 8 12
KTH CSC, Alexander Baltatzis DD1320/1321 Lösningsförslag Fredag 10 juni 2016 kl 8 12 Hjälpmedel: En algoritmbok (ej pythonkramaren) och ditt eget formelblad. För betyg E krävs att alla E-uppgifter är godkända,
Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018
Föreläsning 5 TDDC91,TDDE22,725G97: DALG Föreläsning i Datastrukturer och algoritmer 18 september 2018 Institutionen för datavetenskap Linköpings universitet 5.1 Introduktion find,insert och remove i ett
Översikt. Stegvis förfining. Stegvis förfining. Dekomposition. Algoritmer. Metod för att skapa ett program från ett analyserat problem
Översikt Stegvis förfining Pseudokod Flödesdiagram Dekomposition KISS-regeln Procedurell dekomposition DRY-regeln Algoritmer Sortering och sökning Stegvis förfining Metod för att skapa ett program från
Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller
Översikt Linjär sökning Sökning Binär sökning Hashtabeller Programmering tillämpningar och datastrukturer 2 Linjär sökning Binärt sökträd Undersök ett element i taget tills du hittar det sökta Komplexitet
Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet
Föreläsning 13 Innehåll Algoritm 1: Sortera Exempel på problem där materialet i kursen används Histogramproblemet Schemaläggning Abstrakta datatyper Datastrukturer Att jämföra objekt Om tentamen Skriftlig
Datastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande
Programkonstruktion och. Datastrukturer
Programkonstruktion och Datastrukturer Repetitionskurs, sommaren 2011 Datastrukturer (hash-tabeller och heapar) Elias Castegren elias.castegren.7381@student.uu.se Arrayer igen En array är en linjär datastruktur
Innehåll. Föreläsning 10. Specifikation. Mängd. Specifikation. Konstruktion av mängd. Mängd Lexikon Hashtabell
Innehåll Föreläsning Mängd, lexikon och hashtabell Mängd Lexikon Hashtabell Mängd Specifikation Modell: En påse, men den är inte riktigt bra eftersom man tex kan ha mängder med gemensamma element. Organisation:
Sortering. Intern/ extern? Antaganden. Vad kan vi kräva? Rank sort. Rank sort. På en nod/ distribuerad? Jämförelsebaserad/ icke jämförelsebaserad?
Sortering Föreläsning : Sorteringsalgoritmer Sortering: att ordna data i någon sekventiell ordning Sortering förekommer som del i många applikationer Kanonisk form för sorterat data? Skall den sorterade
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-25 Idag Starkt sammanhängande komponenter Duggaresultat Sökträd Starkt sammanhängande komponenter Uppspännande skog Graf, och en möjlig
13 Prioritetsköer, heapar
Prioritetsköer, heapar 31 13 Prioritetsköer, heapar U 101. En prioritetskö är en samling element där varje element har en prioritet (som används för att jämföra elementen med). Elementen plockas ut i prioritetsordning
Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'
Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.' Skrivtid: 08.30 13.30 Hjälpmedel: Inga Lärare: Betygsgränser DVA104' Akademin)för)innovation,)design)och)teknik) Onsdag)2014:01:15) Caroline
Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2
Självbalanserande träd AVL-träd Koffman & Wolfgang kapitel 9, avsnitt 1 2 1 Balanserade träd Nodbalanserat träd: skillnaden i antalet noder mellan vänster och höger delträd är högst 1 Höjdbalanserat träd:
3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.
KTH, Nada, Erik Forslin 2D1343, LÖSNING TILL TENTAMEN I DATALOGI FÖR ELEKTRO Lördagen den 8 mars 2003 kl 14 19 Maxpoäng tenta+bonus = 50+7. Betygsgränser: 25 poäng ger trea, 35 ger fyra, 45 ger femma.
Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor
Abstrakta datatyper 1 Primitiva vektorer Vektorer kan skapas av primitiva datatyper, objektreferenser eller andra vektorer. Vektorer indexeras liksom i C från 0. För att referera en vektor används hakparenteser.
Datastrukturer. föreläsning 10. Maps 1
Datastrukturer föreläsning 10 Maps 1 AVL-träd 1 2 5 2 0 4 1 8 3 2 1 11 1 7 Lecture 6 2 Insättning i AVL-träd Sätt först in det nya elementet på samma sätt som i ett vanligt BST! Det nya trädet kan bli
Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen
Datastrukturer och algoritmer Föreläsning 15 Inför tentamen 1 Innehåll Kursvärdering Vi behöver granskare! Repetition Genomgång av gammal tenta 2 Första föreläsningen: målsättningar Alla ska höja sig ett
Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)
Binära träd Algoritmer och Datastrukturer Markus Saers markus.saers@lingfil.uu.se Upplägg Binära träd (9) Binära sökträd (0.) Träd Många botaniska termer Träd, rot, löv, gren, Trädets rot kan ha ett antal
Föreläsning 5 Datastrukturer (DAT037)
Föreläsning 5 Datastrukturer (DAT037) Nils Anders Danielsson, Fredrik Lindblad 2016-11-14 Förra gången: Cirkulära arrayer Prioritetskö Binära heapar Leftistheapar merge Det verkar inte gå att slå ihop
Föreläsning 5 Innehåll
Föreläsning 5 Innehåll Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Datavetenskap (LTH) Föreläsning 5 VT 2019 1 / 39 Val av algoritm och datastruktur
Programmering för språkteknologer II, HT2014. Rum
Programmering för språkteknologer II, HT2014 Avancerad programmering för språkteknologer, HT2014 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.ling.uu.se/~evelina/uv/uv14/pst2/ Idag - Sökalgoritmer
Några svar till TDDC70/91 Datastrukturer och algoritmer
Några svar till TDDC70/91 Datastrukturer och algoritmer 2011--18 Följande är lösningsskisser och svar till uppgifterna på tentan. Lösningarna som ges här ska bara ses som vägledning och är oftast inte
Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt
Binära träd (forts) Ett binärt träd kan lagras i ett enda sammanhängande minne Roten har index 1 Vänster barn till nod i har index 2*i Höger barn till nod i har index 2*i + 1 Föräldern till nod i har index
Föreläsning 7. Träd och binära sökträd
Föreläsning 7 Träd och binära sökträd Föreläsning 7 Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning Det är extra mycket
Programkonstruktion och Datastrukturer
Programkonstruktion och Datastrukturer VT 2012 Tidskomplexitet Elias Castegren elias.castegren.7381@student.uu.se Problem och algoritmer Ett problem är en uppgift som ska lösas. Beräkna n! givet n>0 Räkna
Datastrukturer. föreläsning 9. Maps 1
Datastrukturer föreläsning 9 Maps 1 Minsta uppspännande träd Maps 2 Minsta uppspännande träd Uppspännande träd till graf fritt delträd innehåller alla noderna Minsta uppspännande träd (MST) är det uppspännande
Övningsuppgifter #11, Programkonstruktion och datastrukturer
Övningsuppgifter #11, Programkonstruktion och datastrukturer Lösningsförslag Elias Castegren elias.castegren@it.uu.se Övningar 1. 1 2. 2 3. Ett binomialträd med rang n har 2 n noder. En binomial heap innehåller
TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Träd Traversering Insättning, borttagning
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-16 Idag Mängder, avbildningar. Hashtabeller. Sortering. Pseudokod Blandning av programmeringsspråk, matematisk notation och naturligt
Prov i DAT 312: Algoritmer och datastrukturer för systemvetare
Prov i DAT 312: Algoritmer och datastrukturer för systemvetare Jacek Malec Datavetenskap, LU 11 april 2003 Datum 11 april 2003 Tid 14 19 Ansvarig lärare Jacek Malec (tel. 03 9890431) Hjälpmedel inga Antal
Rekursiva algoritmer sortering sökning mönstermatchning
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 6-7 Rekursiva strukturer rekursiva definitioner rekursiva funktioner rekursiva bevis: induktion - rekursion strukturell
Föreläsning Datastrukturer (DAT037)
Föreläsning Datastrukturer (DAT037) Nils Anders Danielsson 2015-11-23 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Djupet först-sökning. Minsta uppspännande träd Träd (utan rot)
Exempeltenta GruDat 2002/2003
Exempeltenta GruDat 2002/2003 Endast ett svarsalternativ på varje fråga är korrekt. Felaktigt svar eller felaktigt antal ikryssade svarsalternativ ger noll poäng på uppgiften. Obs: Den riktiga tentan kommer
Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.
Datastrukturer och algoritmer Föreläsning 13 rie och ökträd Innehåll rie rådar rie ökträd tterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat
Föreläsning 11 - Automater, textsökning, tillstånd
Föreläsning 11 - Automater, textsökning, tillstånd Automater Textsökning KMP-automat (Knuth-automat) Boyer-Moore Rabin-Karp Sökning på webben Automater En portkodsautomat med nio knappar kan se ut så här:
Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd
Programmeringsmetodik DV1 Programkonstruktion 1 Moment 8 Om abstrakta datatyper och binära sökträd PK1&PM1 HT-06 moment 8 Sida 1 Uppdaterad 2005-09-22 Tabeller En viktig tillämpning är tabellen att ifrån
Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering
2D1458, Problemlösning och programmering under press Föreläsning 1: Dekomposition, giriga algoritmer och dynamisk programmering Datum: 2007-09-04 Skribent(er): Anders Malm-Nilsson och Niklas Nummelin Föreläsare:
Föreläsning 13 Datastrukturer (DAT037)
Föreläsning 13 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-12-14 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Sammanfattning
Lösningsförslag för tentamen i Datastrukturer (DAT036) från
Lösningsförslag för tentamen i Datastrukturer (DAT036) från 2011-12-16 Nils Anders Danielsson 1. Låt oss benämna indatalistan strängar. Vi kan börja med att beräkna varje strängs frekvens genom att använda
F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad
F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor
Algoritmer och datastrukturer 2012, fo rela sning 8
lgoritmer och datastrukturer 01, fo rela sning 8 Komplexitet för binära sökträd De viktigaste operationerna på binära sökträd är insert, find och remove Tiden det tar att utföra en operation bestäms till
Föreläsning Datastrukturer (DAT036)
Föreläsning Datastrukturer (DAT036) Nils Anders Danielsson 2013-11-18 Idag Mer om grafer: Minsta uppspännande träd (för oriktade grafer). Prims algoritm. Kruskals algoritm. Djupet först-sökning. Cykel
Datastrukturer. föreläsning 6. Maps 1
Datastrukturer föreläsning 6 Maps 1 Avbildningar och lexika Maps 2 Vad är ett lexikon? Namn Telefonnummer Peter 031-405937 Peter 0736-341482 Paul 031-405937 Paul 0737-305459 Hannah 031-405937 Hannah 0730-732100
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035
Tentamen med lösningsförslag Datastrukturer för D2 DAT 035 17 december 2005 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. (Bonuspoäng från övningarna tillkommer.)
Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek
Föreläsning 5 Innehåll Val av algoritm och datastruktur Algoritmer och effektivitet Att bedöma och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Det räcker inte med att en algoritm är korrekt
Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen
Programkonstruktion Moment 8 Om abstrakta datatyper och binära sökträd Tabeller En viktig tillämpning är tabellen att ifrån en nyckel kunna ta fram ett tabellvärde. Ett typiskt exempel är en telefonkatalog:
Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation
Innehåll Föreläsning 11 Trie Sökträd Trie och Sökträd 356 357 Trie Ytterligare en variant av träd. Vi har tidigare sett: Oordnat träd där barnen till en nod bildar en mängd Ordnat träd där barnen till
Datastrukturer och algoritmer
Innehåll Föreläsning 1 Snabbrepetition Exempeltentamen ursvärdering Mina målsättningar Innehållsöversikt Rolig och viktig kurs Bli en bättre programmerare och inse att man blivit det änna till kända lösningar
Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd
Föreläsning 6 Sökträd: AVL-träd, Multi-Wa -sökträd, B-träd DDC7/9: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer september omm Färnqvist, IDA, Linköpings universitet 6. Innehåll
Datastrukturer och algoritmer
Datastrukturer och algoritmer Föreläsning 16 2 Innehåll Snabbrepetition Exempeltentamen Kursutvärdering Mina målsättningar Kursens mål: 3 Rolig och viktig kurs Bli en bättre programmerare och inse att
Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet
Föreläsning 5 Innehåll Algoritmer och effektivitet Algoritmer och effektivitet Att bedöma, mäta och jämföra effektivitet för algoritmer Begreppet tidskomplexitet Undervisningsmoment: föreläsning 5, övningsuppgifter
Tildatenta Lösningsskiss
Tildatenta 2017-10-20 Lösningsskiss E-delen 1. KMP PAPPAPARTY next[i] = 0 1 0 2 1 0 4 3 1 1 2. Parent-pekare Utskriftfunktionen fungerar så här: 1. Om noden inte är None a. gör vi först ett rekursivt anrop
Magnus Nielsen, IDA, Linköpings universitet
Föreläsning ADT Map/Dictionary, hashtabeller TDDC9,TDDE22,725G97: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 7 september 208 Magnus Nielsen, IDA, Linköpings universitet. ADT Map/Dictionary.
Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016
Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016 Algoritmanalys Inledning Exempel 1: x n När vi talade om rekursion presenterade vi två olika sätt att beräkna x n, ett iterativt: x n =
Föreläsning 6 Datastrukturer (DAT037)
Föreläsning 6 Datastrukturer (DAT037) Fredrik Lindblad 1 2016-11-17 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037 Förra
Tentamen Datastrukturer (DAT036/DAT037/DIT960)
Tentamen Datastrukturer (DAT036/DAT037/DIT960) Datum och tid för tentamen: 2016-04-07, 14:00 18:00. Författare: Nils Anders Danielsson. (Tack till Per Hallgren och Nick Smallbone för feedback.) Ansvarig:
Tommy Färnqvist, IDA, Linköpings universitet. 1 Sortering Heap-sort Merge-sort Sammanfattning... 10
Föreläsning 9 Heap-sort, merge-sort. Undre gränser för sortering. Sortering i linjär tid? TDDC70/91: DALG Utskriftsversion av föreläsning i Datastrukturer och algoritmer 4 oktober 2013 Tommy Färnqvist,
Tentamen Datastrukturer D DAT 036/INN960
Tentamen Datastrukturer D DAT 036/INN960 18 december 2009 Tid: 8.30-12.30 Ansvarig: Peter Dybjer, tel 7721035 eller 405836 Max poäng på tentamen: 60. Betygsgränser, CTH: 3 = 24 p, 4 = 36 p, 5 = 48 p, GU:
Föreläsning 9 Innehåll
Föreläsning 9 Innehåll Träd, speciellt binära träd egenskaper användningsområden implementering Datavetenskap (LTH) Föreläsning 9 HT 2017 1 / 31 Inlämningsuppgiften De föreläsningar som inlämningsuppgiften
Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31
Programmering i C++ EDA623 Dynamiska datastrukturer EDA623 (Föreläsning 11) HT 2013 1 / 31 Dynamiska datastrukturer Innehåll Länkade listor Stackar Köer Träd EDA623 (Föreläsning 11) HT 2013 2 / 31 Länkade