Научная статья на тему 'Об асимптотически оптимальном перечислении неприводимых покрытий булевой матрицы'

Об асимптотически оптимальном перечислении неприводимых покрытий булевой матрицы Текст научной статьи по специальности «Математика»

CC BY
232
38
i Надоели баннеры? Вы всегда можете отключить рекламу.
Область наук
Ключевые слова
БУЛЕВА МАТРИЦА / ПЕРЕЧИСЛЕНИЕ НЕПРИВОДИМЫХ ПОКРЫТИЙ / АСИМПТОТИЧЕСКИ ОПТИМАЛЬНЫЙ АЛГОРИТМ ДУАЛИЗАЦИИ / НОРМАЛЬНАЯ ФОРМА МОНОТОННОЙ БУЛЕВОЙ ФУНКЦИИ / МИНИМАЛЬНОЕ ВЕРШИННОЕ ПОКРЫТИЕ ГИПЕРГРАФА / BOOLEAN MATRIX / ENUMERATION OF IRREDUCIBLE COVERINGS / ASYMPTOTICALLY OPTIMAL ALGORITHM FOR THE DUALIZATION / CNF AND DNF OF MONOTONIC BOOLEAN FUNCTION / MINIMAL TRANSVERSAL OF HYPERGRAPH

Аннотация научной статьи по математике, автор научной работы — Дюкова Елена Всеволодовна, Прокофьев Петр Александрович

Рассматривается задача перечисления неприводимых покрытий булевой матрицы, известная как задача дуализации. Эффективность алгоритма дуализации принято оценивать сложностью шага алгоритма (построения очередного неприводимого покрытия). Рассматривается подход к построению алгоритма дуализации, эффективного в «типичном случае». Подход основан на понятии асимптотически оптимального алгоритма с полиномиальной задержкой. Строятся две модификации предложенного ранее алгоритма АО2, позволяющие существенно сократить временные затраты в экспериментах со случайными булевыми матрицами.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

On asymptotically optimal enumeration for irreducible coverings of Boolean matrix

Enumeration problem for irreducible coverings of Boolean matrix is considered. This problem is known as the problem of dualization. Efficiency of dualization algorithm is usually appreciated with the complexity of a step (creating a next irreducible covering). The algorithms being effective in typical case (for almost all matrices of fixed size) are built by using an approach based on the concept of an asymptotically optimal algorithm with a polynomial delay. Two faster modifications of the asymptotically optimal algorithm AO2 are built. Algorithms have been tested on random Boolean matrices.

Текст научной работы на тему «Об асимптотически оптимальном перечислении неприводимых покрытий булевой матрицы»

2014 Вычислительные методы в дискретной математике №1(23)

ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ДИСКРЕТНОЙ МАТЕМАТИКЕ

УДК 519.1, 519.8

ОБ АСИМПТОТИЧЕСКИ ОПТИМАЛЬНОМ ПЕРЕЧИСЛЕНИИ НЕПРИВОДИМЫХ ПОКРЫТИЙ БУЛЕВОЙ МАТРИЦЫ1

Е. В. Дюкова*’**, П. А. Прокофьев*

* Вычислительный центр им. А. А. Дородницына, г. Москва, Россия **Московский государственный университет им. М. В. Ломоносова, г. Москва, Россия

E-mail: [email protected], [email protected]

Рассматривается задача перечисления неприводимых покрытий булевой матрицы, известная как задача дуализации. Эффективность алгоритма дуализации принято оценивать сложностью шага алгоритма (построения очередного неприводимого покрытия). Рассматривается подход к построению алгоритма дуализации, эффективного в «типичном случае». Подход основан на понятии асимптотически оптимального алгоритма с полиномиальной задержкой. Строятся две модификации предложенного ранее алгоритма АО2, позволяющие существенно сократить временные затраты в экспериментах со случайными булевыми матрицами.

Ключевые слова: булева матрица, перечисление неприводимых покрытий, асимптотически оптимальный алгоритм дуализации, нормальная форма монотонной булевой функции, минимальное вершинное покрытие гиперграфа.

Введение

