I am studying a problem which reduces to the cryptanalysis of a lengthy monoalphabetic substitution ciphertext written in a known language. This problem is easy enough to be solved by hand using frequency analysis and word patterns, as described in Sinkov's Elementary Cryptanalysis. I'm having trouble finding a theoretically validated algorithm for it: Joux's Algorithmic Cryptanalysis doesn't even cover such rudimentary substitution, and I got nothing out of Gaines's Cryptanalysis: A Study of Ciphers and Their Solution (what other resources should I see?).
Some approaches are pretty obvious. Deciding on each substitution in sequence, then leveraging what is already known, works only if no mistake is made along the way. Employing metaheuristic optimization -- for example, reassign letters until the number of valid words found is maximized -- makes it hard to tell when the search is over. Perhaps a dynamic programming approach to testing the variations would be best. Or, the answers to this question contain other possibly naïve methods.
What are the preferred algorithms for solving this kind of problem?