Параллельное программирование

Алгоритм


Пусть стек составляют нуль-единичные строки длины n (число каналов сети). Для каждой строки известно упорядоченное по номерам множество M каналов, логическая сумма строк которых в матрице S определила данную строку. Номер k последнего канала в этом множестве известно. Для каждой строки известен последний испытанный нулевой элемент.

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



Содержание раздела