Пусть L = \\dij\\mxn — булева матрица и H — набор столбцов матрицы L. Набор H называется покрытием матрицы L, если каждая строка матрицы L в пересечении хотя бы с одним столбцом из H даёт 1. Покрытие H называется неприводимым, если любое собственное подмножество H не является покрытием L.

Через P(L) обозначается множество всех неприводимых покрытий матрицы L. Рассматривается задача перечисления элементов множества P(L), называемая дуализа-цией.

Задача дуализации может быть также переформулирована с использованием понятий теории булевых функций и теории графов и гиперграфов. Приведём эти формулировки:

1) Дана конъюнктивная нормальная форма из m элементарных дизъюнкций, реализующая монотонную булеву функцию F от n переменных. Требуется построить (перечислить) все максимальные конъюнкции функции F.

2) Дан гиперграф G с n вершинами и m ребрами. Требуется найти все минимальные вершинные покрытия гиперграфа G.

Двойственной к 2 является задача поиска максимальных независимых подмножеств вершин гиперграфа G.

хРабота частично поддержана грантом РФФИ № 13-01-00787-a и грантом президента РФ НШ-4652.2012.1.

В большинстве случаев мощность множества P (L) экспоненциально растёт с ростом размера матрицы L. Эффективность алгоритмов перечисления неприводимых покрытий принято оценивать сложностью получения очередного решения (сложностью шага алгоритма) [1]. Различают алгоритмы, эффективные в «худшем случае», и алгоритмы, эффективные в «типичном случае». К алгоритмам, эффективным в худшем случае, относят, в частности, алгоритмы с (квази)полиномиальными задержками [1, 2] и инкрементальные (квази)полиномиальные алгоритмы [3-6].

Говорят, что алгоритм работает с (квази)полиномиальной задержкой, если каждый его шаг (построение очередного неприводимого покрытия) осуществляется за (ква-зи)полиномиальное время от размера задачи. В общем случае алгоритм, находящий на каждом шаге неприводимое покрытие за (квази)полиномиальное время, до сих пор не построен, и неизвестно, существует ли он. Для некоторых частных случаев построены алгоритмы с (квази)полиномиальной задержкой. Например, в [1] с полиномиальной задержкой перечисляются максимальные независимые наборы вершин графа, что соответствует случаю, когда матрица L в каждой строке имеет не более двух единичных элементов.

Для построения алгоритмов, эффективных в типичном случае, используется подход, основанный на понятии асимптотически оптимального алгоритма с полиномиальной задержкой, который впервые предложен в [7] и развит в последующих работах [8-10]. В отличие от «точного» алгоритма с полиномиальной задержкой, асимптотически оптимальному алгоритму разрешено делать «лишние» полиномиальные шаги, но число таких шагов для почти всех матриц размера mxn должно иметь более низкий порядок роста, чем число всех шагов алгоритма, с ростом m и n.

К настоящему моменту для случая, когда log m ^ (1 — е) log n, при 0 < е < 1, построен ряд асимптотически оптимальных алгоритмов дуализации [7-9]. В этих алгоритмах встречаются лишние шаги двух типов: 1) построение набора столбцов, не являющегося покрытием, и 2) нахождение неприводимого покрытия, которое было построено на предыдущих шагах. Среди построенных алгоритмов есть такие, в которых присутствуют лишние шаги обоих типов, например алгоритм АО1 [7], и есть алгоритмы с лишними шагами только одного вида, например алгоритм АО2 [8]. Обзор в области синтеза асимптотически оптимальных алгоритмов перечисления неприводимых покрытий можно найти в [9].

В настоящей работе получены следующие результаты. Описана схема построения алгоритма типа АО2. Приведено описание алгоритма АО2 в рамках предложенной схемы. Показано, что для ответа на вопрос, является ли очередной шаг алгоритма типа АО2 лишним, необходимо решить NP-полную задачу. Предложены две модификации алгоритма АО2, названные АО2К и АО2М. Проведено тестирование алгоритмов АО2, АО2К и АО2М на случайных булевых матрицах.

1. Основные понятия и обозначения

Введём обозначение E(L) = {(i, j) : aj = 1,i E {1,... , m} , j E {1,... , n}}.

