1. A method of generating an encoder comprising: generating a first directed graph characterizing a constraint set for a constrained system; identifying a scaling factor for an approximate eigenvector for the first directed graph; applying the scaling factor to the approximate eigenvector for the first directed graph to yield a scaled approximate eigenvector; partitioning arcs between each pair of states in the first directed graph; performing a state splitting operation on the first directed graph according to the partitioning of the arcs to yield a second directed graph; and generating the encoder based on the second directed graph.