Rekursiva algoritmer sortering sökning mönstermatchning
|
|
- Kurt Arvidsson
- för 7 år sedan
- Visningar:
Transkript
1 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 induktion Metodik att skriva och verifiera rekursiva funktioner (kap 6.3, 8.1) flatten - platta ut lista olika löv i binärt träd reverse - vända lista sortering (avs 8.1.1) kombinationer (Övning 301) Rekursiva algoritmer sortering sökning mönstermatchning Detta ger mer information om sätt att lösa rekursiva problem i laboration och förutsättningarna för laboration 3 (ingående i TDDC67 Funktionell programmering och Lisp) Rekursiva definitioner: ett Lisp-uttryck är: - elementärt dataobjekt, t ex symbol, tal,... - en sekvens av Lisp-uttryck (Lisp-uttryck Lisp-uttryck... Lisp-uttryck) ett binärt träd är: - ett löv - ett par av två binära träd Fibonaccitalen kan definieras fib 0 = 0 fib 1 = 1 fib i = fib i-2 + fib i-1 fib 2 = fib 0 + fib 1 = = 1 fib 3 = fib 1 + fib 2 = = 2 fib 4 = fib 2 + fib 3 = = 3 fib 5 = fib 3 + fib 4 = = 5 Deriveringsregler: du dx = 1 om u = x du dx = 0 om u ej är en funktion i x d( u+ v) du dv = dx dx dx d u v ) = v du u dv dx dx dx d( 4x + 3) dx d4x d3 d4 dx = + = x + 4 = x = 4 dx dx dx dx Anders Haraldsson 3 Anders Haraldsson 4 Rekursiva funktioner: Olika beräkningsmodeller: rekursiv processlösning iterativ processlösning (defun length (l) 0 (+ 1 (length (rest l))))) (defun leaves (bt) (if (leaves? bt) 1 (+ (leaves (car bt)) (leaves (cdr bt))))) (length (a b c)) -> (+ 1 (length (b c))) -> (+ 1 (+1 (length (c))) -> (+ 1 (+ 1 (+ 1 (length ))) -> (+ 1 (+ 1 (+ 1 0)))) -> (+ 1 (+ 1 1)) -> (+ 1 2) => 3 (leaves (a. (b. c))) -> (+ (leaves a) (leaves (b. c))) -> (+ (leaves a) (+ (leaves b) (leaves c))) -> -> (+ 1 (+ 1 1)) => 3 Induktionsbevis (= rekursivt bevis): För naturliga tal gäller: Om en egenskap gäller för n=0 samt om vi kan visa att: om egenskapen gäller för n=k gäller den även för n=k+1 => egenskapen gäller för alla n Ett krav är de objekt som vi gör induktion över måste vara välordnade (well-ordering principle). Det minsta (least) elementet är för heltalen 0. Vi kan ej göra induktionsbevis över t ex reella tal. n Visa att Σ i = n * (n + 1) / 2 5 Σ i = = 5* 6 / 2 = 15 Bevis Visa för n = 1. Trivialt. 1 * (1+ 1) / 2 = 1 k Antag gäller för n = k, dvs Σ i = k * (k + 1) / 2 k+1 Visa att det gäller för n = k+1, dvs Σ i = (k + 1) * (k + 2) /2 k+1 k Σ i=σ i + (k + 1) = k * (k + 1) /2 + (k + 1) =.. = (k + 1) * (k + 2) /2
2 Anders Haraldsson 5 Anders Haraldsson 6 Låt oss ser hur vi implementerar det i ett program: (defun sum (n) (if (= n 1) 1 (+ (sum (- n 1)) n))) För att se att sambandet gäller med n= k + 1 kan vi stoppa in k+1 istället för n. (sum (+ k 1)) = (+ (sum (- (+ k 1) 1)) (+ k 1)) = (+ (sum k) (+ k 1)) Nu kan vi bevisa att funktionen är korrekt. För n=1 trivilt. Antag funktionen korrekt för n=k, dvs (sum k) ger korrekt värde, dvs skall ge det värde som är samma som k * (k+1) / 2. Vi visar det för n= k+1. Programmet säger att ta det antagna värdet av n=k, dvs k * (k+1) / 2 och lägg till k +1 då skall vi få (k+1) * (k+2) / 2 Lite räkning ger att båda uttrycken ger (k 2 +3k+2)/2 Vi har visat att programmet är korrekt! Induktion (strukturell): Om en egenskap gäller för den tomma sekvensen samt om vi kan visa att: om egenskapen gäller för en sekvens med k element gäller den även för en sekvens med k+1 element => egenskapen gäller för sekvenser av godtycklig längd Välordningsprincipen (well-ordering-principle) gäller för sekvenser med avseende på operationerna: lägg-tillett-element / ta-bort-ett-element. Det minsta (the least) elementet är tomma sekvensen. Vi kan alltså resonera om egenskaper hos sekvenser. Samma resonemang kan vi föra för binära träd: Om en egenskap gäller för alla löv samt att vi kan visa att: om egenskapen gäller för två binära träd bt 1 och bt 2 gäller den även för det binära träd som bildas av paret av bt 1 och bt 2. => egenskapen gäller för alla binära träd Anders Haraldsson 7 Anders Haraldsson 8 Vi skulle kunna använda denna princip för att bevisa att funktioner är korrekta (program verification). Detta är svårt! Vi skall använda induktionstänkandet mer informellt och använda det som metodik att definiera och informellt verifiera rekursiva funktioner. Platta ut lista - flatten På tavlan. Se läroboken. Att definiera rekursiva funktioner: A) Utgå från lämplig mall, hitta operationer att utföra i de olika fallen. Ta representativa testfall. Resonera analogt med induktionsbevis, antag det rekursiva anropet korrekt. ex: flatten B) Hitta sambandet mellan två rekursiva steg. ex: reverse, kombinationer Verifiera en lösning: A) Ta representativa testfall. Resonera igenom ett varv. Antag det rekursiva anropet korrekt. B) Utveckla ett exempel med substitutionsmetoden. Man måste ha ganska små exempel, annars kan det bli många steg att genomföra. Metod B beskriver även typ av processlösning (iterativ eller rekursiv) C) På dator använd tex trace
3 Anders Haraldsson 9 Anders Haraldsson 10 Metod: Fokusera operationerna! Ändra ej i mallstrukturen! Vilka olika löv finns i ett binärt träd? a c a b (leaves ((a. (a. b)). (c. b))) => (a b c) (leaves x) => (x) (defun leaves (bt) (if (atom bt)? (? (leaves (car bt)) (leaves (cdr bt))))) b Vända på lista - reverse Mall: rekursiv processlösning. Finn operationen mellan två steg. Beskriv den i naturligt språk. Definiera Vända på en lista. (reverse ) => () (reverse '(c)) => (c) (reverse '(b c)) => (c b) (reverse '(a b c)) => (c b a) Observera hur vi formar testfallen. Samma element bakifrån! (defun reverse (l) (? (first l) (reverse (rest l)))))? = (putlast 'q '(a b c)) => (a b c q) Anders Haraldsson 11 Anders Haraldsson 12 Exempel: sortering (insertsort ( )) => ( ) Utgå från mall rekursiv processlösning: (defun insertsort (l) (? (first l) (insertsort (rest l))))) Försök karakterisera (i ord) vad funktionen? skall göra. Några exempel: (insertsort (6 7 5)) -> (? 6 (insertsort (7 5))) -> (? 6 (? 7 (insertsort (5)))) -> (? 6 (? 7 (? 5 ))) -> (? 6 (? 7 (5))) -> (? 6 (5 7)) => (5 6 7)? = (defun? (e l)... ) karakterisera de formella parametrarna e och l. Vilka slags värden kan de antaga? Kombinationer (se övning 301 i labkompendiet) Ta fram alla tupler som kan skapas av element från ett godtyckligt antal mängder av godtycklig storlek, (dvs den kartesiska produkten). Allt representerat som listor. (kombinationer ) => (()) (kombinationer ((x y))) => ((x) (y)) (kombinationer ((r s) (x y))) => ((r x) (r y) (s x) (s y)) (kombinationer ((a b) (r s) (x y)) => ((a r x) (a r y) (a s x) (a s y) (b r x) (b r y) (b s x) (b s y)) (defun kombinationer (mängdlista) (if (endp mängdlista)?a (?b (first mängdlista) (kombinationer (rest mängdlista))))) Karakterisera?a och?b.
4 Anders Haraldsson 13 Anders Haraldsson 14 Kombinationer (se övning 301 i labkompendiet) Ta fram alla tupler som kan skapas av element från ett godtyckligt antal mängder av godtycklig storlek, (dvs den kartesiska produkten). Allt representerat som listor. Vi måste då definiera en funktion?b. (?b (a b) ((r x) (r y) (s x) (s y))) => ((a r x) (a r y) (a s x) (a s y) (b r x) (b r y) (b s x) (b s y))?b tar 2 parametrar, en lista med element och en lista med listor med element. Vi skall skapa en ny lista där varje element i första parametern skall bli förstaelement i dellistorna i andra parametern. Sortering Det finns ett stort antal olika metoder. Vi illustrerar några här. De bygger på att vi skall skapa en ny struktur med de sorterade elementen. Metoderna kan modifieras så att man flyttar om elementen i samma struktur: Insert sort Ta ett element i taget och stoppa in det i den resulterande sorterade listan. Selection sort Hitta största elementet och lägg i resultatlista, hitta det näst största och lägg dit etc. Övning 303 i Lisplabbkompendiet. Quick sort Välj ett element, dela upp de övriga i två högar, de som är mindre resp de som är större. Sortera dessa högar. Skall löses i uppgift 3c. Anders Haraldsson 15 Anders Haraldsson 16 Insert sort Rekursiv processlösning (defun insertsort (l) (insert (first l) (insertsort (rest l))))) (defun insert (e sorted-l) (cond ((endp sorted-l) (list e)) ((< e (first sorted-l)) (cons e sorted-l)) (t (cons (first sorted-l) (insert e (rest sorted-l)))))) (insertsort ( )) 0: (INSERT 8 NIL) 0: returned (8) 0: (INSERT 2 (8)) 0: returned (2 8) 0: (INSERT 5 (2 8)) 1: (INSERT 5 (8)) 1: returned (5 8) 0: returned (2 5 8) 0: (INSERT 7 (2 5 8)) 1: (INSERT 7 (5 8)) 2: (INSERT 7 (8)) 2: returned (7 8) 1: returned (5 7 8) 0: returned ( ) 0: (INSERT 4 ( )) 1: (INSERT 4 (5 7 8)) 1: returned ( ) 0: returned ( ) ( ) Vi skapar den nya sorterade listan genom att lägga in elementen bakifrån från den osorterade listan. Insert sort Iterativ processlösning (defun insertsort (l) (insertsort-iter l )) (defun insertsort-iter (l sorted-res) sorted-res (insertsort-iter (rest l) (insert (first l) sorted-res)))) (defun insert (e sorted-l) (cond ((endp sorted-l) (list e)) ((< e (first sorted-l)) (cons e sorted-l)) (t (cons (first sorted-l) (insert e (rest sorted-l)))))) (insertsort ( )) 0: (INSERT 4 NIL) 0: returned (4) 0: (INSERT 7 (4)) 1: (INSERT 7 NIL) 1: returned (7) 0: returned (4 7) 0: (INSERT 5 (4 7)) 1: (INSERT 5 (7)) 1: returned (5 7) 0: returned (4 5 7) 0: (INSERT 2 (4 5 7)) 0: returned ( ) 0: (INSERT 8 ( )) 1: (INSERT 8 (4 5 7)) 2: (INSERT 8 (5 7)) 3: (INSERT 8 (7)) 4: (INSERT 8 NIL) 4: returned (8) 3: returned (7 8) 2: returned (5 7 8) 1: returned ( ) 0: returned ( ) ( ) Här tar vi elementen framifrån och lägger in i den sorterade listan.
5 Anders Haraldsson 17 Anders Haraldsson 18 Sökalgoritmer Algoritm där man provar olika alternativ och backar tillbaka beräkningen då ett alternativ ej leder fram till målet. C B D A F E I Hur backar man tillbaka beräkningen? G H Backtracking -algoritmer i läroboken - Ni har kanske arbetat med back-find som är ett exempel på en sådan algoritm. - Hitta väg i ett binärt träd (avs 7.1.2) - Grafsökning (avs 8.4) - Mönstermatchning (avs 8.5) Hitta väg i ett binärt träd (avs 6.4.5) Representationav ett löv: nod Representation av en intern nod: (nod vänster-delträd höger-delträd) (setq my-tree (a (b c d) (e (f g h) i))) (find-path h my-tree) => (a e f h) (find-path d my-tree) => (a b d) (find-path j my-tree) => () (find-path b my-tree) => () ; ty b är inget löv i det binära trädet Anders Haraldsson 19 Anders Haraldsson 20 Hitta väg i ett binärt träd (avs 6.4.5) (defun find-path (node bt) (if (leaf? bt) (if (same-label? node bt) ; önskat löv? (make-path bt); skapa väg av ett löv ) (let ((left-path (find-path node (left bt)))) ; försök hitta väg åt vänster (if (path? left-path) (add-path (label bt) left-path) (let ((right-path (find-path node (right bt)))) ; försök hitta väg åt höger (if (path? right-path) (add-path (label bt) right-path) ))) ))) ; fanns ingen väg (defun leaf? (bt) (atom bt)) (defun label (bt) (first bt)) (defun left (bt)(second bt)) (defun right (bt) (third bt)) (defun add-path (label p) (cons label p)) (defun make-path (label) (list label)) (defun path? (p) (not (eq p ))) (defun same-label? (n1 n2) (eq n1 n2)) Mönstermatchning används: - kommandospråk avslutande av kommandon cl-allegesc användning av sk wild-card delete a*.lsp - sökmotorer på Internet - naturligt språk hantering ett -godtyckligt antal ord- hus matchar ett hus, ett rött hus, ett litet rött hus
6 Anders Haraldsson 21 Anders Haraldsson 22 Mönstermatchning I detta exempel skall vi matcha listor. Vi skall ha följande mönstersymboler: & som matchar ett godtyckligt tecken -- som matchar inget, ett eller flera tecken, kallas segment Mönstret (a & b &) matchas av (a x b y), (a a b b) men matchas ej av (b x a y), (a b), (a x b y c) Mönstret (a -- b) matchas av (a b), (a x b), (a x y b), (a b), men matchas ej av (a x y), (a x b y) Matchningen behöver ej bli unik: Mönstret (a -- b --) matchar (a x b y b z) på två olika sätt: (a x b y b z) (a x b y b z) Mönstermatchning Det stora problement i mönstermatchning är segementmönstret. Vi måste här pröva oss fram. Vi kan inte från början säga hur många element som segmentmönstret skall matcha. Vi börjar matcha segmentmönstret med inget element och försöker matcha resten, går ej detta, matchar vi segmentmönstret med ett element, sedan två etc till ev alla elementen är slut. (a -- b) matchas mot (a x y b) Segementmönstret matchar inget element, försök matcha (b) med (x y b). Misslyckas. Låt segmentmönstret matcha x. Försök matcha (b) med (y b). Misslyckas. Låt segmentmönstret även matcha y, dvs både x och y. Försök matcha (b) med (b). Lyckas! Problement är att vi måste gå vidare och matcha resten. Om detta misslyckas skall vi backa tillbaka matchningen till hanteringen av segmentmönstret igen. Anders Haraldsson 23 Anders Haraldsson 24 Mönstermatchning patmatch (defun patmatch (l pat) (cond ((endp pat) (endp l)) ; slut på mönster och lista? ((eq (first pat) ' --) ; segmentmönster (cond ((patmatch l (rest pat)) t) ; matchar resten? ((endp l) nil) ; misslyckas, segmentmönstret ; matchade hela resten (t (patmatch (rest l) pat)))) ; låt segmentmönstret även ; matcha ett element ; inget att matcha emot ; matcha godtyckligt element ((endp l) nil) ((eq (first pat) '&) (patmatch (rest l) (rest pat))) ((eql (first pat) (first l)) ; lika match (patmatch (rest l) (rest pat))) (t nil))) ; misslyckas Exempel (patmatch (a b c d) (& & & &)) ; har listan 4 element? (patmatch ; slutar listan med d? (a b c d) (-- d)) (patmatch ; slutar listan med b och c? (a b c d b c) (-- b c)) (patmatch ; innehåller en lista b? (a b c d) (-- b --)) (patmatch ; innehåller en lista först b, sedan c och (a b c d e f) ; sedan e i tur och ordning (-- b -- c -- e --)) (patmatch (-- --)) = t
7 Anders Haraldsson 25 (patmatch ; slutar listan med b och c? (a b c d b c) (-- b c)) 0: (PATMATCH (A B C D B C) (-- B C)) 1: (PATMATCH (A B C D B C) (B C)) 1: returned NIL 1: (PATMATCH (B C D B C) (-- B C)) 2: (PATMATCH (B C D B C) (B C)) 3: (PATMATCH (C D B C) (C)) 4: (PATMATCH (D B C) NIL) 4: returned NIL 3: returned NIL 2: returned NIL 2: (PATMATCH (C D B C) (-- B C)) 3: (PATMATCH (C D B C) (B C)) 3: returned NIL 3: (PATMATCH (D B C) (-- B C)) 4: (PATMATCH (D B C) (B C)) 4: returned NIL 4: (PATMATCH (B C) (-- B C)) 5: (PATMATCH (B C) (B C)) 6: (PATMATCH (C) (C)) 7: (PATMATCH NIL NIL) 7: returned T 6: returned T 5: returned T 4: returned T 3: returned T 2: returned T 1: returned T 0: returned T
Dagens föreläsning Programmering i Lisp Fö 5
Anders Haraldsson 1 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.3) - Iteratorer - Egenskaper
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2
Anders Haraldsson 1 Anders Haraldsson 2 Dagens föreläsning Programmering i Lisp Fö 5 - Funktioner - lambda-uttryck (avs 7.1) - funcall och function (avs 7.2) - Högre ordningens funktioner (avs 7.) - Iteratorer
Läs merTvå fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)
Programmönster: # Listan som sekvens, Rekursiv process Enkel genomgång av sekvens (element på toppnivån i en lista)) TDDC60 Programmering: abstraktion och modellering Föreläsning 5 Rekursiva och iterativa
Läs merDagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk
1 Dagens föreläsning Programmering i Lisp Fö 7 Kopplingen funktionella programmering och diskret matematik. Jämför vad ni hittills gjort i denna kurs och i den diskreta matematiken, med referenser in i
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
AID-nummer: Datum: 2011-02-18 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Fredag 18 feb 2011
Läs merTentamen i. TDDC67 Funktionell programmering och Lisp
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDC67 Funktionell programmering och Lisp och äldre kurser TDDC57 Programmering, Lisp och funktionell programmering
Läs merImperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur
Imperativ programmering konstruktioner i Lisp Imperativ programmering I den imperativa programmeringen skriver vi program satsvist. Datastrukturer (kap.-.) aystruktur poststruktur Iterativa uttryck (avs.)
Läs merDagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning
1 Dagens föreläsning Programmering i Lisp - Block, räckvidd - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merTDDC74 Lab 02 Listor, sammansatta strukturer
TDDC74 Lab 02 Listor, sammansatta strukturer 1 Översikt I denna laboration kommer ni att lära er mer om: Mer komplexa rekursiva mönster, procedurer och processer. Hur man kan hantera listor och andra enklare
Läs merFö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
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18
TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-01-11 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 11 januari
Läs merUniversitetet i Linköping Institutionen för datavetenskap Anders Haraldsson
1 2 - Block, räckvidd Dagens föreläsning Programmering i Lisp - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning - Felhantering (kap 17) icke-normala återhopp catch
Läs merFöreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...
Föreläsning 9 Intervallhalveringsmetoden Intervallhalveringsmetoden Newton-Raphsons metod Mer om rekursion Tidskomplexitet Procedurabstraktion Representation Bra om ni läst följande avsnitt i AS: Procedures
Läs merFöreläsning 9 Exempel
Föreläsning 9 Exempel Intervallhalveringsmetoden DA2001 (Föreläsning 9) Datalogi 1 Hösten 2013 1 / 24 Föreläsning 9 Exempel Intervallhalveringsmetoden Newton-Raphsons metod DA2001 (Föreläsning 9) Datalogi
Läs mern Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?
Tidigare TDDC74 Programming: Abstraktion och modellering Föreläsning 4 Symboler, Par, Listor Representation av par, Grafisk notation för par Representation av listor mha par Typiska listhanteringsprocedurer
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 017-10-7, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 27 augusti 2016, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merSökning och sortering. Sökning och sortering - definitioner. Sökning i oordnad lista. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning och sortering - definitioner Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man
Läs merSökning och sortering
Sökning och sortering Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data och många sökningar måste
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2012-01-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Tisdag 10 januari
Läs merFö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
Läs merDagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Läs merSymbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)
Symbolisk data (1 2 3 4) (a b c d) (jacek johan david) ((jacek "jacek@cs.lth.se") (johan "johang@cs.lth.se") (david "dat99dpe@ludat.lth.se")) ((anna 13) (per 11) (klas 9) (eva 4)) (+ (* 23 4) (/ y x))
Läs merUppgift 6A - Frekvenstabell
Uppgift 6A - Frekvenstabell (defstruct par element antal) (defun unika-element (lista) (reduce #'(lambda (x y) (if (listp x) (if (find y x) x (cons y x)) (if (eq x y) x (list x y)))) lista)) (defun sortera-tabell
Läs merSignalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.
Strömmar (streams) De sista dagarna objekt med tillstånd modellerades som beräkningsobjekt med tillstånd. Isådana modeller är tiden modelerad (implicit) som en sekvens av tillstånd. För att kunna modellera
Läs merProgrammering II (ID1019)
ID1019 Johan Montelius Instruktioner Betyg Programmering II (ID1019) 2019-03-08 Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar (inte på
Läs merLABORATION 1. Inledande Lisp - rekursion
AI - Lisp / Laboration 1 - Inledande Lisp - rekursion 1 LABORATION 1 Inledande Lisp - rekursion 1.0 LABFÖRORD Detta labbmaterial ger dig introduktion till Lisp för att kunna använda programmeringsspråket
Läs merIdag: Par och listor. Symboler. Symboler används för att uttrycka icke-numeriska data såsom namn, adress, bilregisternummer, boktitel, osv.
Idag: Par och listor Symboler Hur hanterar man icke-numeriska problem? Hur hanterar man en samling av data? Hur konstruerar man sammansatta datastrukturer? Bra om du har läst följande avsnitt i AS: Pair
Läs merIdag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29
Idag: Par och listor DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och listor Hur hanterar man icke-numeriska problem? DA2001 (Föreläsning 6) Datalogi 1 Hösten 2010 1 / 29 Idag: Par och
Läs merTDDC30. 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
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-06-10 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Fredag 10 juni
Läs merTDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18
TDDC74 Programmering: Abstraktion och modellering Datortenta - 2018-06-07, kl 14-18 Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis
Läs merInnehå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:
Läs merProgrammering II (ID1019) :00-17:00
ID1019 Johan Montelius Programmering II (ID1019) 2014-03-10 14:00-17:00 Förnamn: Efternamn: Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs merLinjä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
Läs merTDDC74 - Lektionsmaterial C
TDDC74 - Lektionsmaterial C Lektioner innehåller uppgifter av varierande slag. En del är mer diskussionsartade, andra mer experimentella. Ni behöver inte lämna in eller visa upp lösningarna på dessa för
Läs merSökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista
Sökning och sortering Sökning i oordnad lista Att söka efter data man lagrat undan för senare användning är vanligt Egentligen har man ingen annan anledning för att lagra undan data Har man mycket data
Läs merFöreläsning 6: Induktion
Föreläsning 6: Induktion Induktion är en speciell inferensregel. En mängd är välordnad om varje delmängd har ett minsta element Exempel: N är välordnad (under ) Låt P(x) vara ett predikat över en välordnad
Läs merTDDC74 Lab 04 Muterbara strukturer, omgivningar
TDDC74 Lab 04 Muterbara strukturer, omgivningar 1 Översikt I den här laborationen kommer ni att lära er mer om: Tillstånd, och skillnader mellan ren funktionell programmering och imperativ. Skillnaden
Läs merTDDC74 Programmering, abstraktion och modellering. Tentamen
AID-nummer: Datum: 2011-08-17 1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering Tentamen Onsdag 17 augusti
Läs merMagnus 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
Läs merFöreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Läs merFö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
Läs merTillämpad Programmering (ID1218) :00-13:00
ID1218 Johan Montelius Tillämpad Programmering (ID1218) 2014-03-13 09:00-13:00 Förnamn: Efternamn: Regler Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten.
Läs merTDDC74 Programmering, abstraktion och modellering DUGGA 2
1 Tekniska högskolan vid Linköpings universitet Institutionen för datavetenskap Anders Haraldsson TDDC74 Programmering, abstraktion och modellering DUGGA 2 Torsdag 19 feb 2009 8-10 Namn: Personnummer:
Läs merTDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12
TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 215, kl 8 12 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt.
Läs merFöreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:
Föreläsning 7 Innehåll Rekursion Rekursivt tänkande: Hur många år fyller du? Ett år mer än förra året! Rekursion Rekursiv problemlösning Binärsökning Generiska metoder Rekursiv problemlösning: Dela upp
Läs merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas, Malin Källén 20 mars 2016 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av
Läs merTentamen, Algoritmer och datastrukturer
UNDS TEKNISKA ÖGSKOA (6) Institutionen för datavetenskap Tentamen, Algoritmer och datastrukturer 23 8 29, 8. 3. Anvisningar: Denna tentamen består av fem uppgifter. Totalt är skrivningen på 36 poäng och
Läs merFÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION
FÖRELÄSNING 2, TDDC74, VT2018 Begrepp och definitioner (delvis från föreläsning 1) Fallanalys som problemlösningsmetod Rekursivt fallanalys Rekursiva beskrivningar och processer de kan skapa Rekursiva
Läs merallt.cl Page 1 of 17 Date: torsdag 7 december 2006
allt.cl Page 1 of 17 Slumpspelaren Väljer slumpvis en flytt ur möjliga flyttar. (defun skapa-slump-spelare (namn bricktyp) "lisp-sträng x bricka -> spelare" (skapa-spelare #'slump-gör-flytt namn bricktyp))
Läs merKomma igång med Allegro Common Lisp
Funktionell programmering med Lisp 9 Första gången Komma igång med Allegro Common Lisp Det Lisp-system som vi i kommer att använda för laborationerna heter Allegro Common Lisp. Det är en kommersiell programvara
Läs merRekursion och induktion för algoritmkonstruktion
Informationsteknologi Tom Smedsaas 22 januari 2006 Rekursion och induktion för algoritmkonstruktion Att lösa ett problem rekursivt innebär att man uttrycker lösningen i termer av samma typ av problem som
Läs merSCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall
Rekursiva funktioner Föreläsning 10 (Weiss kap. 7) Induktion och rekursion Rekursiva funktioner och processer Weiss 7.1-3 (7.4, 7.5.3 utgår) Fibonaccital (7.3.4) Exempel: Balansering av mobil (kod se lab
Läs merBINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X
Algoritmer och Datastrukturer Kary FRÄMLING/Göran PULKKIS (v23) Kap. 7, Sid 1 BINÄRA TRÄD Träd används för att representera olika slags hierarkier som ordnats på något sätt. Den mest använda trädstrukturen
Läs merIntroduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4
Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 014-015 Denna lektion ska vi studera rekursion. Lektion 4 Principen om induktion Principen om induktion är ett vanligt sätt att bevisa
Läs merFö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
Läs merProgrammering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Läs merInstruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python
Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken får ha anteckningar,
Läs merTDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014
TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Läs merDatastrukturer, 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äs merTDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel
TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel Läs alla frågorna först och bestäm dig för i vilken ordning du vill lösa uppgifterna. Uppgifterna är inte nödvändigtvis i svårighetsordning.
Läs merEtt 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
Läs merTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00
TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170117 kl. 14:00-19:00 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS *** Betygsgräns:
Läs merProgramkonstruktion 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
Läs merProgrammering II (ID1019) :00-11:00
ID1019 Johan Montelius Programmering II (ID1019) 2015-06-11 08:00-11:00 Instruktioner Du får inte ha något materiel med dig förutom skrivmateriel. Mobiler etc, skall lämnas till tentamensvakten. Svaren
Läs merDatastrukturer i Haskell
Datastrukturer i Haskell Bror Bjerner Inst. för data- och informationsteknik Göteborgs universitet & Chalmers tekniska högskola 2010 1 Fibbonacci Om vi beräknar det n:te fibonnacitalet enligt sin dubbelrekursiva
Läs merTrädstrukturer och grafer
Översikt Trädstrukturer och grafer Trädstrukturer Grundbegrepp Binära träd Sökning i träd Grafer Sökning i grafer Programmering tillämpningar och datastrukturer Varför olika datastrukturer? Olika datastrukturer
Läs merORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 160119 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***
Läs merUppgift 4A - Definition av enkla funktioner
Uppgift 4A - Definition av enkla funktioner (defun start-klockslag (tidsperiod) "tidsperiod -> klockslag" (typkontroll tidsperiod #'tidsperiod?) (first (packa-upp tidsperiod))) (defun slut-klockslag (tidsperiod)
Läs merFö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
Läs mer6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:
6 Rekursion 6.1 Rekursionens fyra principer Problem löses genom: 1. förenkling med hjälp av "sig själv". 2. att varje rekursionssteg löser ett identiskt men mindre problem. 3. att det finns ett speciellt
Läs merAlgoritmanalys. 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 =
Läs merFöreläsning 6 Innehåll. Rekursion. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursiv problemlösning. Rekursion. Rekursivt tänkande:
Föreläsning 6 Innehåll Rekursion Begreppet rekursion Rekursiv problemlösning Samband mellan rekursion och induktion Söndra-och-härska-algoritmer Dynamisk programmering Undervisningsmoment: föreläsning
Läs merLära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.
Laboration 5 Mängder Syfte Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar. Lära dig kombinera på ett lämpligt sätt de begrepp och metoder som du har
Läs merTentamen 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:
Läs merBEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK
FÖRELÄSNING 2 Viss repetition av Fö1 Rekursivt fallanalys Rekursiva beskrivningar BEGREPP HITTILLS Konstant, Namn, Procedur/Funktion, LAMBDA, Parameter, Argument, Kropp, Villkor/Rekursion, Funktionsanrop,
Läs merLösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:
Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03-12 Lösningsförslag Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum: 2013-03- 12 Läs alla frågorna först och bestäm dig för den ordning som passar dig
Läs merFöreläsning 13. Rekursion
Föreläsning 13 Rekursion Rekursion En rekursiv metod är en metod som anropar sig själv. Rekursion används som alternativ till iteration. Det finns programspråk som stödjer - enbart iteration (FORTRAN)
Läs merHur man programmerar. TDDC66 Datorsystem och programmering Föreläsning 3. Peter Dalenius Institutionen för datavetenskap
Hur man programmerar TDDC66 Datorsystem och programmering Föreläsning 3 Peter Dalenius Institutionen för datavetenskap 2014-09-05 Översikt Problemlösning: Hur ska man tänka? Datatyper Listor (forsätter
Läs merTeoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.
Facit Tentamen TDDC30 2015-08-28 kl 08-12 1 (6) Teoretisk del 1. (6p) "Snabba frågor" Alla svar motiveras väl. a) Vad är syftet med ett interface? (1p) Svar:Att ange vilka metoder som ska finnas, utan
Läs merFö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
Läs merFöreläsning 5. 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
Föreläsning 5 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 Terminologi - träd Ett träd i datalogi består av en rotnod
Läs merTommy 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
Läs merFredag 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,
Läs merTDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015
TDDC74 Programmering: Abstraktion och modellering Dugga 3, kl 14 16, 25 mars 2015 Läs alla frågorna först, och bestäm dig för i vilken ordning du vill lösa uppgifterna. Skriv tydligt och läsligt. Använd
Läs merInnehå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
Läs merTentamen i. TDDA 69 Data och programstrukturer
1 Linköpings tekniska högskola Institutionen för datavetenskap Anders Haraldsson Tentamen i TDDA 69 Data och programstrukturer Torsdag den 14 januari 2009, kl 14-18 Hjälpmedel: Inga. Poänggränser: Maximalt
Läs merObjektorienterad programmering
Objektorienterad programmering Föreläsning 22 Copyright Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Agenda Rekursion Samlingar Listor Mängder Avbildningstabeller 1 Rekursion För att förstå rekursion
Läs merORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15
ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 150112 kl. 08:15 13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilogarna. ***
Läs merProgrammering II (ID1019) :00-12:00
ID1019 Johan Montelius Programmering II (ID1019) 2018-03-13 08:00-12:00 Instruktioner Betyg Svaren skall lämnas på dessa sidor, använd det utrymme som nns under varje uppgift för att skriva ner ditt svar.
Läs merFö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)
Läs merFunktionell programmering DD1361
Funktionell programmering DD1361 Tupler Två eller fler (men ändligt) antal element. Elementen kan vara av olika typer. Ex: (1,2) :: (Integer, Integer) (( 2, hejsan ), True) ::? Tupel med två element ->
Läs merInstruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)
Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python) Hjälpmedel Följande hjälpmedel är tillåtna: Exakt en valfri bok, t.ex. den rekommenderade kursboken. Boken
Läs merOMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15
OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B03 170331 kl. 08:15-13:15 Ansvarig Lärare: Donald F. Ross Hjälpmedel: Inga. Algoritmerna finns i de respektive uppgifterna eller i bilagarna. *** OBS ***
Läs merSö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
Läs merDatastrukturer 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
Läs merLö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
Läs mer