maze pa explanation
play

Maze PA Explanation Mark Redekopp 2 Maze Solver Consider this - PowerPoint PPT Presentation

1 Maze PA Explanation Mark Redekopp 2 Maze Solver Consider this maze (0,0) (0,1) (0,2) (0,3) . . . . S = Start (1,0) (1,1) (1,2) (1,3) S # F # F = Finish (2,0) (2,1) (2,2) (2,3) . # . # . = Free (3,0)


  1. 1 Maze PA Explanation Mark Redekopp

  2. 2 Maze Solver • Consider this maze (0,0) (0,1) (0,2) (0,3) . . . . – S = Start (1,0) (1,1) (1,2) (1,3) S # F # – F = Finish (2,0) (2,1) (2,2) (2,3) . # . # – . = Free (3,0) (3,1) (3,2) (3,3) . . . # – # = Wall • Find the shortest path

  3. 3 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • To find a (there might be (1,0) (1,1) (1,2) (1,3) S # F # many) shortest path we use a (2,0) (2,1) (2,2) (2,3) . # . # breadth-first search (BFS) (3,0) (3,1) (3,2) (3,3) . . . # • BFS requires we visit all nearer squares before further Queue squares – A simple way to meet this requirement is to make a square "get in line" (i.e. a queue) when we encounter it – We will pull squares from the front to explore and add new squares to the back of the queue

  4. 4 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # Queue 1,0

  5. 5 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while the queue is not empty Queue – Extract the front location, call it "curr" 1,0 Visit each neighbor (N,W,S,E) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 0 0 0 0 • Stop and trace backwards -1,-1 -1,-1 -1,-1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 0 0 0 0 Then add it to the back of the queue • -1,-1 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 0 0 0 0 queue again -1,-1 -1,-1 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  6. 6 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 1,0 the queue is not empty Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 0 0 0 • Stop and trace backwards 1,0 -1,-1 -1,-1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 0 0 0 0 queue again -1,-1 -1,-1 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  7. 7 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 0,0 the queue is not empty Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 0,1 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 1 0 0 • Stop and trace backwards 1,0 0,0 -1,-1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 0 0 0 0 queue again -1,-1 -1,-1 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  8. 8 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 2,0 the queue is not empty Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 0,1 3,0 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 1 0 0 • Stop and trace backwards 1,0 0,0 -1,-1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 1 0 0 0 queue again 2,0 -1,-1 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  9. 9 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 0,1 the queue is not empty Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 0,1 3,0 0,2 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 1 1 0 • Stop and trace backwards 1,0 0,0 0,1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 1 0 0 0 queue again 2,0 -1,-1 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  10. 10 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 3,0 the queue is not empty Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 0,1 3,0 0,2 3,1 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 1 1 0 • Stop and trace backwards 1,0 0,0 0,1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 1 1 0 0 queue again 2,0 3,0 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

  11. 11 Maze Solver (0,0) (0,1) (0,2) (0,3) . . . . Maze array: • We start by putting the (1,0) (1,1) (1,2) (1,3) S # F # starting location into the (2,0) (2,1) (2,2) (2,3) . # . # queue (3,0) (3,1) (3,2) (3,3) . . . # • Then we enter a loop…while curr = 0,2 the queue is not empty Found the Finish at (1,2) Queue – Extract the front location, call it "curr" 1,0 0,0 2,0 0,1 3,0 0,2 3,1 Visit each neighbor (N,W,E,S) one at a – time Visited Predecessor If the neighbor is the finish – (0,0) (0,1) (0,2) (0,3) (0,0) (0,1) (0,2) (0,3) 1 1 1 0 • Stop and trace backwards 1,0 0,0 0,1 -1,-1 Else if the neighbor is a valid location and – (1,0) (1,1) (1,2) (1,3) (1,0) (1,1) (1,2) (1,3) 1 0 0 0 -1,-1 -1,-1 -1,-1 -1,-1 not visited before (2,0) (2,1) (2,2) (2,3) (2,0) (2,1) (2,2) (2,3) 1 0 0 0 Then add it to the back of the queue • 1,0 -1,-1 -1,-1 -1,-1 • Mark it as visited so we don't add it to the (3,0) (3,1) (3,2) (3,3) (3,0) (3,1) (3,2) (3,3) 1 1 0 0 queue again 2,0 3,0 -1,-1 -1,-1 • Record its predecessor (the location [i.e. curr] that found this neighbor

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend