1 Recurrente betrekkingen

Vergelijkbare documenten
recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

2 Recurrente betrekkingen

1 Inleiding in Functioneel Programmeren

Combinatoriek groep 1

Opgaven Sommaties Datastructuren, 8 mei 2019, Werkgroep.

Volledige inductie. Hoofdstuk 7. Van een deelverzameling V van de verzameling N van alle natuurlijke getallen veronderstellen.

10 Meer over functies

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Derde college complexiteit. 7 februari Zoeken

1 Delers 1. 3 Grootste gemene deler en kleinste gemene veelvoud 12

Eigenschap (Principe van welordening) Elke niet-lege deelverzameling V N bevat een kleinste element.

Combinatoriek groep 1 & 2: Recursie

Formeel Denken 2014 Uitwerkingen Tentamen

5 Afronden en afkappen

Getallensystemen, verzamelingen en relaties

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

Combinatoriek groep 2

Een eenvoudig algoritme om permutaties te genereren

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

1 Recurrente betrekkingen De torens van Hanoi Vlakverdeling Het Josephus-probleem... 9

6 Complexe getallen. 6.1 Definitie WIS6 1

Recursie: definitie. De som van de kwadraten van de getallen tussen m en n kan als volgt gedefinieerd worden:

Bewijs door inductie

Opmerking. TI1300 Redeneren en Logica. Met voorbeelden kun je niks bewijzen. Directe en indirecte bewijzen

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

7 Deelbaarheid. 7.1 Deelbaarheid WIS7 1

VERZAMELINGEN EN AFBEELDINGEN

Verzamelingen. Hoofdstuk 5

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Aanvulling aansluitingscursus wiskunde. A.C.M. Ran

handleiding formules

Enkele valkuilen om te vermijden

De partitieformule van Euler

Bijzondere kettingbreuken

Eerste Toets Datastructuren 22 mei 2019, , Educ-β en Megaron.

Logica 1. Joost J. Joosten

Polynomen. + 5x + 5 \ 3 x 1 = S(x) 2x x. 3x x 3x 2 + 2

Genererende Functies K. P. Hart

Uitwerking Puzzel 93-1, Doelloos

Tentamen Discrete Wiskunde

Logica 1. Joost J. Joosten

x = b 1 x 1 , b = x n b m i,j=1,1 en een vector [x j] n j=1 m n a i,j x j j=1 i=1

In Katern 2 hebben we de volgende rekenregel bewezen, als onderdeel van rekenregel 4:

Kettingbreuken. 20 april K + 1 E + 1 T + 1 T + 1 I + 1 N + 1 G + 1 B + 1 R + 1 E + 1 U + 1 K + E + 1 N A + 1 P + 1 R + 1 I + 1

Combinatoriek groep 1

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

Uitleg. Welkom bij de Beverwedstrijd Je krijgt 15 vragen, die je in maximaal 45 minuten moet beantwoorden.

II.3 Equivalentierelaties en quotiënten

Tegenvoorbeeld. TI1300: Redeneren en Logica. De truc van Gauss. Carl Friedrich Gauss, 7 jaar oud (omstreeks 1785)

7.0 Voorkennis. Definitie = Een afspraak, die niet bewezen hoeft te worden.

Logica 1. Joost J. Joosten

Getaltheorie groep 3: Primitieve wortels

Arrays in LOGO. In LOGO heeft de eerste item van de array standaard index 1.

Examen Datastructuren en Algoritmen II

We beginnen met de eigenschappen van de gehele getallen.

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Je hebt twee uur de tijd voor het oplossen van de vraagstukken. µkw uitwerkingen. 12 juni 2015

8. Differentiaal- en integraalrekening

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Tentamen Grondslagen van de Wiskunde A Met beknopte uitwerking

Getaltheorie I. c = c 1 = 1 c (1)

Inhoud college 4 Basiswiskunde. 2.6 Hogere afgeleiden 2.8 Middelwaardestelling 2.9 Impliciet differentiëren 4.9 Linearisatie

