Programkonstruktion och Datastrukturer, lektion 7

Relevanta dokument
Programkonstruktion och Datastrukturer

Övningshäfte 2: Induktion och rekursion

Föreläsning 5: Summor (forts) och induktionsbevis

inte följa någon enkel eller fiffig princip, vad man nu skulle mena med det. All right, men

Lösningar till övningstentan. Del A. UPPSALA UNIVERSITET Matematiska institutionen Styf. Övningstenta BASKURS DISTANS

1. (a) Formulera vad som skall bevisas i basfallet och i induktionssteget i ett induktionsbevis av påståendet att. 4 5 n för alla n = 0, 1, 2, 3,...

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

4x 1 = 2(x 1). i ( ) får vi 5 3 = 5 1, vilket inte stämmer alls, så x = 1 2 är en falsk rot. Svar. x = = x x + y2 1 4 y

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

Övningshäfte 1: Induktion, rekursion och summor

Lösningar till utvalda uppgifter i kapitel 4

Programkonstruktion och datastrukturer. Formell verifiering eller hur man bevisar att program gör rätt utan att testa dem

Föreläsning 4 Datastrukturer (DAT037)

Tommy Färnqvist, IDA, Linköpings universitet. 2 Rekursion i C Implementation av rekursion Svansrekursion En till övning...

Algebra I, 1MA004. Lektionsplanering

Om plana och planära grafer

Programmering II (ID1019)

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Rekursion och induktion

Algoritmer och datastrukturer H I HÅKAN S T R Ö M B E R G N I C K L A S B R A N D E F E L T

Algoritmer, datastrukturer och komplexitet

Rekursion och induktion

Föreläsning 4 Datastrukturer (DAT037)

DD1350 Logik för dataloger. Fö 7 Predikatlogikens semantik

1. Inledning, som visar att man inte skall tro på allt man ser. Betrakta denna följd av tal, där varje tal är dubbelt så stort som närmast föregående

Lösningar till Algebra och kombinatorik

Dekomposition och dynamisk programmering

MS-A409 Grundkurs i diskret matematik Appendix, del I

Procedurer och villkor. Rekursiva procedurer. Exempel: n-fakultet

Procedurer och villkor

Om plana och planära grafer

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 4 Om rekursion. PK1&PM1 HT-06 moment 4 Sida 1 Uppdaterad

Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)

Programkonstruktion och datastrukturer. Moment 9 Om högre ordningens funktioner. PKD 2010/11 moment 9 Sida 1 Uppdaterad

p /\ q r DD1350 Logik för dataloger Kort repetition Fö 3 Satslogikens semantik

Summera godtyckligt antal tal. Programkonstruktion. Moment 4 Om rekursion. Fullständigt resonemang för summeringen. Analys av summeringsproblemet

Induktion, mängder och bevis för Introduktionskursen på I

Föreläsning 1 Datastrukturer (DAT037)

Tentamen i TDDC75 Diskreta strukturer

Övningshäfte 6: 2. Alla formler är inte oberoende av varandra. Försök att härleda ett par av de formler du fann ur några av de övriga.

1 Lite om matematisk notation

Tentamen Datastrukturer (DAT036)

Kappa Problem 5

Lösningar till KATT 2014

Primitivt rekursiva funktioner och den aritmetiska hierarkin

Algoritmer, datastrukturer och komplexitet

Föreläsning 6: Induktion

Lösningsförslag till tentamensskrivning i SF1610 Diskret Matematik för CINTE 30 maj 2018, kl

n (log n) Division Analysera skolboksalgoritmen för division (trappdivision). Använd bitkostnad.

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

Tentamen Datastrukturer (DAT036)

Algoritmanalys. Genomsnittligen behövs n/2 jämförelser vilket är proportionellt mot n, vi säger att vi har en O(n) algoritm.

Lösningar till Algebra och kombinatorik

Programmering II (ID1019) :00-13: hp

Avsnitt 6, Egenvärden och egenvektorer. Redan första produktelementet avslöjar att matrisen inte är en ortogonal matris. En matris 1 0.

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Lösningsförslag till Tentamen i 5B1118 Diskret matematik 5p 14 augusti, 2002

