Алгоритм поиска произвольного запрета был применён ко всем функциям от 2, 3 и 4 переменных; результаты приведены в табл. 1.
Таблица 1 Количество функций, имеющих запрет
п Кол-во функций с запретом Кол-во функций без запрета
2 10 6
3 226 30
4 64954 582
В табл. 2 приведены данные о среднем времени работы алгоритма поиска произвольного запрета для функций с количеством аргументов больше 5.
Таблица 2 Время работы алгоритма
п Среднее время, с п Среднее время, с
5 0,00019 13 0,128
6 0,0004 14 0,307
7 0,00091 15 0,698
8 0,0021 16 1,548
9 0,0047 17 3,461
10 0,011 18 7,552
11 0,025 19 16,528
12 0,061 20 33,312
21 77,999
В дальнейшем предполагается разработать и реализовать алгоритмы решения задач 1-3 с помощью обхода дерева в ширину и в глубину (поиск с возвратом) и сравнить трудоёмкости этих алгоритмов (по количеству построенных вершин дерева и сложности их обработки).
ЛИТЕРАТУРА
1. Колегов Д. Н. О булевых функциях без запрета // Вестник Томского государственного университета. Приложение. 2005. №14. С. 58-60.
УДК 519.7
ОБ ЭФФЕКТИВНОМ ПРЕДСТАВЛЕНИИ ДИЗЪЮНКТИВНЫХ НОРМАЛЬНЫХ ФОРМ ДИАГРАММАМИ СПЕЦИАЛЬНОГО ВИДА1
А. А. Семенов
Рассматриваются диаграммы нового типа, используемые для представления дизъюнктивных нормальных форм. Показано, что данный класс диаграмм можно применять для компактного представления баз конфликтных дизъюнктов, накапливаемых в процессе нехронологического БРЬЬ-вывода.
Ключевые слова: ДНФ, решающие диаграммы, БВВ, ZDD, дизъюнктивные диаграммы.
хРабота выполнена при поддержке гранта РФФИ №11-07-00377.
Рассматривается произвольная всюду определённая булева функция д : {0,1}п ^ {0,1} и произвольная ДНФ Д(д), представляющая д:
Дд) = К V ... V Кт,
где К2 , ] Е {1,... , п},— конъюнкты над множеством булевых переменных X = {х1, . ..,хп}. Далее ДНФ Д(д) будем рассматривать также как множество конъюнктов 3>(д) = {К1,... , Кт}. Зафиксируем на X порядок т (х1 -< х1 -< ... -< Хп). Каждый конъюнкт К2, ] Е {1,... , т}, рассматривая его как множество литералов, упорядочим относительно т.
Выделим в множестве &(д) подмножество конъюнктов, первый литерал в которых принадлежит множеству ЬХ1 = {х1,Х1}. Обозначим полученное множество конъюнктов через &Х1. Рассмотрим множество &1 = &(д)\&Х1 (полагаем, что оно не пусто). Обозначим через X1 множество булевых переменных, фигурирующих в конъюнктах из &(д)\&Х1. Очевидно, что X1 С X\{х1}. Пусть х^ —первая в смысле порядка т переменная в X1. Выделим в &(д)\&Х1 подмножество конъюнктов, первый литерал в которых принадлежит множеству ЬХ1 = {х^1 ,Х^1}. Обозначим полученное множество конъюнктов через . Рассматриваем множество &2 = & 1\&Х1 . Далее поступаем по аналогии. Процесс продолжается до тех пор, пока для некоторого к ^ 1 не
выполнится &к = 0, &к = &к-1\&Х^ х (считаем, что = &(д), х^0 = х1). В итоге имеем представление &(д) в виде
& (д) = и &Хк, (1)
ке{1,...,*>
{1,... , ^} С {1,... , п}, которому соответствует следующее представление Д(д):
В(д)= V Ох„ , (2)
ке{1,...,*>
где ПХк —ДНФ, составленная из конъюнктов, входящих в &Хк.
Не ограничивая общности, рассмотрим ДХ1. Пусть |х1 , х2,... , х^ } — множество переменных, фигурирующих в ДХ1, х1 = х1. Представим ДХ1 в виде
Дх1 = Х1 ■ Фх1 V ХГ ■ Фх!, (3)
где ФХ1 и Фхт — некоторые ДНФ над множеством переменных |х2, ... , х^}. Представим каждую из этих ДНФ в форме (2), используя порядок т.
Сделаем аналогичные действия для всех остальных 0Хк, входящих в правую часть (2). Продолжим описанный процесс рекурсивно.
Отметим, что каждое &Хк, входящее в (1), можно представить в виде г-арного дерева ТХк, г ^ п— 1. Листья дерева ТХк помечаются либо символом «1», либо символом «?». Корень дерева ТХк помечается Хк. Внутренние вершины каждого пути из корня в лист помечаются переменными из множества X. Для обозначения вершин с приписанными им переменными будем использовать выражения вида 1>(х8). Каждый путь в ТХк из корня в лист, помеченный «1», соответствует конъюнкту из &Хк. Рёбра, выходящие из вершин, могут быть двух типов — пунктирные и сплошные. Если путь, проходящий через вершину ^(х5) из корня ТХк в лист, помеченный «1», определяет конъюнкт, в который х3 входит в виде литерала Х7, то соответствующее ребро из г>(х8) является пунктирным. Если же данный путь определяет конъюнкт, в который х3 входит без
отрицания, то соответствующее ребро является сплошным. Выходная степень каждой вершины (за исключением листьев) не меньше 2, причём из каждой вершины выходят как пунктирные, так и сплошные ребра.
Из (1) и определения Тжк, к е {1,...,£}, следует, что ДНФ Д(д) представима в виде леса, состоящего из £ деревьев. Данный лес называется дизъюнктивным лесом. Пример 1. Построим дизъюнктивный лес по ДНФ
XI ■ Х2 ■ Хз ■ х4 V X ■ х2 ■ Хз ■ Х4 V ХТ ■ х2 ■ х4 V ХТ ■ Х4 V х2 ■ Хз ■ Х4 V Х2 ■ х4 V Хз ■ Х4.
Фиксируем порядок жт -< х2 -< ж3 -< х4. Представление (2) имеет вид
= жт ■ Х2 ■ Хз ■ х4 V жт ■ х2 ■ Хз ■ Х4 V ХТ ■ х2 ■ х4 V XI ■ Х4,
Аи2 = х2 ■ Хз ■ Х4 V Х2 ■ х4,
^жз Хз * Х4.
Представление (3), например, для ДНФ ДЖ1 выглядит следующим образом: хт ■ (х2 ■ Хз ■ Х4 V Х2 ■ Хз ■ х4) V ХТ ■ (х2 ■ х4 V Х4) .
Итогом применения описанной рекурсивной процедуры к рассматриваемой ДНФ является дизъюнктивный лес (рис. 1).
? 1 ? ? ? 1
Рис. 1. Дизъюнктивный лес ДНФ из примера 1
Отметим, что идея представления ДНФ в форме дизъюнктивных лесов близка к идеям использования древовидных структур для представления булевых функций и множеств (соответственно BDD [1] и ZDD [2]). Однако имеются и существенные отличия. Во-первых, число путей в дизъюнктивном лесе заведомо ограничено полиномом от n ■ m. Во-вторых, дизъюнктивный лес нельзя рассматривать как дерево решений (decision tree) булевой функции — пути, ведущие в ?-листья, вообще говоря, не дают наборы значений, на которых функция g принимает значение 0. В следующем частном случае, однако, дизъюнктивный лес совпадает с деревом решений.
Утверждение 1. Пусть D(g) — СДНФ булевой функции g. Тогда дизъюнктивный лес, построенный по D(g) в соответствии с описанными выше правилами,—это бинарное дерево, совпадающее с деревом решений g. В этом случае любой путь из корня в ?-лист определяет множество наборов значений переменных, на которых функция g принимает значение 0.
Используя структуры данных для представления КНФ/ДНФ, описанные в [3], можно показать, что справедлив следующий факт.
x
?
?
? 1 ?
?
11
Теорема 1. Существует алгоритм, который по произвольной ДНФ О($) строит представляющий её дизъюнктивный лес за время 0(|0(д)|), где |О($)| —объём двоичного кода О($).
Пусть О($) —произвольная ДНФ и ^(О(д)) —представляющий её дизъюнктивный лес. Каждую вершину в ^(О(д), за исключением терминальных вершин «1» и «?», можно задать следующим набором координат:
^(х) = (х,^1 ,...,^!г ^...^).
Здесь г\,... , г1к , к ^ п — 1, — вершины, которые являются детьми 'у(х) по пунктирным рёбрам (по аналогии с используемой при описании БВВ терминологией называем эти вершины 1о'№-детьми); г^,... , , к^ ^ п — 1, — вершины, которые являются детьми
вершины г(Х) по сплошным рёбрам (high-дети).
По аналогии с процедурами построения БВВ и ZDD можем определить операции склеивания вершин произвольного дизъюнктивного леса — склеиваются вершины, имеющие одинаковые наборы координат. Подобным же образом определяются операции сокращения. Результатом применения к дизъюнктивному лесу ^(О(д)) склеивания и сокращения является дизъюнктивная диаграмма, обозначаемая через Д(О(д)).
Теорема 2. Существует алгоритм, который строит по произвольной ДНФ представляющую её дизъюнктивную диаграмму за время 0(п ■ |О($)|) .
На рис. 2 приведена дизъюнктивная диаграмма, полученная в результате применения операций склеивания и сокращения к дизъюнктивному лесу рис. 1.
Рис. 2. Дизъюнктивная диаграмма для ДНФ из примера 1
Основное предназначение дизъюнктивных диаграмм — компактное представление конфликтных баз, накапливаемых в процессе нехронологического DPLL-вывода. Напомним, что в соответствии с [4] нехронологический DPLL сохраняет информацию о пройденных участках дерева поиска в виде булевых ограничений, называемых конфликтными дизъюнктами. Если С — исходная КНФ, к которой применяется DPLL, и О — конфликтный дизъюнкт, то С выполнима тогда и только тогда, когда выполнима КНФ С ■ О. Современные БАТ-решатели, использующие нехронологический DPLL, могут накапливать очень большие объёмы конфликтных дизъюнктов. Заполнение конфликтной информацией оперативной памяти негативно сказывается на эффективности вывода. Таким образом, актуальна разработка таких приёмов модификации конфликтных баз, которые позволяют существенно снижать объём оперативной памяти, занимаемой этими базами.
В [5,6] описан гибридный SAT+ROBDD вывод, в котором для представления конфликтных баз используются ROBDD. В работе [6] определён специальный тип вывода, представляющий собой ROBDD-аналог итеративного применения правила Unit Propagation. Основной минус такого подхода — необходимость согласования двух структур данных, ROBDD и КНФ, что неизбежно сказывается на скорости работы программы. При этом несложно показать, что переход от ROBDD, представляющей конфликтную базу, к КНФ в соответствии со стандартными техниками (см., например, [7]) приводит к тому, что на конфликтной части КНФ в общем случае перестаёт работать FDA-процедура (Failure Driven Assertion [4]), которая является одним из базовых элементов во всех современных нехронологических DPLL-решателях.
Покажем, что данную проблему можно эффективно решить, если вместо ROBDD использовать дизъюнктивные диаграммы.
Теорема 3. Пусть C1 — произвольная КНФ над множеством переменных X, D — произвольный дизъюнкт, входящий в C', и Ld = {x^1,... , x”is} —множество литералов данного дизъюнкта. Пусть A(C') —дизъюнктивная диаграмма, представляющая ДНФ C', число вершин в которой есть N. Существует алгоритм, который за время O(N) строит по A (C') КНФ C над множеством переменных Y, X С Y, та-
f ^js_1 1
кую, что подстановка в C произвольного множества литералов вида s x j1,... , x j - У, (ji,... , js-1} С {ii,...,vh даёт вывод по правилу Unit Propagation литерала из Ld \{ j1 ,..,Х-Г}.
Предположим, что C1 — конфликтная база, накопленная нехронологическим DPLL-выводом при решении проблемы выполнимости КНФ C. Пусть D — произвольный конфликтный дизъюнкт. Теорема 3 утверждает наличие эффективного алгоритма, строящего по дизъюнктивной диаграмме A(C') КНФ C, которая может сама по себе использоваться в роли базы конфликтных ограничений. При этом на C работает FDA-процедура, то есть подстановка в C отрицаний произвольных s — 1 литералов дизъюнкта D даёт вывод по правилу Unit Propagation оставшегося литерала из D. Особо отметим, что на практике объём памяти, занимаемый КНФ C, может быть существенно (в некоторых ситуациях в разы) меньше, чем объём, занимаемый C;.
ЛИТЕРАТУРА
1. Bryant R.E. Graph-based algorithms for Boolean function manipulation // IEEE Trans. Comput. 1986. V. 35. No. 8. P. 677-691.
2. Minato S. Zero-suppressed BDDs for set manipulation in combinatorial problems // Proc. DAC-93, June 14-18, 1993, Dallas, Texas. P. 272-277.
3. Dowling W. and Gallier J. Linear-time algorithms for testing the satisfiability of propositional Horn formulae // J. Logic Programming. 1984. V. 1. No. 3. P. 267-284.
4. Marques-Silva J. P. and Sakallah K. A. GRASP: A search algorithm for propositional satisfiability // IEEE Trans. Comput. 1999. V. 48. No. 5. P. 506-521.
5. Игнатьев А. С., Семенов А. А. Алгоритмы работы с ROBDD как с базами булевых ограничений // Прикладная дискретная математика. 2010. №1. С. 86-104.
6. Ignatiev A. and Semenov А. DPLL+ROBDD derivation applied to inversion of some cryptographic functions // LNCS. 2011. V. 6695. P. 76-89.
7. Een N. and Sorensson N. Translating pseudo-Boolean constraints into SAT // J. Satisfiability, Boolean Modeling and Computation. 2006. V. 2. P. 1-25.