Inzien en Bewijzen. Jan van Eijck en Albert Visser. Noordwijkerhout, 4 februari Samenvatting

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

Examen G0U13 Bewijzen en Redeneren Bachelor 1ste fase Wiskunde. vrijdag 31 januari 2014, 8:30 12:30. Auditorium L.00.07

Aanvulling basiscursus wiskunde. A.C.M. Ran

Het oplossen van stelsels lineaire vergelijkingen Wiskunde 2, 2DM60 College 2b

n 2 + 2n + 4 3n 2 n + 4n n + 2n + 12 n=1

Katernen. regionale training. tweede ronde. Nederlandse Wiskunde Olympiade

Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)

Algebra groep 2 & 3: Standaardtechnieken kwadratische functies

Vierde college algoritmiek. 1 maart Toestand-actie-ruimte Brute Force

Examen Datastructuren en Algoritmen II

Geldwisselprobleem van Frobenius

Examencursus. wiskunde A. Rekenregels voor vereenvoudigen. Voorbereidende opgaven VWO kan niet korter

Worteltrekken modulo een priemgetal: van klok tot cutting edge. Roland van der Veen

Wanneer zijn veelvouden van proniks proniks?

Examen Wiskundige Basistechniek 15 oktober 2011

opgaven formele structuren deterministische eindige automaten

Cabri-werkblad. Driehoeken, rechthoeken en vierkanten. 1. Eerst twee macro's

Mededelingen. TI1300: Redeneren en Logica. Waarheidstafels. Waarheidsfunctionele Connectieven

Finaletraining Wiskunde Olympiade

Transcriptie:

WIS1 1 1 Recurrente betrekkingen 1.1 De torens van Hanoi De torens van Hanoi Edouard Lucas, 1884: Gegeven 3 pinnen en 64 schijven van verschillende grootte. Startsituatie: 64 op linkerpin, geordend naar grootte. Opgave: verplaats ze alle naar rechterpin. Regel 1: er mag maar 1 schijf tegelijk worden verplaatst. Regel : nooit mag een grotere schijf rusten op een kleinere. Generalisatie en naamgeving Generalisatie: beschouw het geval met n schijven. Naamgeving: zij T n het minimale aantal bewegingen dat het probleem oplost. Beschouw kleine gevallen: T 0 = 0, T 1 = 1, T = 3. Recurrente betrekking Stel dat we weten hoe we n 1 schijven kunnen verplaatsen, kunnen we het dan ook met n? Observatie: als de grootste schijf wordt verplaatst, kan dat alleen naar een lege pin. Het bereiken van die toestand kost op zijn zuinigst T n 1 verplaatsingen. Daarna moeten de n 1 overige schijven worden verplaatst. Dat kost ook minimaal T n 1 stappen. Conclusie: T n = T n 1 + 1 voor n > 0 dus T 0 = 0, T 1 = 1, T = 3, T 3 = 7, T 4 = 15, T 5 = 31,...

