Welcome~~~


Another blog:
http://fun-st.blogspot.com/

It is easier to write an incorrect program than understand a correct one.

Sunday, February 27, 2011

How to find list of possible words from a letter matrix [Boggle Solver] - Stack Overflow

How to find list of possible words from a letter matrix [Boggle Solver] - Stack Overflow


The fastest solution you're going to get will probably involve storing your dictionary in a trie. Then, create a queue of triplets (x, y, s), where each element in the queue corresponds to a prefix s of a word which can be spelled in the grid, ending at location (x, y). Initialize the queue with N x N elements (where N is the size of your grid), one element for each square in the grid. Then, the algorithm proceeds as follows:
While the queue is not empty:   
Dequeue a triple (x, y, s)   
For each square (x', y') with letter c adjacent to (x, y):    
            If s+c is a word, output s+c     
            If s+c is a prefix of a word, insert (x', y', s+c) into the queue 
If you store your dictionary in a trie, testing if s+c is a word or a prefix of a word can be done in constant time (provided you also keep some extra metadata in each queue datum, such as a pointer to the current node in the trie), so the running time of this algorithm is O(number of words that can be spelled).
implementation in Python that I just coded up:

Similar Problem: 
Grid[n][n] contains letters from 'A' to 'Z' randomly. You have to print all possible words from grid.
You are allowed to move Left, Right, Up and Down ( no diagonal move).

No comments:

Post a Comment