1 / 17

Oplossen van een doolhof

Oplossen van een doolhof. A.J.F. Kok. Oplossingsmethoden. Minst-bezochte-vakje algoritme Rechterhand-aan-de-muur algoritme Kortste-pad algoritme. Minst-bezochte vakje. Vanuit huidige punt Inspecteer alle buren Ga naar buurpunt dat minst bezocht is Als nieuwe punt = eindpunt

wendi
Download Presentation

Oplossen van een doolhof

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Minst-bezochte vakje • Initialisatie • Start vanuit startpunt • Zet voor ieder veld waarde “aantal bezocht” op 0 • Voor startpunt zet waarde op 1

  5. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 2 1 3 2 2 1 1 1 1 2 2 1 1 1 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. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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

  9. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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

  10. 2 3 1 0 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)

  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 a b c d h l e f i n g h i j k j m l m n o p q k o f p d q Kortste-pad a-b-e-c-g-h-l-i-n-j-m-k-o-f-p-d-q

  14. 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Kortste-pad • Initialisatie • Zet volgnummer (afstand) van alle velden op 0 • Zet volgnummer van eerste veld op 1 • Zet startpunt in lijst

  15. 1a 0b 0c 0d 2b 0e 0f 2e 6j 4h 0g 0h 0i 0j 0k 4l 0l 6m 0m 0n 0o 0p 0q Kortste-pad • 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 3c 9d 8f 3g 5i 7k 5n 7o 8p 9q [f,p] [p,d] [h,l] [a] [o,f] [b,e] [k,o] [l,i] [m,k] [g] [j,m] [i,n] [e,c] [c,g] [n,j,m]

  16. 1 2 3 9 2 8 3 4 5 6 7 4 6 5 7 8 9 Kortste-pad • Reconstructie • Markeer kortste pad • Start bij eindpunt en zoek pad waarbij volgnummer steeds 1 afneemt

  17. Kortste pad • Lastigste om te implementeren • Vindt gegarandeerd oplossing via kortste pad

More Related