WIS1 Programma Java-methode die n schijven verplaatst void move(n, Pin source, Pin destination, Pin auxiliary) { if (n > 0) { move(n-1, source, auxiliary, destination); moveone(source, destination); move(n-1, auxiliary, destination, source); } } Dit is de efficiëntst mogelijke methode (in aantal verplaatsingen). Het genereerde aantal verplaatsingen is T n, de (tijd)complexiteit van dit programma is daarmee evenredig. Merk op: dit is een recursieve methode, een methode die zichzelf aanroept. Zorg ervoor dat zoiets niet tot een oneindige reeks aanroepen leidt. Dat gaat hier goed omdat 0 n 1 < n. Output voor n = 8 1. Verplaats schijf van links naar rechts. Verplaats schijf van links naar midden 3. Verplaats schijf van rechts naar midden 4. Verplaats schijf van links naar rechts 5. Verplaats schijf van midden naar links 6. Verplaats schijf van midden naar rechts 7. Verplaats schijf van links naar rechts 8. Verplaats schijf van links naar midden 9. Verplaats schijf van rechts naar midden 10. Verplaats schijf van rechts naar links... 50. Verplaats schijf van rechts naar links 51. Verplaats schijf van midden naar links 5. Verplaats schijf van rechts naar midden 53. Verplaats schijf van links naar rechts 54. Verplaats schijf van links naar midden 55. Verplaats schijf van rechts naar midden Vermoeden Java-methode die T n uitrekent int T(int n) { if (n==0) return 0; return *T(n-1)+1; } Dit programma berekent T n door middel van de recurrente betrekking: T 0 = 0, T n = T n 1 + 1 voor n > 0. De output is: 0, 1, 3, 7, 15, 31, 63, 17, 55, 511, 103, 047, 4095, 8191, 16383, 3767, 65535, 131071, 6143, 5487,... Vermoeden: T n = n 1 voor n 0 Hoe kunnen we nagaan of dit inderdaad altijd waar is?

WIS1 3 Inductiebewijs Een algemene manier om te bewijzen dat een zekere uitspraak P n geldt voor alle n met n 0, bestaat uit twee onderdelen: 1. Basis: Bewijs dat P 0 geldt.. Stap: Bewijs dat voor elke n met n > 0 waarvoor P n 1 geldt ook P n geldt. In ons geval is P n de uitspraak T n = n 1. Er geldt T 0 0 0 1 waarmee we de basis hebben bewezen. Inductiestap Neem aan n > 0 en T n 1 = n 1 1 (de inductiehypothese). Dan T n T n 1 + 1 = {inductiehypothese} ( n 1 1) + 1 n 1 dus we hebben ook de inductiestap bewezen. Conclusie: T n = n 1 voor n 0 Hint calculus Manier van opschrijven van wiskundige bewijzen, geïntroduceerd door de informatici Edsger W. Dijkstra en Wim Feijen rond 1980. Ook erg geschikt voor het construeren van (vooral functionele) programma s. Bewijs dat A = D door een afleiding van de vorm A = {uitleg waarom A = B } B = {uitleg waarom B = C } C = {uitleg waarom C = D } D

WIS1 4 Dit werkt ook voor langere bewijzen en voor relaties zoals of. Voordeel: de lezer hoeft de uitleg niet zelf te verzinnen, en er wordt expliciet waar welk gegeven is gebruikt. Alternatief bewijs: coördinatentransformatie Introduceer de notatie U n = T n + 1. Dan U 0 = 1 en voor n > 0 U n = {definitie van U n } T n + 1 = {recurrente betrekking voor T n } (T n 1 + 1) + 1 (T n 1 + 1) = {definitie van U n } U n 1 Dus voor n > 0 is U n = U n 1. Daaruit zien we meteen in dat Moraal: gebruik geschikte coördinaten. U n = n voor n 0 Mathematica Invoer: Uitvoer: RSolve[{T[n] == T[n 1] + 1, T[0] == 0}, T[n], n] {{T[n] 1 + n }} 1. Vlakverdeling Vlakverdeling met rechte lijnen Jacob Steiner, 186: In hoeveel delen kan het platte vlak worden verdeeld door middel van een gegeven aantal rechte lijnen? Naamgeving: Noem het grootste aantal stukken dat met n lijnen kan worden gemaakt L n. Kleine gevallen: L 0 = 1, L 1 =, L = 4. Eerste vermoeden: L n = n. Helaas: L 3 = 7.

