首先作一些准备工作,利用前面介绍的算法,求出"不相容状态对"集合D和"相容状态对"集合C。
  Step1 从D中任选一个"不相容状态对"(sp, sq),作以下操作以便在π中形成2个生长点:
  C1 = { sp }; C2 = { sq };
  π = { C1 , C2 };
  S = S - {sp, sq};
  K = 3;
  Step2 对S中每一状态sj 作以下操作,以便继续在π中形成新的生长点:
  若sj和π中每一相容类Ci (1≤i< k)都不相容,则
  Ck = { sj };
  π = π ∪ Ck ;
  S = S - { sj };
  K = K + 1;
  Step3 若 S = φ; 转Step6
  否则,令T = 0; 并对S中每一状态sj 作以下操作:若sj 和某一相容类Ci 相容,则
    Ci = Ci ∪ { sj };
    S = S - { sj };
    T = 1;
  Step4 若 T = 1, 转Step3
  Step5 若 S ≠ φ , 从S中任选一状态sj ,作以下操作:
    Ck = { sj };
    π = π ∪ Ck ;
    S = S - { sj };
    K = K + 1; 转Step3;
  Step6 算法结束,π即为所求。