• No results found

4.4

Les 2: doolhoven

De demo van de deze les is beschikbaar via $code/course/view.php?id=5.

4.4.1 Probleemstelling

De les doolhoven handelt over het concept doolhoven (“Wat is een doolhof?”) en verschillende strategieën, heuristieken en algoritmes om op een plattegrond van een doolhof een pad te vinden van de in- naar de uitgang (zie afbeelding 4.6).

Figuur 4.6: De definitie van een doolhof uit de les doolhoven.

In de optionele uitbreiding van de les wordt er teruggegrepen naar het probleem van de paardenronde (zie4.3). Zoekalgoritmes voor doolhoven kunnen ook daarop worden toegepast.

4.4.2 Standaard leerpad

De les start met een inleiding waarin de probleemstelling wordt uitgelegd (sectie 1 op tabel 4.3). Leerlingen worden aangemoedigd om methodes te bedenken die een pad zullen vinden in allerlei doolhoven. Er is een downloadbaar werkblad5 voorzien waarop ze ideeën kunnen uittesten.

Secties 2 tot en met 6 gaan dieper in op enkele oplossingsmethodes. Daarvoor wordt eerst uitgelegd wat een algoritme is. De les doolhoven is namelijk de eerste waarin dit begrip aan bod komt. Dezelfde sectie bespreekt ook wat een algoritme voor doolhoven is (in dit geval): men wil een pad kunnen vinden van de ingang naar elke andere positie in het doolhof, in eindige tijd.

Daarna volgt een eerste methode om een pad te vinden in een doolhof (sectie 3), genaamd “volg-een-muur”. Volg-een-muur is een zeer gemakkelijke methode maar ze zal niet altijd een pad naar de uitgang vinden. Aan de hand van een aantal voorbeelden zullen de leerlingen ontdekken dat deze methode enkel een pad vindt als alle muren van de doolhof met elkaar in verbinding staan. Er is dus nood aan andere methodes om een pad te vinden.

Die andere methodes kunnen enkel aangebracht worden indien er met een uniforme voorstelling van de doolhoven wordt gewerkt. Daarom gaat sectie 4 dieper in op het concept “grafen”. Er wordt getoond hoe elk doolhof getransformeerd kan worden in een graaf (afbeelding4.7).

In sectie 5 komen daarna twee zoekalgoritmes voor grafen aan bod: “diepte-eerst” en “breedte-eerst”. Beide algoritmes vinden steeds een pad naar de uitgang maar gedragen zich zeer verschillend. Sectie 6 maakt die verschillen duidelijk aan de hand van enkele gerichte vragen.

Sectie 7 en 8 bevatten uitsluitend programmeeropdrachten die de graafvoorstelling, het diepte-eerst algoritme en het breedte-eerst algoritme omsluiten. Die opdrachten zijn opgesplitst in deelopdrachten. Ze gaan dus steeds verder met het resultaat van de vorige opdracht maar zijn zo opgesteld dat het ook mogelijk is om een deelopdracht op zichzelf op te lossen.

Verder is er de standaard vragenlijst over computationeel denken die vervat zit in sectie 9. Vervolgens zijn er nog een aantal uitbreidingen in verband met de aange- leerde zoekalgoritmes. Die algoritmes zijn bijvoorbeeld ook toepasbaar op problemen uit andere lessen, zoals paardenronde & stadsgids. Op het einde van de les is er nog een korte afsluiter.

In deze vorm neemt de les ongeveer twee tot vier lesuren in beslag.

5

4.4. Les 2: doolhoven

DOOLHOVEN Do

e

Denk Reflecteer Illustreer

1 INLEIDING sectie

Uitleg pagina + +

2 ALGORITMEN sectie

Wat is een algoritme? pagina +

Algoritmes voor doolhoven pagina + +

3 VOLG-EEN-MUUR sectie

Opdracht: volg-een-muur pagina + + +

Denk je dat volg-een-muur altijd werkt? keuze + +

Enkelvoudig samenhangende ruimtes pagina +

Andere algoritmes voor doolhoven test + +

4 WAT IS EEN DOOLHOF? sectie

Wat is een doolhof nu precies? pagina + +

Wat is een doolhof nu precies? (2) pagina +

Graafvoorstelling pagina +

5 ZOEKALGORITMES VOOR GRAFEN sectie

Inleiding: zoekalgoritmes voor grafen pagina + +

Het diepte-eerst zoekalgoritme pagina +

Het breedte-eerst zoekalgoritme pagina +

6 ZOEKALGORITMES EVALUEREN sectie

Zoekalgoritmes evalueren test + +

Feedback: zoekalgoritmes evalueren pagina + +

7 PROGRAMMEREN: GRAAFVOORSTELLING sectie

Programmeeropdracht: knopen test + +

Programmeeropdracht: bogen test + +

Programmeeropdracht: graafvoorstelling test + +

