recursie: de torens van hanoi lesgever: tineke broekaert

29
Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Upload: ludo-cools

Post on 04-Jun-2015

225 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Recursie:De torens van Hanoi

Lesgever: Tineke Broekaert

Page 2: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Herhaling

• Recursie? algoritme roept zichzelf op opgeroepen probleem kleiner dan origineel 2 delen: basisgeval en recursief gedeelte oplossing: Eerst basisgeval behandelen! voorbeeld: n! = n(n-1)!

Page 3: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 4: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

Voorwaarden: 1 schijf verplaatsen per beurt geen grote staaf op kleinere plaatsen

1 2 3

Page 5: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 6: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 7: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 8: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 9: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 10: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

BASISGEVAL: 1 schijf verplaatst

Page 11: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 12: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

toren van 2 schijven verplaatst

Page 13: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 14: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 15: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 16: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Toren van drie schijven verplaatst

Page 17: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Page 18: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

hulp bron doel

1 2 3

Toren van 4 schijven verplaatst

Page 19: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

De torens van Hanoi

• Probleem opsplitsen in deelproblemen

• Algoritme:Als N = 1 enige schijf verplaatst

Als N > 1

- Verplaats bovenste n-1 schijven van bron- naar hulpstaaf - Verplaats onderste schijf van begin- naar doelstaaf - Verplaats n-1 schijven van hulp- naar doelstaaf

recursie!!

recursie!!

basisgeval!!

Page 20: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

• Deelproblemen? beginsituatie: staven en schijven op het scherm tekenen verplaatsen van schijven:

• schijf afhalen van staaf • schijf toevoegen aan staaf

beginsituatie

HANOI

verplaatsSchijven

basisgeval

Recursieve oproep

Page 21: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

1. Beginsituatie to staaf : staaf : aantalSchijven

setpc [255 0 0] setfc [255 0 0]positie 300*(:staaf-2) 0repeat 2 [fd 20+:aantalschijven*20 rt 90 fd 30 rt 90]rt 10 fd 5 fill lt 10

test : staaf 1 5 staaf 2 5 staaf 3 5

WAAROM

Page 22: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo voegToeSchijf : staaf :schijf

setpc [0 0 255] setfc [0 0 255]positie 300*(:staaf-2)-(10*:schijf) (item :staaf :staven)*20repeat 2 [fd 15 rt 90 fd 30+20*:schijf rt 90]rt 10 fd 5fillpositie 300*(:staaf-2)+5 (item :staaf :staven)*20+5fillpositie 300*(:staaf-2)+35 (item :staaf :staven)*20+5filllt 10setItem :staaf :staven (item :staaf :staven)+1

WAAROM

Page 23: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

• Array: 1 variabele, bevat verschillende items

index

make “arrayNaam {3 4 2}

(item 1 arrayNaam )

setItem 2 arrayNaam 10

3

{3 10 2}

Page 24: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

test: make “staven{0 0 0}staaf 1 5staaf 2 5staaf 3 5

voegToeSchijf 2 5 voegToeSchijf 2 4 voegToeSchijf 2 3 voegToeSchijf 2 2 voegToeSchijf 2 1

KORTER?

make “aantalSchijven 5repeat :aantalschijven [voegtoeSchijf 2 :aantalschijven make "aantalschijven :aantalschijven-1]

Page 25: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

cs htmake "staven {0 0 0}staaf 1 :aantalschijvenstaaf 2 :aantalschijvenstaaf 3 :aantalschijvenrepeat :aantalschijven [voegtoeSchijf 2 :aantalschijven make "aantalschijven :aantalschijven-1]

to beginSituatie :aantalschijven

beginsituatie

HANOI

verplaatsSchijven

Page 26: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

2. Verplaatsen van schijven

to verplaatsSchijf :bronstaaf :doelstaaf :schijf

verwijderSchijf : bronstaafvoegToeSchijf :doelstaaf :schijf

Basisgeval: verplaats 1 schijf

Procedure verwijderSchijf

Page 27: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

setItem :staaf :staven (item :staaf :staven)-1

; schijf wissensetfc [255 255 255] positie 300*(:staaf-2) (item :staaf :staven)*20+5fill

; paal terugkleurenpositie 300*(:staaf-2) (item :staaf :staven)*20setpc [255 0 0] setfc [255 0 0]repeat 2 [fd 15 rt 90 fd 30 rt 90]rt 10 fd 5 filllt 10

to verwijderSchijf :staaf test: verwijderSchijf 2

Page 28: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

To verplaatsSchijven :aantalschijven :bronstaaf :doelstaaf :hulpstaaf

ifelse :aantalschijven = 1 [ verplaatsSchijf :bron :doel :aantalschijven ] [ verplaatsSchijven :aantalschijven-1 :bron :hulp :doel verplaatsSchijf :bron :doel :aantalschijven verplaatsSchijven :aantalschijven-1 :hulp :doel :bron]

procedure verplaatsSchijven

Page 29: Recursie: De torens van Hanoi Lesgever: Tineke Broekaert

Implementatie in Logo

beginSituatie :aantalSchijvenverplaatsSchijven :aantalSchijven 2 3 1

to hanoi :aantalschijven

3. Oplossing