Два элемента (i, j) и (t, /) из E(L) называются совместимыми, если an = 0, atj = 0. Набор Q С E(L) называется совместимым, если любые два различных элемента (i, j) и (t, /) из Q совместимы. Пусть B С E(L). Через H(B) обозначается множество столбцов с номерами из множества {j : 3i ((i, j) E B)}.

Строка c номером i матрицы L называется покрытой совместимым набором Q, если эта строка в пересечении с хотя бы одним столбцом из H(Q) даёт 1. Совместимый

набор Q называется покрывающим, если все строки Ь покрыты ф. Очевидно следующее утверждение.

Утверждение 1. Набор столбцов Н является неприводимым покрытием тогда и только тогда, когда найдётся покрывающий набор ф, для которого Н(ф) = Н.

Следовательно, перечисляя все покрывающие наборы, можно построить множество Р (Ь).

Покрывающий набор ф = {(^1,^1),... , (гг, >)} называется верхним, если для любого покрывающего набора ф' = |(^1,^\),... , (£г,^'г)} верны неравенства ^ ги, и е {1,... , г}. Очевидно следующее утверждение.

Утверждение 2. Для любого неприводимого покрытия Н существует единственный верхний набор ф, такой, что Н(ф) = Н.

Таким образом, задача перечисления неприводимых покрытий матрицы Ь может быть сведена к перечислению верхних наборов для матрицы Ь.

Алгоритм АО2 на каждом шаге строит очередной покрывающий набор ф. В случае, когда ф является верхним, происходит пополнение множества найденных неприводимых покрытий матрицы Ь набором столбцов Н(ф). В противном случае шаг считается лишним. Будем говорить, что алгоритм А имеет тип АО2, если А для поиска неприводимых покрытий перечисляет покрывающие наборы и выбирает среди них верхние наборы.

2. Общая схема построения алгоритмов типа АО2

Совместимый набор ф называется правильным относительно В С Е(Ь), если существует покрывающий набор ф' 1Э ф, такой, что ф' \ ф С В.

Элемент (г,]) е В называется запрещённым для ф относительно В, если набор ф' = ф и {(г,_?')} либо не является совместимым, либо не является правильным относительно В. Обозначим через Д(В, ф) множество запрещённых для ф относительно В элементов.

Конечная последовательность пар а = {(В1, ф1),..., (Вг, фг)} называется траекторией, если:

1) набор ф*, 1 ^ ^ /, является правильным относительно В* С Е(Ь);

2.1) либо В*, 1 < £ ^ /, получается удалением одного или нескольких элементов

из В*_1, а ф*-1 не меняется, то есть (В*,ф*) = (В4-1 \ А*,ф4-1) для некоторого

А* = 0 А* С В*-1;

2.2) либо ф*, 1 < £ ^ /, получается добавлением к ф*-1 некоторого незапрещённого

для ф*-1 относительно В4-1 элемента (г*,^*), а набор В* получается удалением из В*-1 элемента (г*, .?*), то есть (В*,ф*) = (В*— \ {(г*,^)},ф*-1 и {(г*,^)}), где элемент (г*, ,?*) е В*-1 \ Д(В*-1,ф*-1).

Траектория а = {(В1, ф1),..., (Вг, )} называется законченной, если Вг = 0. При

этом набор фг является покрывающим и называется результатом законченной траектории а.

Ясно, что для любого покрывающего набора ф можно построить хотя бы одну законченную траекторию, результат которой равен ф. То есть, перечисляя всевозможные законченные траектории, можно найти все покрывающие наборы. Однако число траекторий, как правило, значительно больше числа покрывающих наборов. Поэтому желательно исключить перечисление траекторий, приводящих к одним и тем же покрывающим наборам, но при этом не пропустить ни одного покрывающего набора.

Пусть последовательность а = {(Bi, Qi),... , (Bi,Qi)} является траекторией. Последовательность а* = {(B1, Q1),..., (Bt-1, Qt-1), (Bt, Qt-1)}, t E {2,..., I — 1}, являющаяся траекторией, но не совпадающая с началом а, называется альтернативной траекторией для а. Последовательность а* альтернативна для а в том и только в том случае, когда набор Qt-1 является правильным относительно Bt, и Qt-1 = Qt.

