As a greedy scheduler manages a computation on processors, each step is classified as complete or incomplete.
In a complete step, at least strands are ready to execute, meaning that all strands
on which they depend have finished execution. A greedy scheduler assigns
any of the ready strands to the processors, completely utilizing all the processor resources.