Algorithm |
Input: a binary matrix with and . |
Output: |
(1) If is a singleton then |
(2) return ; |
(3) If then |
(4) return ; |
(5) If such that () = then |
(6) return ; |
(7) If there exists a singleton () = for some then |
(8) let () |
(9) return PA(); // singleton removal |
(10) If () = and then |
(11) return PA() PA() PA(); // partitioning |
(12) Let row be the row with the most 1s in ; |
(13) Let M[; ] and M[; ()]; |
(14) Let PA and PA ; |
(15) Let ; |
(16) Let ; |
(17) Return ; // forced binding |