Для а может не существовать ни одной альтернативной траектории. В случае, когда есть хотя бы одна альтернативная траектория для а, самая длинная из них называется соседней траекторией для а. Легко доказывается следующее полезное свойство соседних траекторий.

Утверждение 3. Пусть а1,... , аг —упорядоченное семейство законченных траекторий, такое, что началом траектории аи, u E {2,... , r}, является соседняя траектория для аи-1. Тогда результаты всех траекторий семейства различны.

Законченная траектория а = {(B1, Q1),..., (B^, Q^)} называется реализацией, если для всех t E {2,... , 1} либо Qt-1 = Qt, либо (Bt-1 \ Bt) С A(Bt_b Qt-1).

Алгоритм типа АО2 (общая схема)

Вход: L — булева матрица.

Н а шаге 1 проверить, является ли набор 0 правильным относительно E(L). Если не является, то закончить работу и вернуть результат P(L) = 0. В противном случае построить реализацию а1, начинающуюся с (E(L), 0). В случае, когда результат реализации а1 —набор Q(1) —является верхним, пополнить множество решений неприводимым покрытием H(Q(1)). В противном случае множество решений не пополняется. Перейти к шагу 2.

Пусть на шаге t построена траектория а^

Н а шаге t +1, t ^ 1, проверить, существует ли соседняя траектория для а^ Если не существует, то закончить работу алгоритма. В противном случае взять соседнюю для аt траекторию а*. Построить реализацию а;, первый элемент которой совпадает с последним элементом а*. Удалить из а* последний элемент и добавить к ней элементы реализации а;. Полученная траектория а^ является законченной. В случае, когда результат реализации а^ —набор Q(t+1) —является верхним, пополнить множество решений неприводимым покрытием H(Q(t+1)). В противном случае множество решений не пополняется. Перейти к шагу t + 2.

Для обоснования корректности алгоритма, построенного по описанной схеме, достаточно показать, что каждый покрывающий набор строится на каком-либо шаге алгоритма и при этом один и тот же набор не строится на разных шагах.

Заметим, что реализация отличается от законченной траектории тем, что если при переходе от (Bt-1,Qt-1) к (Bt,Qt) набор Qt-1 не пополняется, то из Bt-1 удаляются только запрещённые для Qt-1 относительно Bt-1 элементы. Это свойство позволяет гарантировать, что ни один покрывающий набор не будет пропущен алгоритмом. Отсутствие повторов следует из утверждения 3.

Число шагов алгоритма равно числу покрывающих наборов матрицы L. Сложность шага складывается из сложности поиска соседней траектории и сложности построения реализации с заданным началом. Согласно [8], алгоритм, решающий указанные подзадачи на каждом шаге за полиномиальное время, является асимптотически оптимальным с полиномиальной задержкой для случая, когда размер входа удовлетворяет ограничению log m ^ (1 — е) log n, 0 < е < 1.

Приведём описание асимптотически оптимального алгоритма АО2 в рамках предложенной схемы.

3. Алгоритм АО2

Пусть В С Е(Ь) и (і,і) Є Е(Ь). Обозначим через Ду(В) набор элементов из В, не совместимых с (і,і). Очевидно, если (і,і) Є ф, то Ду(В) С Д(В,ф).

Пусть Н — набор столбцов матрицы Ь. Строка с номером і называется охватывающей для строки с номером і относительно Н, если для любого столбца из Н с номером і выполняется неравенство ау ^ ау.

Пусть В С Е(Ь) и пусть не покрытая совместимым набором ф строка с номером і охватывает не покрытую ф строку с номером і относительно Н(В). Элемент (і,і) Є В, для которого ау = 0, является запрещённым для ф относительно В. Обозначим множество таких элементов через Д*(В,ф).

Процедура построения реализации в алгоритме АО2

Вход: (Ві,фі) —начало траектории.

Выполнить в цикле следующие шаги.

Шаг 1. Пусть построена траектория длины і ^ 1. Если В* = 0, то закончить цикл.

Шаг 2. Если Д*(В*,ф*) = 0, то построить (Вт,фт) = (В* \ Д*(В*, ф*), ф*) и продолжить цикл.

