Algorytm redukcji dla zagadnienia pokrycia zbioru (SC) i zagadnienia podziału zbioru (SPP) Dana macierz A przynależności elementów zbioru M = {1, . . . , m} do rodziny zbiorów P = {P1, . . . , Pn}.
Niech Ri oznacza i-ty wiersz macierzy A (odpowiada elemntowi i zbioru M ).
Niech Cj oznacza j-tą kolumnę macierzy A (odpowiada j-temu podzbiorowi z rodziny P).
Miech M oznacza zbiór niepokrytych wierszy macierzy A (tzn. elementów zbioru M ).
Niech N oznacza zbiór niepokrytych kolumn macierzy A (tzn. zbiorów z rodziny P).
Niech D oznacza zbiór kolumn wybranych do każdego rozwiązania optymalnego. D = ∅.
Po redukcji, kolumny o numerach {1, . . . , n} \ (N ∪ D) można usunąć z zagadnienia.
Reguły (stosujemy w tej kolejności, po wykonaniu reguły 5 wracamy ponownie do 1)
1R) (SC i SPP) Wiersze zerowe. Jeśli Ri jest wierszem zerowym dla pewnego i, to nie istnieje rozwiązanie dopuszczalne.
Uwaga: W przypadku zagadnienia SC reguła 1R stosowana tylko raz na początku, bo jesli nie ma wiersza zerowego to musi istnieć rozwiązanie dopuszczalne.
1C) (SC i SPP) Kolumny zerowe. Usuń wszystkie kolumny zerowe (tzn. jesli Cj = 0, toN = N \ {j}).
2) (SC) Kolumny istotne. Jeśli Ri = et, gdzie et oznacza t-ty wektor jednostkowy, to zbiór Pt nalezy do każdego pokrycia. D = D ∪ {t}, N = N \ {t}. Usuwamy Ri oraz wszystkie wiersze Rl takie, że alt= 1.
M = M \ {i} \ {l : alt= 1, l ∈ M }.
2) (SPP) Kolumny istotne. Wykonujemy 2) (SC) oraz dodatkowo można usunąć każdą kolumnę Ck, która ma jedynkę w usuniętym wierszu Rl (unikamy ponownego pokrycia Rl). N = N \ {k : alk= 1, alt= 1, k ∈ N, l ∈ M }.
3R (SC) Wiersze zdominowane. Jesli Rl Rk, to Rl można usunąć (każda kolumna która pokrywa Rk pokrywa również Rl). M = M \ {l}.
3R (SPP) Wiersze zdominowane. Wykonujemy 3R) (SC) oraz dodatkowo można usunąć każdą ko- lumnę Ch taką, że alh = 1 i akh = 0 (bo nie może należeć do żadnego dopuszczalnego rozwiązania).
N = N \ {h : alh = 1, akh = 0, h ∈ N }.
3C (SC) Kolumny zdominowane. Jeśli Cl ¬ Ck i cl ck, to można usunąć Cl (ponieważ Ck może mniejszym kosztem pokryć wszystkie elementy pokryte przez Cl). N = N \ {l : Ck¬ Ck, cl ck; l, k ∈ N }.
3C (SPP) Kolumny zdominowane. Jeśli Cl = Ck i cl ck, to można usunąć Cl (ponieważ Ck może mniejszym kosztem pokryć te sam elementy, które pokrywa Cl). N = N \ {l : Ck= Ck, cl ck; l, k ∈ N }.
Uwaga: Zasada 3C) (SPP) może być zastosowana tylko raz (na początku).
4) (SC) Kolumny zdominowane - przypadek ogólny. Jeśli istnieje Cl oraz K ⊆ N takie, że l 6∈ K i Cl ¬Pj∈KCj oraz clPj∈Kcj, to usuwamy Cl ( N = N \ l).
4) (SPP) Kolumny zdominowane - przypadek ogólny. Jeśli istnieje Cl oraz K ⊆ N takie, że l 6∈ K i Cl =Pj∈KCj oraz cl Pj∈Kcj, to usuwamy Cl ( N = N \ l).
Uwaga: Stosowanie reguły 4 bardzo pracochłonne (równoważne z innym zadaniem SPP).
5) (SPP) Kolumy niedopuszczalne. Jesli Ct zostaje przydzielone do rozwiązania, to musimy usunąć te kolumny Cj, ktore mają co najmniej jedną jedynkę w tych samych wierszach co usunięta kolumna Ct. Jeśli prowadzi to do wiersza zerowego, to Ct nie może wejść do żadnego rozwiązania dopuszczalnego.
Uwaga: Reguła 5) nie ma odpowiednika dla SC.