It is a generalization of the ASAP since it produces same results in the absence of resource constraints.

It uses a priority list of ready nodes (ready node: node that has its predecessors scheduled – the priority list is sorted with respect to a priority function)

We have priority list for each operation type

During each iteration, the operations in the beginning of the ready list are scheduled till all the resources get used in that state and the remaining operations are deferred to the next or later control steps.

Scheduling an operation may make other non ready operations ready so they are inserted into the list according to the priority function

Priority function determines the quality of the results

Mobility range: the less, the higher the priority

Length of the longest path from the operation node to a node with no immediate successor : the longer the path, the higher the priority

Node with more immediate successors have highest priority since they result in more ready operations

Keep on repeating this algorithm until all priority lists are empty