Rekursiva algoritmer sortering sökning mönstermatchning

Storlek: px
Starta visningen från sidan:

Download "Rekursiva algoritmer sortering sökning mönstermatchning"

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

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 mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Universitetet 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 mer

Två 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)

Två 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 mer

Dagens föreläsning Programmering i Lisp Fö 7. Sammanfattning funktionell programmering Exempel på funktionella programspråk

Dagens 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 mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 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 mer

Tentamen i. TDDC67 Funktionell programmering och Lisp

Tentamen 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 mer

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

Imperativ 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 mer

Dagens föreläsning Programmering i Lisp. - Bindning av variabler (avs 14.6) fria variabler statisk/lexikalisk och dynamisk bindning

Dagens 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 mer

TDDC74 Lab 02 Listor, sammansatta strukturer

TDDC74 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 mer

Föreläsning 4 Datastrukturer (DAT037)

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

Läs mer

TDDC74 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 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 mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 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 mer

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson

Universitetet 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 mer

Föreläsning 9 Exempel. Intervallhalveringsmetoden. Intervallhalveringsmetoden... Intervallhalveringsmetoden...

Fö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 mer

Föreläsning 9 Exempel

Fö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 mer

n Detta för att kunna koncentrera oss på n Tal: number? n Symboler: symbol? n Strängar: string? n Tecken: char? n Boolskt: boolean?

n 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 mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 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 mer

TDDC74 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 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 mer

Sö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. 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 mer

Sökning och sortering

Sö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 mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 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 mer

Föreläsning 4 Datastrukturer (DAT037)

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

Läs mer

Dagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler

Dagens 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 mer

Symbolisk data. quote. (define a 1) (define b 2) (jacek johan david) (list a b)

Symbolisk 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 mer

Uppgift 6A - Frekvenstabell

Uppgift 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 mer

Signalflödesmodellen. Två (gamla) exempel: Kvadratera alla jämna löv.

Signalflö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 mer

Programmering II (ID1019)

Programmering 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 mer

LABORATION 1. Inledande Lisp - rekursion

LABORATION 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 mer

Idag: 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. 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 mer

Idag: Par och listor. Scheme. DA2001 (Föreläsning 6) Datalogi 1 Hösten / 29

Idag: 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 mer

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 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 mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 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 mer

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC74 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 mer

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. 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 mer

Programmering II (ID1019) :00-17:00

Programmering 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 mer

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

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

Läs mer

TDDC74 - Lektionsmaterial C

TDDC74 - 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 mer

Sökning i ordnad lista. Sökning och sortering. Sökning med vaktpost i oordnad lista

Sö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 mer

Föreläsning 6: Induktion

Fö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 mer

TDDC74 Lab 04 Muterbara strukturer, omgivningar

TDDC74 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 mer

TDDC74 Programmering, abstraktion och modellering. Tentamen

TDDC74 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 mer

Magnus Nielsen, IDA, Linköpings universitet

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

Läs mer

Föreläsning 6: Introduktion av listor

Fö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 mer

Föreläsning Datastrukturer (DAT036)

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

Läs mer

Tillämpad Programmering (ID1218) :00-13:00

Tillä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 mer

TDDC74 Programmering, abstraktion och modellering DUGGA 2

TDDC74 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 mer

TDDC74 Programmering: Abstraktion och modellering Tentamen, lördag 29 augusti 2015, kl 8 12

TDDC74 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 mer

Fö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. 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 mer

Rekursion och induktion för algoritmkonstruktion

Rekursion 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 mer

Tentamen, Algoritmer och datastrukturer

Tentamen, 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 mer

FÖ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 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 mer

allt.cl Page 1 of 17 Date: torsdag 7 december 2006

allt.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 mer

Komma igång med Allegro Common Lisp

Komma 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 mer

Rekursion och induktion för algoritmkonstruktion

Rekursion 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 mer

SCB :-0. Uno Holmer, Chalmers, höger 2 Ex. Induktiv definition av lista. // Basfall

SCB :-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 mer

BINÄ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

BINÄ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 mer

Introduktion till algoritmer - Lektion 4 Matematikgymnasiet, Läsåret 2014-2015. Lektion 4

Introduktion 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 mer

Föreläsning 9 Datastrukturer (DAT037)

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

Läs mer

Programmering II (ID1019) :00-11:00

Programmering 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 mer

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Instruktioner - 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 mer

TDDC74 Programmering: Abstraktion och modellering Tenta, kl 14 18, 11 juni 2014

TDDC74 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 mer

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

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äs mer

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

TDDC74 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 mer

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

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

Läs mer

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

TENTAMEN 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 mer

Programkonstruktion och Datastrukturer

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

Läs mer

Programmering II (ID1019) :00-11:00

Programmering 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 mer

Datastrukturer i Haskell

Datastrukturer 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 mer

Trädstrukturer och grafer

Trä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 mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE 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 mer

Uppgift 4A - Definition av enkla funktioner

Uppgift 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 mer

Föreläsning Datastrukturer (DAT036)

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

Läs mer

6 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. 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 mer

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

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 =

Läs mer

Fö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. 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 mer

Lära dig analysera större och mer komplicerade problem och formulera lösningar innan du implementerar.

Lä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 mer

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

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:

Läs mer

BEGREPP HITTILLS FÖRELÄSNING 2 SAMMANSATTA UTTRYCK - SCHEME DATORSPRÅK

BEGREPP 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 mer

Lösningsförslag. TDDC74 Programmering: Abstraktion och modellering. Dugga 3 (provkod TEN1), Tid: kl 14-16, Datum:

Lö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 mer

Föreläsning 13. Rekursion

Fö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 mer

Hur 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 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 mer

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Teoretisk 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 mer

Föreläsning 5 Datastrukturer (DAT037)

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

Läs mer

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

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 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 mer

Tommy Färnqvist, IDA, Linköpings universitet

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

Läs mer

Fredag 10 juni 2016 kl 8 12

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,

Läs mer

TDDC74 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 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 mer

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. 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 mer

Tentamen i. TDDA 69 Data och programstrukturer

Tentamen 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 mer

Objektorienterad programmering

Objektorienterad 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 mer

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

ORDINARIE 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 mer

Programmering II (ID1019) :00-12:00

Programmering 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 mer

Föreläsning Datastrukturer (DAT037)

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)

Läs mer

Funktionell programmering DD1361

Funktionell 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 mer

Instruktioner - Datortentamen TDDE24 och TDDD73 Funktionell och imperativ programmering (i Python)

Instruktioner - 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 mer

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15-13:15

OMTENTAMEN 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 mer

Sökning och sortering

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

Läs mer

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

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

Läs mer

Lösningar Datastrukturer TDA

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

Läs mer