8 PROGRAMMEREN: ZOEKALGORITMES sectie

Programmeeropdracht: diepte-eerst test + +

Programmeeropdracht: breedte-eerst test + +

9 COMPUTATIONEEL DENKEN sectie

Elementen computationeel denken feedback +

10 VARIATIES & UITBREIDINGEN sectie

Variaties & uitbreidingen pagina + + +

11 EINDE sectie

Afsluiter pagina +

Tabel 4.3: Het standaard leerpad van de les doolhovenmet de eigenschappen van de verschillende activiteiten en snelkoppelingen naar de verschillende secties.

4.4.3 Elementen computationeel denken

In deze les komen voornamelijk de elementen abstractie, algoritmisch denken en

evaluatie van computationeel denken aan bod. De volledige bespreking van de kern-

elementen van CD in deze les is online terug te vinden6.

Abstractie

Er wordt abstractie gemaakt van de lay-out van de doolhof. De leerlingen proberen uit te zoeken welke gegevens echt noodzakelijk zijn om op een gestructureerde manier de uitgang van de doolhof te vinden. Die elementen kunnen herleid worden tot een graafvoorstelling (afbeelding 4.7).

Algoritmisch denken

Bij het volg-een-muur-principe en de zoekalgoritmes voor grafen is algoritmisch

denken van groot belang. De stappen in de zoekalgoritmes liggen eenduidig vast en

moeten in de juiste volgorde gevolgd worden. De leerlingen leren om een dergelijk stappenplan te interpreteren en te analyseren. Daarnaast is doolhoven de les bij uitstek om grafen te programmeren. Ook diepte-eerst en breedte-eerst zijn vervat in twee programmeeropdrachten. Deze algoritmes vormen een goede basis om zich nadien te verdiepen in andere algoritmes om bomen of grafen te doorzoeken, bijvoor- beeld om het kortste pad te vinden.

Evaluatie

Dit kernelement van CD komt op verschillende plaatsen in de les aan bod. Ten eerste wordt de werking van volg-een-muur geanalyseerd. Die methode vindt enkel oplossing bij enkelvoudig samenhangende ruimtes. Ten tweede worden de zoekalgoritmes diepte- eerst en breedte-eerst onderling met elkaar vergeleken.

6

4.4. Les 2: doolhoven

4.4.4 Ontwerpkeuzes

Programmeeropdrachten

De programmeeropdrachten zijn in deze les verdeeld in twee secties. Zo wordt de graafvoorstelling apart van de zoekalgoritmes behandeld. De leerkracht kan zo ge- makkelijk instellen of hij geen, één of beide secties wil behandelen. Binnen elke sectie zijn de programmeeropdrachten opnieuw opgesplitst in verschillende deeltaken. Zo kan opnieuw gemakkelijk de volgorde worden aangepast en kunnen één of meerdere opdrachten verborgen worden. De opgavebestanden staan telkens bij de opdrachten zodat er ook met een eigen lokale programmeeromgeving gewerkt kan worden.

Volledige uitwerking van de zoekalgoritmes

In deze les wordt van elk zoekalgoritme een volledig stappenplan getoond. Een uitgewerkt voorbeeld geeft alle iteraties van elk algoritme weer, totdat de doelknoop bereikt is. Bij elke iteratie worden ook de stappen uit het stappenplan getoond die van toepassing zijn. Die volledige uitwerking maakt het mogelijk voor leerlingen om de algoritmes zelfstandig te verwerken op hun eigen tempo.

Andere zoekalgoritmes

In doolhoven wordt enkel ingegaan op diepte-eerst en breedte-eerst. Dit zijn twee bekende algoritmes die altijd zullen werken (indien er een pad tussen start- en doelknoop bestaat), maar niet noodzakelijk een optimaal pad vinden. De les geldt dus als een goede introductie rond zoekalgoritmes voor grafen, maar zou nadien kunnen gevolgd worden door een les over andere algoritmes die altijd het kortste pad vinden. Dit werd bewust niet meer geïntegreerd in deze les omdat de les nu al meer dan één lesuur in beslag neemt.

Verwijzing naar paardenronde & stadsgids

In de uitbreidingen & variaties van doolhoven wordt er verwezen naar het probleem vanpaardenronde & stadsgids. Dankzij de graafvoorstelling voor de paardenronde kunnen de zoekalgoritmes (diepte-eerst, breedte-eerst) uitdoolhoven ook toegepast worden op de graaf van die les. Zo wordt meer coherentie gecreëerd tussen de verschillende lessen. De nieuwe toepassing vraagt natuurlijk wel enige aanpassing van het algoritme en de implementatie bij de programmeeropdrachten. De uitbreiding is daarom optioneel. Er werd geen modeloplossing uitgewerkt en er is geen kant-en-klare programmeeropdracht beschikbaar voor deze uitbreiding.