200 likes | 683 Views
Boggle Game: Backtracking Algorithm Implementation. CS 1501. Boggle Game. Read the assignment requirement carefully. http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html. Boggle Game.
E N D
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html • The boggle game is to form as many 3+ letter words as possible from a 2-dimensional board of letters. • We want to form words by starting at any letter and traversing over adjacent cubes vertically, horizontally or diagonally. • Any cube may appear at most once in a word. • Only real words (from dictionary) are valid. • Words must be at least 3 letters long to be valid.
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html • The boggle game is to form as many 3+ letter words as possible from a 2-dimensional board of letters. • We want to form words by starting at any letter and traversing over adjacent cubes vertically, horizontally or diagonally. • Any cube may appear at most once in a word. • Only real words (from dictionary) are valid. • Words must be at least 3 letters long to be valid. F R I E N D
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html • The boggle game is to form as many 3+ letter words as possible from a 2-dimensional board of letters. • We want to form words by starting at any letter and traversing over adjacent cubes vertically, horizontally or diagonally. • Any cube may appear at most once in a word. • Only real words (from dictionary) are valid. • Words must be at least 3 letters long to be valid. R O S T E R
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html • The boggle game is to form as many 3+ letter words as possible from a 2-dimensional board of letters. • We want to form words by starting at any letter and traversing over adjacent cubes vertically, horizontally or diagonally. • Any cube may appear at most once in a word. • Only real words (from dictionary) are valid. • Words must be at least 3 letters long to be valid. E N D F I N E R E A L
Boggle Game • Read the assignment requirement carefully.http://www.cs.pitt.edu/~kirk/cs1501/Ramirez/Summer2009/assigs/boggle/assig1a.html • The boggle game is to form as many 3+ letter words as possible from a 2-dimensional board of letters. • We want to form words by starting at any letter and traversing over adjacent cubes vertically, horizontally or diagonally. • Any cube may appear at most once in a word. • Only real words (from dictionary) are valid. • Words must be at least 3 letters long to be valid. X D E A D X F Y L D E R E
Boggle Game • Wild card * • A * can represent any letter in the alphabet. • Wild card essentially causes more word possibilities in a given board. ……
Requirement • Read board from text file. • Calculate all possible words (of length at least 3). • Allow the user to type words from the keyboard and tell him if each word is “valid” or not. • Show the user all of the words for the board by printing out all of the words in the board word list in alphabetical order.
Board Search • Start from any cube on the board • Track where we are (current position) • Track where we were (history)
Board Search • Start from any cube on the board • Track where we are (current position) • (i, j) • Determine where we can go (next position) • (i-1, j-1) (i-1, j) (i-1, j+1)(i, j-1) curr (i, j+1)(i+1, j-1)(i+1, j)(i+1, j+1) • Track where we were (history) j i
Backtracking Example • Start from any cube on the board • Start from D • At (2, 1) • Next step can be: (1, 0) (1, 1) (1, 2) (2, 0) (2, 2) (3, 0) (3, 1) (3, 2) • Try (1, 0) – DY • Advance to (1, 0) j i
Backtracking Example • Start from any cube on the board • Now at Y (1, 0)-(2,1) • At (1, 0) • Next step can be: (0, 0) (0, 1) (1, 1) (2, 2) (2, 0) • (2, 1) is not allowed! • Try all possible steps and find no valid prefix or words • Backtrack to D (2, 1) j i
Backtracking Example • Start from any cube on the board • Return to D • At (2, 1) • Next step can be: (1, 1) (1, 2) (2, 0) (2, 2) (3, 0) (3, 1) (3, 2) • (1, 0) has failed. • Try (1, 1) – DI • Advance to (1, 1) …. j i
New Step Situations • When we try a new step on the board, the composition with the new letter can have 4 possible situations: • Not a prefix, not a word • Give up, backtrack to the previous step (pruning) • Not a prefix, is a word • Save the word, backtrack to the previous step • Is a prefix, not a word • Explore the next possible step • Is a prefix, is a word • Save the word, explore the next possible step • The function to check a prefix or a word are provided.
Big Picture • Proceed forward to a solution until it becomes apparent that no solution can be achieved along the current path. • At that point UNDO the solution (backtrack) to a point where we can again proceed forward • Some hints: • Use a stack to track the history path. • Push stack: advance step • Pop stack: backtrack • Use a variable for each cube to track what is the next direction to explore. (stack) • Advance step: push the next direction into the stack • Backtrack: pop the next direction out of the stack • Use a boolean table (2d array) to mark the cubes visited. • Advance step: mark new cube • Backtrack: unmark cube