Ш а г 3. Взять элемент (і,і) из В* с наименьшим порядковым номером т(і — 1) + і. Построить пару (Вт,фт) = (В* \ {(і,і)},ф* и {(і,і)}).

Шаг 4. Если Ду (В*+і) = 0, то построить пару (В*+2,ф*+2) = (В*+і \ Ду (В*+і), ф*+і). Продолжить цикл.

Процедура поиска соседней траектории в алгоритме АО2

Вход: а = {(Ві, фі),..., (Вг, фг)} — траектория.

Выполнить в цикле следующие шаги.

Ш аг 1. Пусть текущая длина а равна і. Если і ^ 1, то вернуть ответ, что соседней траектории не существует.

Шаг 2. Если і > 1 и = ф*-і, то удалить из а последний элемент и продолжить цикл.

Ш а г 3. Проверить, что для любой не покрытой ф*-і строки с номером і есть хотя бы один элемент (і,і) Є В*. Если условие выполняется, то заменить в а последний элемент на пару (Ві,фі-і) и вернуть а. В противном случае удалить из а последний элемент и продолжить цикл.

Проведём анализ временной сложности шага алгоритма АО2. При поиске элементов множества Ду (В) максимальное число просматриваемых элементов матрицы не превосходит тп. При поиске элементов множества Д*(В, ф) максимальное число просматриваемых элементов матрицы не превосходит т2п (поиск охватывающих строк). Длина любой траектории не превосходит 3д, где д = шіп{т, п}. Поэтому время работы процедуры построения реализации равно 0(дт2п). Время работы процедуры поиска соседней траектории равно 0(дтп). Проверка того, что покрывающий набор ф является верхним, осуществляется за 0(тп). Итак, временная сложность шага алгоритма АО2 составляет 0(дт2п).

Проведём анализ затрат памяти алгоритма АО2. Прежде всего отметим, что алгоритм АО2 так же, как любой алгоритм, построенный по описанной выше схеме, относится к типу «построил и забыл». Это означает, что для работы алгоритма нет необходимости хранить все найденные ранее покрывающие наборы или неприводимые покрытия. Каждая траектория а = {(Ві,фі),..., (Вг, фг)} обладает свойством

Bl D ... D Bi и Ql С ... С Qi. Поэтому а может быть закодирована в одной целочисленной матрице = Wdij||mxn, элементы которой определяются следующим образом: dj = О, (i, j) Є E(L); dj = О, (i, j) Є Bi; dj = -t, (i, j) Є Qt+l \ Qt; dj = t, (i, j) Є Bt\Bt+l. При таком представлении затраты памяти составляют O(mn log q) бит.

4. О перечислении верхних наборов

Строка матрицы L с номером t называется конкурентной для совместимого набора Q, если существует совместимый набор Q', такой, что H(Q) = H(Q'), и для (t, j) Є Q' и (i, j) Є Q выполняется неравенство i > t. Ясно, что верхний набор Q не может иметь конкурентных строк.

Правильный относительно B набор Q называется верным относительно B, если существует верхний набор Q' З Q, такой, что Q' \ Q С B.

Привлекательной является идея строить при поиске покрывающего набора такую траекторию a = {(B1,Q1),... , (Bi,Qi)}, что набор Qt, t Є {1,... ,І}, является верным относительно Bt. Тогда при Bi = 0 набор Qi является верхним. Алгоритм, строящий такую траекторию за полиномиальное время от m и n, возвращал бы на каждом шаге очередное неприводимое покрытие с полиномиальной задержкой. Это эквивалентно тому, что исходя из траектории, построенной на текущем шаге, можно за полиномиальное время определить, является ли очередной шаг алгоритма лишним. Однако справедлива следующая теорема.

Теорема 1. Задача проверки того, является ли набор Q = 0 верным относительно E(L), NP-полна.

Доказательство. Пусть булева функция f (xl,... , xn) задана конъюнктивной нормальной формой (КНФ) C1 Л... Л См, где C1,... , См — элементарные дизъюнкции от переменных х1,... , xn.

Построим граф G = (V, E), где множество V состоит из вершин 1, 0, С1,..., См, Xl,... , Xn, Xi, ... , Xn, и множество E состоит из рёбер четырёх типов:

