A weight pushing algorithm for large vocabulary speech recognition
Introduction to Algorithms