There are also some probabilistic solutions. For an English dictionary, the space of trigraphs is only about 30% populated. So, whenever you see a trigraph that's not in the set of all known English trigraphs, there must be a word break at one of two points in the trigraph. This gives you an entry point for breaking the problem into smaller subproblems. Those can even be run in parallel.
For long texts, this is a huge win.