1) рёбра для конъюнкций {1, С1},... , {1, См};

2) вспомогательное ребро {І, 0};

3) рёбра для переменных {xl, X1},... , {xn, XN};

4) рёбра для вхождений переменных в конъюнкции: {Сі,х-}, если х- входит в Сі, и {Сі,Х-}, если Xj входит в Сі.

Пусть L — матрица инцидентности графа G и столбцы с номерами 1,... , M + 2 соответствуют вершинам 1, 0, С1,... , См, а строки с номерами 1,... , M, M +1 —рёбрам

{і,Сі},..., {1,См }, {1,0}.

Набор Q = {(M + І, І)} является правильным относительно E(L). Требуется определить, является ли Q верным относительно E(L).

Набор Q покрывает строки с номерами І, . . . , M, M + І, при этом строки с номерами І, . . . , M являются конкурентными. Поэтому если верхний набор Q' содержит Q, то в H(Q') должны входить столбцы с номерами З, . . . , 2 + M, чтобы строки с номерами 1,... , M не были конкурентными для Q'. Из этого следует, что Q' D {(il, 3),... , (Ім, 2 + M)}, где для любого І Є {1,... , M} строка с номером і соответствует либо ребру {C,Xs;} , либо ребру {C,Xs;}.

При этом Q' покрывает соответствующие рёбрам {x!,X!}, ... , {xn,Xn} строки тогда и только тогда, когда среди номеров строк il,... , ім нет двух таких iu, iv, что строка с номером iu соответствует ребру {Си, xSu }, а строка с номером iv —ребру {С^, XSv}, и Su = Sv.

Таким образом, существование верхнего набора ф1 3 ф равносильно существованию набора значений переменных хі,... , , для которого истинны все элементарные

дизъюнкции Сі,... , См, а следовательно, выполнима функция f (жі,..., ).

В результате задача проверки выполнимости функции, заданной КНФ, полиномиально сведена к задаче проверки верности правильного набора ф относительно Е(Ь). Как известно, задача проверки выполнимости КНФ КР-полна. ■

Обозначим Е*(Ь), і Є {1,... , т}, множество элементов {(і,і) Є Е(Ь) : ау = ау = 1}.

Повысить эффективность алгоритма АО2 позволяет осуществление при построении реализации проверки выполнения следующего необходимого условия верности набора.

Утверждение 4. Пусть ф — верный относительно В С Е(Ь) набор. Тогда для каждой не покрытой ф или конкурентной для ф строки с номером і выполняется

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Е*(Ь) П В = 0.

Теперь, если в процедуре построения реализации в алгоритме АО2 всякий раз останавливаться, как только в траекторию была добавлена пара (В*,ф*), не удовлетворяющая необходимому условию утверждения 4, то, во-первых, часть траекторий будет короче, а во-вторых, число шагов алгоритма будет меньше. Эксперименты показали, что, как правило, снижение числа шагов, а следовательно, и времени выполнения алгоритма довольно существенно.

5. Модификации алгоритма А02

Опишем две модификации алгоритма АО2, названные А02К и А02М. Алгоритмы А02К и А02М полностью вписываются в общую схему построения алгоритма типа АО2. Отличия от АО2 появляются только в процедуре построения реализации.

Процедура построения реализации в алгоритме АО2К

Вход: (Ві,фі) — начало траектории.

Выполнить в цикле следующие шаги.

Шаг 1. Пусть построена траектория длины і ^ 1. Если В* = 0, то закончить цикл.

Ш а г 2. Если пара (В*,ф*) не удовлетворяет необходимому условию утверждения 4, то закончить цикл.

Шаг 3. Если Д*(В*,ф*) = 0, то построить (Вт,ф*+і) = (В* \ Д*(В*, ф*), ф*) и продолжить цикл.

Ш а г 4. Если у набора ф* есть хотя бы одна конкурентная строка, то найти конкурентную строку с наименьшим номером г и взять элемент (і, і) из Ег(Ь) П В* с наименьшим порядковым номером т(і — 1) + і. В противном случае взять элемент (і,і) из В* с наименьшим порядковым номером т(і — 1) + і. Построить пару

