1. MN: {As}; Macierz Nieodróżnialności, kwadratowa (nietrójkątna) macierz zawierając zbiory atrybutów 2. MN = Stwórz_Macierz_Nieodróżnialności()
3. Used = [] ; zbiór próbek pokrytych przez reguły 4. Rs: {As, Vs, d} ; zbiór reguł
5. Rs = <>; na początku pusty 6. As = atrybuty,
7. Vs = deskryptory dla atrybutów As 8. d = klasy
9. n = liczba atrybutów wejściowych (a1..aX, ale nie d) 10. m = liczba klas
11. M = liczba próbek
12. FOR poziom_regul = 1..n
12.1 KAW = wszystkie kombinacje atrybutów (poziom_regul z n). Na przykład dla (1 z 2) będzie to {{a1},{a2}}; dla (3 z 4) będzie to {{a1,a2,a3},{a1,a2,a4},{a1,a3,a4},{a2,a3,a4}}. Kolejność jest dowolna.
12.2 FOR EACH As_akt z KAW
12.3 Zawiera zbiór aktualnie przetwarzanych atrybutów. na przykład A_akt może mieć zawartość {a1,a3,a4}
12.3.1 FOR EACH s_akt = 1..M
12.3.1.1 IF s_akt występuje w Used THEN
12.3.1.1.1 Nie wykonuj dalej pętlę FOR EACH
12.3.1.2 IF As_akt występują razem w dowolnym wierszu MN[s_akt][1..M] THEN 12.3.1.2.1 Nie wykonuj dalej pętli FOR EACH
12.3.1.3 FOR s_pasujace = 1..M i s_pasujace nie występuje w Used
12.3.1.3.1 IF próbka(s_pasujące) i próbka(s_akt) dla atrybutów As_akt mają takie same wartości i należą do tej samej klasy THEN
12.3.1.3.1.1 Dodaj s_pasujace do Used 12.3.1.4 Rpot : {As, Vs, d} ; nowa reguła
12.3.1.5 Vs_akt = wartości atrybutów As_akt dla próbki s_akt 12.3.1.6 d_akt = klasa dla próbki s_akt
12.3.1.7 Rpot = {As_akt, Vs_akt, d_akt} ; stwórz nową regułę 12.3.1.8 Dodaj Rpot do Rs
12.3.1.9 IF Used zawiera wszystkie próbki (długość Used = M) THEN 12.3.1.9.1 Przerwij cały algorytm dodawania reguł