2 Matematisk grammatik

Tentamen TMV210 Inledande Diskret Matematik, D1/DI2

Formell Verifiering. Hur vet man att ett system fungerar korrekt? Lisa Kaati

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

Matematik 5 Kap 2 Diskret matematik II

Föreläsning 1. Kursinformation All viktig information om kursen ska kunna läsas på kursens hemsida

Programmering II (ID1019) :00-12:00

Programmering II (ID1019) :00-12:00

Lösning av tentamensskrivning i Diskret Matematik för CINTE och CMETE, SF1610, tisdagen den 27 maj 2014, kl

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

SI-möte #10, Programkonstruktion och Datastrukturer

Imz. Rez. Bo E. Sernelius

Grundläggande logik och modellteori

Matematiska Institutionen KTH. Lösning till tentamensskrivning på kursen Linjär algebra II, SF1604, den 9 juni 2011 kl

Programmering för språkteknologer II, HT2014. Rum

Programmering II (ID1019) :00-17:00

Rekursion och induktion för algoritmkonstruktion

kvoten mellan två på varandra följande tal i en talföljd är konstant alltid lika stor.

Hundrarutor, markörer, penna och miniräknare. På följande sidor finns hundrarutor för kopiering.

29 Det enda heltalet n som satisfierar båda dessa villkor är n = 55. För detta värde på n får vi x = 5, y = 5.

SF2715 Applied Combinatorics// Extra exercises and solutions, Part 2

DOP-matematik Copyright Tord Persson. Logövningar. Slumpad ordning. Uppgift nr 10 Lös ekvationen 10 y = 0,001. Uppgift nr 13 Lös ekvationen lg x = 4

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

FÖRELÄSNING 2, TDDC74, VT2018 BEGREPP PROBLEMLÖSNING MED HJÄLP AV FALLANALYS PROBLEMLÖSNING MED HJÄLP AV REKURSION

Lösningsförslag till övningsuppgifter, del II

2 = 2. Tal skrivna på det sättet kallas potenser. I vårt fall har vi tredje tvåpotensen. Tredje tvåpotensen har 2 som bas och 3 som

Programmering II (ID1019) :00-11:00

Tentamen i kurserna Beräkningsmodeller (TDA181/INN110) och Grundläggande Datalogi (TDA180)

Rekursiva algoritmer sortering sökning mönstermatchning

Föreläsning 7: Syntaxanalys

Rekursion och induktion för algoritmkonstruktion

Finaltävling i Uppsala den 24 november 2018

Signal- och bildbehandling TSBB14

Om semantisk följd och bevis

Rekursionsformler. Komplexa tal (repetition) Uppsala Universitet Matematiska institutionen Isac Hedén isac

Programmering II (ID1019) :00-11:00

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Programmering II (ID1019) :00-12:00

Lösningar för tenta i TMV200 Diskret matematik kl. 14:00 18:00

Sökning och sortering

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Gemensam presentation av matematiskt område: Ekvationer Åldersgrupp: år 5

Transkript:

Programkonstruktion och Datastrukturer, lektion 7 Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet 9 Dec 2010