(В*+і,фі+і) = (В* \ {(і,і')},ф* и {(і,і')}).

Шаг 5. Если Ду (В*+і) = 0, то построить (В*+2,ф*+2) = (В*+і \ Ду (В*+і), ф*+і). Продолжить цикл.

Предположим, что на вход процедуре построения реализации в алгоритме АО2К поступает набор фі, не являющийся верным относительно Ві. Чем раньше при построении реализации предпринимаются попытки покрыть конкурентные строки, тем быстрее обнаруживается, что набор фі не является верным относительно Ві. Стратегия алгоритма АО2К характеризуется как «борьба с конкурентными строками».

Процедура построения реализации в алгоритме АО2М

Вход: (B1 ,Q1) — начало траектории.

Выполнить в цикле следующие шаги.

Ш аги І-З и 5 не отличаются от соответствующих шагов процедуры построения реализации в алгоритме АО2К.

Ш а г 4. Найти номер r не покрытой Qt или конкурентной для Qt строки с наименьшим числом элементов в пересечении Er(L) П Bt. Взять элемент (i, j) из Er (L) П Bt с наименьшим порядковым номером m(j — 1) + і. Построить (Bt+l, Qt+l) = = (Bt \{(i,j)},Qt U{(i,j)}).

Набор Qt+1 = Qt U {(i, j)} покрывает строку с номером r, только если (i, j) Є Є Er(L) П Bt. На качественном уровне понятно, что чем меньше множество Er(L) П Bt, тем «сложнее» строка с номером r для покрытия наборами строящейся реализации. Стратегия алгоритма АО2М характеризуется как «от сложного к простому». Оправдана эта стратегия тем, что результат реализации должен покрывать все, в том числе и «сложные» строки, а покрыть «простые» строки, вероятнее всего, получится и позднее, даже тогда, когда в множестве Bt будет меньше элементов.

В количественном отношении выигрыш алгоритма АО2М по сравнению с алгоритмами АО2 и АО2К проявляется следующим образом. Представим естественным образом каждую траекторию в виде простой цепи. Объединим все простые цепи траекторий, построенных алгоритмом, в один граф. Полученный граф, очевидно, является деревом и далее называется деревом решений алгоритма. Эксперименты показали, что число вершин и рёбер дерева решений, строящегося алгоритмом АО2М при дуализа-ции матрицы L, как правило, меньше, чем соответственно число вершин и рёбер дерева решений, строящегося алгоритмом АО2 или АО2К при дуализации той же матрицы L.

б. Результаты экспериментов

Проведено тестирование алгоритмов АО2, АО2К и АО2М на случайных матрицах, для которых выполняется 5О ^ mn ^ 5ОО. Для каждой матрицы и каждого алгоритма измерялись:

1) T — время перечисления всех неприводимых покрытий;

2) $max — максимальное время получения очередного неприводимого покрытия;

3) N — число узлов дерева решений;

4) No — число лишних шагов алгоритма.

Результаты счёта приведены на рис. І-6.

На рис. І видно, что алгоритм АО2М работает быстрее алгоритмов АО2 и АО2К. В среднем скорость АО2М в 4 раза больше скорости АО2. По показателю £max алгоритм АО2М также лидирует (рис. З и 4). Скорость работы АО2К сравнима со скоростью АО2.

Анализ числа лишних шагов показывает, что алгоритмы АО2К и АО2М почти всегда делают меньше лишних шагов, чем алгоритм АО2 (рис. 2). Однако наименьшее значение этого показателя у модификации АО2К.

Заметим, что зависимости полного времени дуализации от числа узлов дерева решений у алгоритмов АО, АО2К и АО2М имеют довольно схожий характер (рис. 6). Число узлов дерева решений при росте числа неприводимых покрытий медленней всего увеличивается у алгоритма АО2М (рис. 5). По-видимому, число узлов дерева решений в большей степени влияет на время работы алгоритма, нежели число лишних шагов алгоритма.

Полученные выводы разнятся с первоначальными представлениями о факторах, влияющих на производительность алгоритма АО2. Предполагалось, что построенные модификации позволят снизить временные затраты на дуализацию за счёт уменьшения числа лишних шагов алгоритма. Однако оказалось, что значительное увеличение скорости дуализации достигается именно за счёт сокращения числа узлов дерева решений.

