403
 правки
Изменения
→Модификация
*<tex>Size</tex> {{---}} целочисленный массив, где <tex>Size[i]</tex> хранит количество состояний из класса <tex>i</tex>, которые содержатся в <tex>Inverse</tex>;
*<tex>Twin</tex> {{---}} массив, хранящий в <tex>Twin[i]</tex> номер нового класса, образовавшегося при разбиении класса <tex>i</tex>. 
Сам же алгоритм обработки <tex>T'</tex> будет выглядеть так:
  <tex>Involved \leftarrow \varnothing</tex>
  '''for''' <tex>q \in C</tex> '''and''' <tex>r \in Inv[q][a]</tex>
    <tex>i = Class[q]</tex>
    '''if''' <tex>Size[i] == 0</tex>
      '''insert''' <tex>i</tex> '''in''' <tex>Involved</tex>
    <tex>Size[i]++</tex>
  '''for''' <tex>q \in C</tex> '''and''' <tex>r \in Inv[q][a]</tex>
    <tex>i = Class[q]</tex>
    '''if''' <tex>Size[i] < Card[i]</tex>
      '''if''' <tex>Twin[i] == 0</tex>
        <tex>Counter++</tex>
        <tex>Twin[i] = Counter</tex>
      '''move''' <tex>r</tex> '''from''' <tex>i</tex> '''to''' <tex>Twin[i]</tex>
  '''for''' <tex> j \in Involved</tex>
    <tex>Size[j] = 0</tex>
    <tex>Twin[j] = 0</tex>
Для быстрой проверки, находится ли пара <tex>(C,a)</tex> в очереди <tex>S</tex>, будем использовать массив <tex>InQueue</tex> размера <tex>|Q| \times |\Sigma|</tex>, где <tex>InQueue[C][a] = true</tex>, если пара <tex>(C,a)</tex> содержится в очереди. 