WIS1 5 Recurrente betrekking Stel er zijn al n 1 lijnen getekend. Het tekenen van de n -de lijn vergroot het aantal stukken maximaal als die alle voorgaande lijnen snijdt. Dit kunnen we inderdaad bereiken, door deze niet evenwijdig aan de voorgaande te kiezen. Er worden dan n nieuwe vlakdelen afgesneden. Conclusie: L 0 = 1 L n = L n 1 + n voor n > 0 Vermoeden L n L n 1 + n L n + (n 1) + n L n 3 + (n ) + (n 1) + n. L 0 + 1 + + + (n ) + (n 1) + n = { L 0 = 1 ; noteer S n = 1 + + n } 1 + S n Vermoeden Het voorgaande is niet echt een bewijs, omdat we het gebruik van stippeltjes niet kunnen vermijden. In wezen is dit een analogieredenering! (Valkuil: wat is de graad van het polynoom (x a)(x b) (x z)?) De redenering leidt wel tot het sterke vermoeden dat L n = 1 + S n voor n 0 waar S n het n de driehoeksgetal 1 + + n is. Driehoeksgetallen Argument van Carl Friedrich Gauss (1786, 9 jaar oud!): S n = {per definitie} 1 + + + (n 1) + n

WIS1 6 = {verdubbeling} 1 ((1 + + + (n 1) + n) + (1 + + + (n 1) + n)) = {omkering volgorde in de tweede helft} 1 ((1 + + + (n 1) + n) + (n + (n 1) + + + 1)) = {twee aan twee samennemen van termen} 1 ((1 + n) + ( + (n 1)) + + ((n 1) + ) + (n + 1)) = {in totaal n termen, die alle n + 1 groot zijn} n(n + 1) 1 Ook dit is nog geen echt bewijs (stippeltjes), maar het kan daartoe wel worden omgevormd als we sommen ( n k=1 ) in ons repertoire van standaardoperaties opnemen. Dan zijn wel rekenregels voor omkeren en samennemen nodig. Zie volgend college! Inductiebewijs Vermoeden: L n = 1 + 1 n(n + 1) Basis: L 0 = 1 en ook 1 + 1 0(0 + 1) = 1. Stap: neem aan n > 0 en L n 1 = 1 + 1 (n 1)n (inductiehypothese). Dan L n L n 1 + n = {inductiehypothese} 1 + 1 (n 1)n + n = {haal factor 1 n buiten haakjes} 1 + 1 n(n 1 + ) 1 + 1 n(n + 1) Conclusie Hiermee is echt bewezen dat L n = 1 + 1 n(n + 1) voor n 0 Gevolg: L n 1 n voor grote waarden van n Mathematica Invoer: Uitvoer: RSolve[{L[n] == L[n 1] + n, L[0] == 1}, L[n], n] {{L[n] 1 ( + n + n )}}

WIS1 7 1.3 Het Josephus-probleem Het Josephus-probleem Flavius Josephus (ca. 37-100), Joods geschiedschrijver van de oorlog tegen de Romeinen: 41 personen staan in een cirkel. Elke tweede wordt gedood totdat er maar één over is. Vraag: wie is de laatste overlevende? Beschouw het algemene probleem voor n personen, voor n 1. Zij J(n) het nummer van de laatste overlevende. (We schrijven J(n) in plaats van J n omdat we straks een ingewikkelde expressie als index krijgen. Dit vereist helderziendheid...) Kleine gevallen: J(1) = 1, J() = 1, J(3) = 3, J(4) = 1, J(5) = 3, J(6) = 5,... Er dient zich geen vermoeden aan. Het valt op dat J(n) altijd oneven lijkt te zijn. Reden: alle mannen met even nummer zijn gedood in de eerste rondgang. Recurrente betrekking Hoe is de situatie na de eerste rondgang? Beschouw het geval n = k. Nog in leven zijn de nummers 1, 3, 5,..., k 1. Dat is gelijk aan de uitgangssituatie met k personen maar met elk nummer t vervangen door t 1, dus het nummer van de laatste overlevende is J(k) 1. Beschouw het geval n = k + 1. Nog in leven zijn de nummers 3, 5, 7,..., k + 1. Dat is gelijk aan de uitgangssituatie met k personen, maar met elk nummer t vervangen door t + 1, dus het nummer van de laatste overlevende is J(k) + 1. Recurrente betrekking: J(1) = 1 J(k) = J(k) 1 voor k 1 J(k + 1) = J(k) + 1 voor k 1 (Mathematica ondersteunt vergelijkingen van dit type niet!) Programma Java-methode die J(n) uitrekent int J(int n) { if (n==1) return 1; int k = n/; if (n%==0) return *J(k)-1; return *J(k)+1; } Merk op dat dit programma heel efficiënt is: per aanroep wordt het argument van J minstens gehalveerd.