Рис. 1. Зависимость T от |P(L)| Рис. 2. Зависимость N0 от |P(L)|

P(L)

Рис. 3. Зависимость 5max от mn Рис. 4. Зависимость 5max от |P(L)I

Рис. Б. Зависимость N от |P(L)|

Рис. б. Зависимость T от N

Заключение

В работе используется подход к построению алгоритмов дуализации, эффективных в «типичном случае», в основе которого лежит понятие асимптотически оптимального алгоритма с полиномиальной задержкой.

В качестве отправной точки рассматривается асимптотически оптимальный алгоритм АО2, который на каждом шаге за полиномиальное время строит неприводимое покрытие, но построенное покрытие может совпадать с найденными на предыдущих шагах. Фактически, в алгоритме АО2 перечисление неприводимых покрытий сводится к перечислению покрывающих наборов единичных элементов матрицы. Каждому неприводимому покрытию соответствует единственный верхний покрывающий набор. Шаг, результат которого не является верхним набором, считается лишним.

Покрывающий набор строится последовательным добавлением единичных элементов матрицы. Алгоритм АО2 добавляет элементы в порядке возрастания их порядковых номеров. Предложены две модификации данного алгоритма, основное отличие которых от АО2 в стратегии выбора очередного добавляемого единичного элемента. Тестирование алгоритмов AO2, АО2К и АО2М показало, что внесённые в первоначальный алгоритм изменения позволяют снизить временные затраты дуализации за счёт уменьшения числа узлов дерева решений.

ЛИТЕРАТУРА

1. Johnson D., Yannakakis M., and Papadimitriou C. On generating all maximal independent sets // Inform. Process. Lett. 1988. V. 27. No.3. P. 119-123. URL: http://www. sciencedirect.com/science/article/pii/0020019088900658.

2. Eiter T., Gottlob G., and Makino K. New results on monotone dualization and generating hypergraph transversals // SIAM J. Comput. 2003. V. 32. No. 2. P. 514-537.

3. Boros E. and Elbassioni K. Generating maximal independent sets for hypergraphs

with bounded edge-intersections // LATIN 2004: Theoretical Informatics. Berlin;

Heidelberg: Springer, 2004. P. 488-498. URL: http://www.springerlink.com/index/ b9t9wx6ue9t 9hvw3.pdf.

4. Boros E., Gurvich V., Elbassioni K., and Khachiyan L. An efficient incremental algorithm for generating all maximal independent sets in hypergraphs of bounded dimension // Parallel Process. Lett. 2000. V. 10. No. 4. P. 253-266. URL: http://www.worldscientific.com/doi/ abs/10.1142/S0129626400000251.

5. Fredman M. L. and Khachiyan L. On the complexity of dualization of monotone disjunctive normal forms // J. Algorithms. 1996. V. 21. P. 618-628.

6. Khachiyan L., Boros E., Elbassioni K., and Gurvich V. An efficient implementation of a quasi-polynomial algorithm for generating hypergraph transversals and its application in joint generation // Discr. Appl. Math. 2006. V. 154. No. 16. P. 2350-2372. URL: http: //linkinghub.elsevier.com/retrieve/pii/S0166218X06001910.

7. Дюкова Е. В. Об асимптотически оптимальном алгоритме построения тупиковых тестов // ДАН СССР. 1977. Т. 233. №4. С. 527-530.

8. Дюкова Е. В. О сложности реализации дискретных (логических) процедур распознавания // Журн. вычисл. матем. и матем. физики. 2004. Т. 44. №3. С. 562-572.

9. Дюкова Е. В., Инякин А. С. Асимптотически оптимальное построение тупиковых покрытий целочисленной матрицы // Математические вопросы кибернетики. 2008. Т. 17. С. 235-246.

10. Дюкова Е. В., Сотнезов Р. М. О сложности задачи дуализации // Журн. вычисл. матем. и матем. физ. 2012. Т. 52. №10. С. 1926-1935.

i Надоели баннеры? Вы всегда можете отключить рекламу.