The alignment could be stored in the dfa vertex structure, but then dynamic structure size would be needed. This could be implemented converting the stack of vertices into a char* and computing the memory offset of each vertex depending on the pattern length and the size of the compressed alignment (that is: vertex_t is ceil(pattern length/5.0) bytes bigger than sizeof(vertex_t)).
The alignment could be stored in the dfa vertex structure, but then dynamic structure size would be needed. This could be implemented converting the stack of vertices into a char* and computing the memory offset of each vertex depending on the pattern length and the size of the compressed alignment (that is: vertex_t is ceil(pattern length/5.0) bytes bigger than sizeof(vertex_t)).