I want to use a railroad diagram to show the sequence of steps an algorithm takes:
I want to say we start with "SCC scheduling". It then repeatedly calls "chunk scheduling". Then "chunk scheduling" repeatedly calls "group scheduling". When "group scheduling" finishes we go back up to "chunk scheduling". And then we back up one more step to "SCC scheduling" and repeat and if there is no more SCC then we go end state.
Algorithm:
foreach SCC
run SCC scheduling
SCC scheduling:
foreach chunk inside SCC
run chunk scheduling
Group scheduling:
foreach Group inside chunk
run group scheduling
I have been thinking about this for a long time and I am struggling.