Алгоритм
Пусть стек составляют нуль-единичные строки длины n (число каналов сети). Для каждой строки известно упорядоченное по номерам множество M каналов, логическая сумма строк которых в матрице S определила данную строку. Номер k последнего канала в этом множестве известно. Для каждой строки известен последний испытанный нулевой элемент.
- Загружаем очередную i -ю, i = 1, ... ,n-1, строку в стек. Полагаем M ={i}, k = i.
- В строке-вершине стека находим очередной нуль, занимающий позицию j > i. Переходим к выполнению шага 4.
- Если такого нуля нет, или все они испытаны, строку исключаем из стека. Если после этого стек исчерпан, выполняем шаг 1. В противном случае выполняем шаг 2.
- Складываем логически строку из вершины стека со строкой j — формируем новую вершину стека. Номером канала j дополняем множество каналов M, участвующих в формировании новой строки. Полагаем k = j.
- Если в строке-вершине стека все нули соответствуют только всем каналам в M, то M — очередное найденное ПМВНК. Фиксируем это множество. В любом случае исключаем строку-вершину стека из стека. Выполняем шаг 2.