Download de presentatie
De presentatie wordt gedownload. Even geduld aub
1
Oplossen van een doolhof
A.J.F. Kok
2
Oplossingsmethoden Minst-bezochte-vakje algoritme
Rechterhand-aan-de-muur algoritme Kortste-pad algoritme ..
3
Minst-bezochte vakje Vanuit huidige punt Inspecteer alle buren
Ga naar buurpunt dat minst bezocht is Als nieuwe punt = eindpunt oplossing gevonden
4
Minst-bezochte vakje 1 Initialisatie Start vanuit startpunt
Zet voor ieder veld waarde “aantal bezocht” op 0 Voor startpunt zet waarde op 1 1
5
Minst-bezochte vakje Tot eindpunt gevonden Zoek minst bezochte buur Ga naar buur en verhoog waarde “aantal bezocht” Voorkeursrichting in voorbeeld: rechts, onder, links, boven 1 2 2 1 3 1 2 1 1 2 1 1 1 1 2 2 1 2 1 1 1 1 1
6
Minst-bezochte vakje Zeer eenvoudig algoritme
Vindt gegarandeerd een pad Inefficiënt
7
Rechterhand-aan-de-muur
Huid je rechterhand steeds aan de muur Kijk steeds vanuit huidige positie of je rechtsaf kunt Is dat mogelijk ga rechtsaf Is het niet mogelijk ga dan voorwaarts Is dat niet mogelijk ga dan linksaf Is dat niet mogelijk ga dan terug
8
Rechterhand-aan-de-muur
Initialisatie Start vanuit startpositie Zet huidige richting zodanig dat een muur aan rechterhand zit Zet voor ieder veld waarde “bezocht” op 0 Voor startpunt zet waarde op 1 Opmerking: Waarde “bezocht” alleen gebruikt voor tekenen 1
9
Rechterhand-aan-de-muur
Totdat eindpunt gevonden Als naar rechts bewogen kan worden, doe dat Anders draai op huidige positie kwartslag naar links totdat wel naar rechts bewogen kan worden, en ga dan naar rechts 1 1 1 1 1 1 1 1 1 1 1 1 1
10
Rechterhand-aan-de-muur
Implementatie tip Definieer richtingen dx = {0, 1, 0, -1}, dy = {1, 0, -1, 0} Bepaling nieuwe richting (huidige richting + 3) mod 4 Zolang niet vrij tel steeds 1 op bij richting (mod 4) 1 2 3
11
Rechterhand-aan-de-muur
Vrij eenvoudig algoritme Oplossing alleen gegarandeerd als doolhof aan bepaalde voorwaarden voldoet: Begin en eindpunt aan rand van doolhof Inefficiënt
12
Kortste-pad Zoek kortste pad met breadth-first search algoritme
Zolang eindpunt niet gevonden Zoek alle nog niet eerder bezochte buurpunten en stop deze achter in lijst Huidige punt is eerste punt op lijst Als eindpunt is gevonden Reconstrueer kortste pad
13
a-b-e-c-g-h-l-i-n-j-m-k-o-f-p-d-q
Kortste-pad a b c e l g n h j i k f m q d p o a b c d e f g h i j k l m n o p q a-b-e-c-g-h-l-i-n-j-m-k-o-f-p-d-q
14
Kortste-pad 1 Initialisatie
Zet volgnummer (afstand) van alle velden op 0 Zet volgnummer van eerste veld op 1 Zet startpunt in lijst 1
15
Kortste-pad 1a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o 0p 0q 2b 2e
Zolang eindpunt niet gevonden Haal punt van begin lijst Als punt is eindpunt dan stop Anders Bepaal alle nog niet bezochte buren Geef deze buren volgnummer + 1 Stop buren achter in lijst Reconstrueer kortste pad 1a 0b 0c 0d 0e 0f 0g 0h 0i 0j 0k 0l 0m 0n 0o 0p 0q 2b 2e 3c 9d 8f 4l 4h 3g 6j 6m 5i 7k 5n 7o 8p 9q [f,p] [p,d] [m,k] [o,f] [k,o] [h,l] [e,c] [b,e] [a] [c,g] [g] [i,n] [j,m] [l,i] [n,j,m]
16
Kortste-pad 1 2 3 9 8 4 5 6 7 Reconstructie Markeer kortste pad
Start bij eindpunt en zoek pad waarbij volgnummer steeds 1 afneemt 1 2 3 9 8 4 5 6 7
17
Kortste pad Lastigste om te implementeren
Vindt gegarandeerd oplossing via kortste pad
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.