Torens van Hanoi - PowerPoint PPT Presentation

About This Presentation
Title:

Torens van Hanoi

Description:

Torens van Hanoi Uitgevonden door Franse Wiskundige Edouard Lucas in 1883. Beschreven in zijn wiskundig spelletjesboek R cr ations Math matiques – PowerPoint PPT presentation

Number of Views:135
Avg rating:3.0/5.0
Slides: 49
Provided by: uge69
Category:
Tags: hanoi | torens | van

less

Transcript and Presenter's Notes

Title: Torens van Hanoi


1
Torens van Hanoi
  • Uitgevonden door Franse Wiskundige Edouard Lucas
    in 1883.
  • Beschreven in zijn wiskundig spelletjesboek
    Récréations Mathématiques


  • De Legende een Hindoe-tempel met priesters (de
    Brahmanen)

2
Torens van Hanoi
  • Drie staven. Op één staaf zaten 64 gouden
    schijven van verschillende grootte, de grootste
    vanonder, de kleinste vanboven.
  • Verplaatsen van de ene naar de andere.
  • Eén schijf per stap verplaatsen
  • Er mag nooit een grotere op een kleinere liggen
  • De wereld komt tot een einde als het werk af is.

3
Torens van Hanoi
  • Eén stap per seconde 580.000.000.000 jaar werk
  • Ruwweg veertig maal zoveel de geschatte leeftijd
    van het heelal!

4
Torens van Hanoi
  • Kleine versie 8 schijven (verkocht als speelgoed)
  • Programmeren willekeurig aantal staven

5
Torens van Hanoi
  • Hoe aanpakken???

6
Torens van Hanoi
7
Torens van Hanoi
  • Hoe aanpakken???
  • We beginnen met kleinste schijf te verplaatsen

8
Torens van Hanoi
9
Torens van Hanoi
10
Torens van Hanoi
  • Hoe aanpakken???
  • We beginnen met kleinste schijf te verplaatsen
  • We nemen volgende schijf en zetten ze op een lege
    staaf.
  • We zetten kleinste schijf erop, we hebben nu een
    klein torentje van twee schijven verplaatst.

11
Torens van Hanoi
12
Torens van Hanoi
  • Hoe aanpakken???
  • We beginnen met kleinste schijf te verplaatsen
  • We nemen volgende schijf en zetten ze op een lege
    staaf.
  • We zetten kleinste schijf erop, we hebben nu een
    klein torentje van twee schijven verplaatst.
  • We zetten de volgende schijf op de lege staaf.

13
Torens van Hanoi
???
14
Torens van Hanoi
  • Hoe aanpakken???
  • We beginnen met kleinste schijf te verplaatsen
  • We nemen volgende schijf en zetten ze op een lege
    staaf.
  • We zetten kleinste schijf erop, we hebben nu een
    klein torentje van twee schijven verplaatst.
  • We zetten de volgende schijf op de lege staaf.
  • PROBLEEM deze schijf moet ONDER het kleine
    torentje geraken.

15
Torens van Hanoi
16
Torens van Hanoi
  • Hoe aanpakken???
  • We beginnen met kleinste schijf te verplaatsen
  • We nemen volgende schijf en zetten ze op een lege
    staaf.
  • We zetten kleinste schijf erop, we hebben nu een
    klein torentje van twee verplaatst.
  • We zetten de volgende schijf op de lege staaf.
  • PROBLEEM deze schijf moet ONDER het kleine
    torentje geraken.
  • OPLOSSING we verplaatsen het kleine torentje nog
    eens op dezelfde manier, maar nu gebruiken we de
    bronstaaf als hulpstaaf.

17
Torens van Hanoi
18
Torens van Hanoi
19
Torens van Hanoi
  • We hebben terug hetzelfde probleem
  • We hebben een toren van drie schijven gemaakt.
  • Er moet een grotere schijf onder.

20
Torens van Hanoi
  • Oplossing we doen nóg eens alles opnieuw we
    verplaatsen de driedelige toren bovenop de
    grotere schijf.

21
Torens van Hanoi
22
Torens van Hanoi
  • Oplossing we doen nóg eens alles opnieuw we
    verplaatsen de driedelige toren bovenop de
    grotere schijf.
  • We plaatsen eerst het tweedelige torentje op de
    lege staaf. Hiervoor gebruiken we de doelstaaf
    als hulpstaaf.

23
Torens van Hanoi
24
Torens van Hanoi
  • Oplossing we doen nóg eens alles opnieuw we
    verplaatsen de driedelige toren bovenop de
    grotere schijf.
  • We plaatsen eerst het tweedelige torentje op de
    lege staaf. Hiervoor gebruiken we de doelstaaf
    als hulpstaaf.
  • We plaatsen de onderste schijf van de driedelige
    toren op de grotere staaf

25
Torens van Hanoi
26
Torens van Hanoi
  • Oplossing we doen nóg eens alles opnieuw we
    verplaatsen de driedelige toren bovenop de
    grotere schijf.
  • We plaatsen eerst het tweedelige torentje op de
    lege staaf. Hiervoor gebruiken we de doelstaaf
    als hulpstaaf.
  • We plaatsen de onderste schijf van de driedelige
    toren op de grotere staaf.
  • We verplaatsen het tweedelige torentje nóg eens,
    nu op de doelstaaf. De lege staaf kan nu als
    hulpstaaf gebruikt worden.

