iburg, a BURG that generates back ends for the lcc compiler. JBurg's pattern-matching facilities were based on a close reading of this paper.
A Study on Generating an Efficient Bottom-up Tree Rewrite Machine for JBurg
Dr. KyungWoo Kang
Dr. Kang proposes an analytical technique which would allow JBurg to do as much dynamic programming as possible at compiler-compile time.
Further investigation and implementation is scheduled for JBurg 2.0.
A Tutorial on Dynamic Programming
Michael A. Trick
A good introduction to dynamic programming.