WIS1 8 Vermoeden Uitvoer: J(1) = 1, J() = 1, J(3) = 3, J(4) = 1, J(5) = 3, J(6) = 5, J(7) = 7, J(8) = 1, J(9) = 3, J(10) = 5, J(11) = 7, J(1) = 9, J(13) = 11, J(14) = 13, J(15) = 15, J(16) = 1, J(17) = 3, J(18) = 5, J(19) = 7,... Vermoeden: J(n) = l + 1 waar n = m + l en 0 l < m Bewijs met inductie De recurrente betrekking was J(1) = 1 J(k) = J(k) 1 voor k 1 J(k + 1) = J(k) + 1 voor k 1 We bewijzen het vermoeden met inductie naar m. J(n) = l + 1 waar n = m + l en 0 l < m Basis: ingeval m = 0 geldt l = 0 en dus n = 1 ; de uitspraak reduceert tot J(1) = 1, wat uit de recurrente betrekking volgt. Bewijs met inductie De recurrente betrekking was J(1) = 1 J(k) = J(k) 1 voor k 1 J(k + 1) = J(k) + 1 voor k 1 Stap: zij m > 0 en J(n) = l + 1 voor n = m 1 + l en 0 l < m 1. Zij nu n = m + p met 0 p < m 1. Dan J(n) = { n = m + p } J( m + p) = {recurrente betrekking met k = m 1 + p } J( m 1 + p) 1 = {inductiehypothese met l = p } (p + 1) 1 (p) + 1 Hiermee is de stap bewezen voor even n.

WIS1 9 Bewijs met inductie De recurrente betrekking was J(1) = 1 J(k) = J(k) 1 voor k 1 J(k + 1) = J(k) + 1 voor k 1 We veronderstellen nog steeds m > 0 en J(n) = l + 1 voor n = m 1 + l en 0 l < m 1 en beschouwen nu een oneven n, zeg n = m + (p + 1) met 0 p < m 1. Dan J(n) = { n = m + p + 1 } J( m + p + 1) = {recurrente betrekking met k = m 1 + p } J( m 1 + p) + 1 = {inductiehypothese met l = p } (p + 1) + 1 Hiermee is de stap ook bewezen voor oneven n. Alternatief bewijs zonder rekenen 1. Als n even is, dan is na de eerste rondgang het aantal personen gehalveerd en persoon 1 nog in leven.. Dus als n een macht van is, zeg m, dan is na m rondgangen het aantal personen gereduceerd tot 1 en persoon 1 nog in leven. 3. Zij nu n = m + l met 0 l < m. Na l dodingen zijn er m personen nog in leven, en we zijn in de rondgang gekomen tot aan nummer l+1. Door hernummering blijkt dat deze in leven blijft. Binaire representatie We hebben nu bewezen J(n) = l + 1 waar n = m + l en 0 l < m In de computer worden getallen binair gerepresenteerd. Noteer n = (b m b m 1... b 1 b 0 ) als afkorting voor n = b m m + b m 1 m 1 + + b 1 + b 0 waar elke b i de waarde 0 of 1 heeft, en b m = 1. Dan n = (1b m 1 b m... b 1 b 0 ) l = (0b m 1 b m... b 1 b 0 ) l = (b m 1 b m... b 1 b 0 0) Dus l is de zogenaamde left-shift van n.