27
Torens van Hanoi
28
(No Transcript)
29
(No Transcript)
30
Torens van Hanoi
  • Als we weten hoe we een toren van hoogte n-1
    moeten verplaatsen, hoe verplaatsen we dan een
    toren van hoogte n (ngt1)?
  • Beschrijf het algoritme om dit te doen.

31
Torens van Hanoi
  • To VerplaatsToren n
  • VerplaatsToren n-1 naar hulpstaaf
  • Verplaats onderste schijf naar doelstaaf
  • VerplaatsToren n-1 van hulpstaaf naar
    doelstaaf
  • end

Het verplaatsen van een toren duurt dus ongeveer
dubbel zo lang als het verplaatsen van een toren
van één schijf minder! Vandaar dat de priesters
zo lang werk hebben aan 64...
32
Hanoi in LOGO
  • Probleem we willen een grafische voorstelling
    maken van de toren van hanoi in LOGO.
  • Schrijf een procedure to hanoi n
  • die een demonstratie geeft van hanoi voor een
    toren van n schijven.
  • Verdeel eerst in deelproblemen!!!

33
Hanoi in LOGO
  • We willen de staven en schijven op het scherm
    tekenen. (De beginsituatie)
  • We willen een willekeurig aantal schijven kunnen
    verplaatsen.
  • We willen één schijf kunnen verplaatsen. Hiervoor
    moeten we ze kunnen tekenen, maar ook uitwissen.

34
(No Transcript)
35
Opmerking
Voor het practische gemak maken we gebruik van
devolgende procedure die we reeds in een andere
les hebben geprogrammeerd to positie x
y pu setxy x y pd end
36
Hanoi in LOGO
  • 1) Maak een procedure
  • To Staaf staaf aantalschijven
  • staaf is een waarde 1,2 of 3 (bepaalt de
    positie),
  • aantalschijven bepaalt de hoogte van de staaf.

37
Hanoi in LOGO
30
20
15
300
38
Hanoi in LOGO
to staaf staaf aantalschijven setpc 255 0 0
setfc 255 0 0 positie 300(staaf-2) 0 repeat
2 fd 20aantalschijven20 rt 90 fd 30 rt
90 rt 10 fd 5 fill lt 10 end
39
Toevoegen van een Schijf
  • To voegtoeSchijf staaf schijf
  • staaf De procedure moet weten op welke staaf de
    schijf moet geplaatst worden!
  • schijf De procedure moet weten welke schijf
    (grootte) er moet geplaatst worden. 1 is de
    kleinste, 2 is groter, enz...
  • De procedure moet nóg iets weten. WAT??? Toch
    kunnen we deze niet meegeven met een parameter.
    WAAROM???

40
Toevoegen van een Schijf
  • Oplossing
  • We moeten ook weten op welke positie de schijf
    moet getekend worden.
  • We moeten dus weten hoe hoog de toren op de staaf
    al is, want de volgende schijf moet daar bovenop
    getekend worden.
  • Als we een procedure schrijven om een schijf te
    verplaatsen, dan moet die werken op ieder moment,
    voor om het even welk aantal schijven op de
    staven zitten.
  • We moeten de hoogtes van de torens dus bijhouden
    in variabelen.

41
Toevoegen van een Schijf
  • Er zijn drie staven. We hebben dus drie
    variabelen nodig!
  • Wanneer we een schijf bij een staaf staaf
    toevoegen, moeten we drie IF-structuren schrijven
    om de juiste variabele op te vragen!
  • Als we de waarde veranderen, moeten we weer drie
    if-structuren gebruiken!
  • Er moet een betere manier zijn... Eén variabele
    een array.

42
Toevoegen van een Schijf
  • Make staaf1 0
  • Make staaf2 0
  • Make staaf3 0
  • Bijvoorbeeld er is een schijf toegevoegd
  • if (staaf1) make staaf1 staaf11
  • if(staaf2) make staaf2 staaf21
  • if (staaf3) make staaf3 staaf31

43
Arrays in LOGO
  • Een array
  • Is één variabele die verschillende items bevat.
    Iedere item heeft een waarde.
  • De items staan in een bepaalde volgorde. Het is
    dus een rij van waarden.
  • De positie van iedere item in die rij noemen we
    de index.

44
(No Transcript)
45
Arrays in LOGO
  • Notatie
  • Zo maken we een array
  • Make array1 7 8 5 1 vier bepaalde
    elementen
  • Make array2 (array 100) honderd onbepaalde
    elementen
  • Zo vragen we de waarde van een item op (item 3
    array1) geeft item met index 3 (5)
  • Zo veranderen we de waarde van een item setItem
    50 array2 100 zet item 50 op 100

46
Arrays in LOGO
  • Make staven 0 0 0
  • Bijvoorbeeld er is een schijf toegevoegd
  • setItem staaf staven (item staaf staven)1

47
Toevoegen van een schijf
  • Schrijf de procedure voegtoeSchijf.
  • Maak eerst manueel een array Staven aan, en
    teken drie staven.
  • Zorg dat de procedure in elke toestand werkt
  • Schrijf de procedure beginSituatie. Deze doet
    hetvolgende
  • Tekent 3 staven
  • Maakt de array Staven
  • Voegt aantalschijven schijven toe

48
Hanoi in LOGO
10 x volgnummer
Write a Comment
User Comments (0)
About PowerShow.com