Vad har följande funktion för tidskomplexitet? fun pow2 0 = 1 pow2 n = pow2(n 1) + pow2(n 1) Vi definierar en komplexitetsfunktion T för pow2, som givet en problemstorlek returnerar hur lång tid ett problem av den storleken tar att lösa. Eftersom pow2 är rekursivt definierat, ter det sig naturligt att också definiera T rekursivt: {? om n = 0 T (n) =? annars 9 Dec 2010-2 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

fun pow2 0 = 1 pow2 n = pow2(n 1)+pow2(n 1) 9 Dec 2010-3 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

fun pow2 0 = 1 pow2 n = pow2(n 1)+pow2(n 1) Låt c 1 beteckna kostnaden för att beräkna basfallet pow2(0). 9 Dec 2010-3 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

fun pow2 0 = 1 pow2 n = pow2(n 1)+pow2(n 1) Låt c 1 beteckna kostnaden för att beräkna basfallet pow2(0). När n 1, låt c 2 beteckna kostnaden för mönstermatchning samt de rödmarkerade additionerna och subtraktionerna. 9 Dec 2010-3 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

fun pow2 0 = 1 pow2 n = pow2(n 1)+pow2(n 1) Låt c 1 beteckna kostnaden för att beräkna basfallet pow2(0). När n 1, låt c 2 beteckna kostnaden för mönstermatchning samt de rödmarkerade additionerna och subtraktionerna. T kan då{ uttryckas: c1 om n = 0 T (n) = c 2 + 2T (n 1) annars 9 Dec 2010-3 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

Nästa steg är att uttrycka T på sluten form, dvs utan rekursion. En metod är följande tvåstegsraket: 1 Gissa hur den slutna formen kommer se ut. 2 Visa att din gissning stämmer med induktion. Att hitta en bra gissning kan vara svårt. Om man inte vet var man ska börja, kan man testa sig fram tills man ser mönstret. 9 Dec 2010-4 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

Vi testar att plugga in några värden i T: { c1 om n = 0 T (n) = c 2 + 2T (n 1) annars T (0) = c 1 T (1) = c 2 + 2T (0) = c 2 + 2c 1 T (2) = c 2 + 2T (1) = c 2 + 2(c 2 + 2c 1 ) = 3c 2 + 4c 1 T (3) = c 2 + 2T (2) = c 2 + 2(3c 2 + 4c 1 ) = 7c 2 + 8c 1 Vart och ett av fallen vi testade stämmer överens med formeln: T (n) = (2 n 1)c 2 + 2 n c 1 Men stämmer det för alla n? Vi försöker oss på ett induktionsbevis. 9 Dec 2010-5 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

Teorem T (n) = (2 n 1)c 2 + 2 n c 1 Bevis Med induktion över n. I basfallet är T (0) = c 1 = 0c 2 + 1c 1 = (2 0 1)c 2 + 2 0 c 1. I induktionssteget antar vi att T (n) = (2 n 1)c 2 + 2 n c 1, och visar T (n + 1) = (2 n+1 1)c 2 + 2 n+1 c 1. Vi får då att T (n + 1) = c 2 + 2T (n) (definitionen av T) = c 2 + 2((2 n 1)c 2 + 2 n c 1 ) (induktionshypotes) = c 2 + (2 n+1 2)c 2 + 2 n+1 c 1 = (2 n+1 1)c 2 + 2 n+1 c 1 9 Dec 2010-6 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

Vi har visat att T (n) = (2 n 1)c 2 + 2 n c 1, men vi har mer information än vad vi behöver: konstanterna c 1 och c 2 intresserar oss inte. Nästa steg är att uttrycka T (n) med Θ-notation, och således abstrahera bort konstanterna. Även här fungerar tvåstegsraketen: 1 Gissa. 2 Visa att gissningen stämmer. En uppenbar gissning är T (n) = Θ(2 n ). 9 Dec 2010-7 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

Teorem (2 n 1)c 2 + 2 n c 1 = Θ(2 n ) Bevis Enligt definitionen av Θ räcker det med att visa att det finns positiva konstanter a, b, n 0 sådana att olikheten a2 n (2 n 1)c 2 + 2 n c 1 b2 n gäller för alla n n 0. Om vi väljer t ex a = c 1 + c 2 1 och b = c 1 + c 2 kan vi skriva om den vänstra olikheten till: 2 n c 2 och den högra till: c 2 0 Den högra blir då uppenbart sann eftersom c 2 är positiv. Den vänstra blir sann om vi väljer t ex n 0 = lg 2 (c 2 ). 9 Dec 2010-8 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet

I uppgift 2 står det ingenstans vilka tidsenheter tidskomplexitetsfunktionerna ni fått använder. I synnerhet kan ni inte anta att de använder CPU-timmar. 9 Dec 2010-9 - Johannes Åman Pohjola & William Sjöstedt, Uppsala Universitet