Бинарная диаграмма решений
В информатике двоичная диаграмма решений ( BDD ) или ветвящаяся программа — это структура данных , которая используется для представления булевой функции . На более абстрактном уровне BDD можно рассматривать как сжатое представление наборов или отношений . В отличие от других сжатых представлений, операции выполняются непосредственно над сжатым представлением, т. е. без распаковки.
Подобные структуры данных включают нормальную форму отрицания (NNF), полиномы Жегалкина и пропозиционально ориентированные ациклические графы (PDAG).
Определение
[ редактировать ]Булеву функцию можно представить как корневой направленный ациклический граф , который состоит из нескольких узлов (решений) и двух терминальных узлов. Два терминальных узла помечены 0 (ЛОЖЬ) и 1 (ИСТИНА). Каждый узел (решения) помечен логической переменной и имеет два дочерних узла, называемых младшим дочерним и старшим дочерним элементом. Край от узла младшему (или высокому) дочернему элементу представляет собой присвоение значения FALSE (или TRUE, соответственно) переменной . Такой BDD называется упорядоченным, если разные переменные появляются в одном и том же порядке на всех путях от корня. BDD называется «редуцированным», если к его графу применены следующие два правила:
- Объедините любые изоморфные подграфы.
- Устраните любой узел, два дочерних узла которого изоморфны.
В популярном использовании термин BDD почти всегда относится к сокращенной упорядоченной двоичной диаграмме решений ( ROBDD в литературе используется, когда необходимо подчеркнуть аспекты упорядочения и сокращения). Преимущество ROBDD в том, что он каноничен (уникален) для конкретной функции и порядка переменных. [1] Это свойство делает его полезным при проверке функциональной эквивалентности и других операциях, таких как отображение функциональных технологий.
Путь от корневого узла до 1-терминала представляет собой (возможно, частичное) присвоение переменной, для которого представленная булева функция истинна. Когда путь спускается к младшему (или старшему) дочернему элементу узла, переменной этого узла присваивается значение 0 (соответственно 1).
Пример
[ редактировать ]На левом рисунке ниже показано двоичное решений дерево (правила редукции не применяются) и таблица истинности , каждая из которых представляет функцию . В дереве слева значение функции можно определить для данного назначения переменной, следуя по пути вниз по графику к терминалу. На рисунках ниже пунктирные линии обозначают края младшего дочернего элемента, а сплошные линии представляют края старшего дочернего элемента. Следовательно, чтобы найти , начните с x 1 , пройдите вниз по пунктирной линии до x 2 (поскольку x 1 присвоено значение 0), затем вниз по двум сплошным линиям (поскольку x 2 и x 3 имеют присвоение единице). Это ведет к клемме 1, которая является значением .
Бинарное дерево решений на левом рисунке можно преобразовать в бинарную диаграмму решений , максимально сократив его в соответствии с двумя правилами редукции. Полученный BDD показан на рисунке справа.
Другое обозначение для записи этой булевой функции: .
Дополненные края
[ редактировать ]ROBDD можно представить еще более компактно, используя дополненные ребра. [2] [3] Дополненные ребра формируются путем аннотирования нижних ребер как дополненных или нет. Если ребро дополняется, то это относится к отрицанию логической функции, соответствующей узлу, на который указывает ребро (логическая функция, представленная BDD с корнем этого узла). Высокие ребра не дополняются, чтобы гарантировать, что результирующее BDD-представление имеет каноническую форму. В этом представлении BDD имеют один листовой узел по причинам, объясненным ниже.
Два преимущества использования дополненных ребер при представлении BDD:
- вычисление отрицания BDD занимает постоянное время
- использование пространства (т. е. требуемая память) уменьшается
Ссылка на BDD в этом представлении представляет собой (возможно, дополненное) «ребро», указывающее на корень BDD. Это контрастирует со ссылкой на BDD в представлении без использования дополненных ребер, которое является корневым узлом BDD. Причина, по которой ссылка в этом представлении должна быть ребром, заключается в том, что для каждой булевой функции функция и ее отрицание представлены ребром до корня BDD и дополненным ребром до корня того же BDD. Вот почему отрицание занимает постоянное время. Это также объясняет, почему достаточно одного листового узла: FALSE представлено дополненным ребром, указывающим на листовой узел, а TRUE представлено обычным ребром (т. е. не дополненным), указывающим на листовой узел.
Например, предположим, что булева функция представлена в виде BDD, представленного с использованием дополненных ребер. Чтобы найти значение логической функции для заданного присвоения (логических) значений переменным, мы начинаем с опорного края, который указывает на корень BDD, и следуем по пути, который определяется заданными значениями переменных (после нижний край, если переменная, обозначающая узел, равна FALSE, и следующий за высоким краем, если переменная, обозначающая узел, равна TRUE), пока мы не достигнем листового узла. Следуя по этому пути, мы подсчитываем, сколько дополненных ребер мы прошли. Если при достижении листового узла мы пересекли нечетное количество дополняемых ребер, то значение булевой функции для данного назначения переменной будет ЛОЖЬ, в противном случае (если мы пересекли четное количество дополняемых ребер), то значение булева функция для данного присвоения переменной имеет значение TRUE.
Пример диаграммы BDD в этом представлении показан справа и представляет то же логическое выражение, что и на диаграммах выше, т.е. . Нижние ребра обозначены пунктиром, высокие — сплошными, а дополненные ребра обозначены кружком в начале. Узел с символом @ представляет ссылку на BDD, т. е. опорное ребро — это ребро, которое начинается с этого узла.
История
[ редактировать ]Основная идея, на основе которой была создана структура данных, — это расширение Шеннона . Функция переключения разбивается на две подфункции (кофакторы) путем присвоения одной переменной (см. нормальную форму if-then-else ). Если такую подфункцию рассматривать как поддерево, ее можно представить в виде двоичного дерева решений . Бинарные диаграммы решений (BDD) были представлены Сай Ли, [4] и далее изучен и известен Шелдоном Б. Акерсом. [5] и Раймонд Т. Бут. [6] Независимо от этих авторов была реализована БДД под названием «каноническая скобочная форма» Ю. В. Мамруков в САПР для анализа скоростно-независимых цепей. [7] Полный потенциал эффективных алгоритмов, основанных на структуре данных, был исследован Рэндалом Брайантом из Университета Карнеги-Меллон : его ключевыми расширениями было использование фиксированного порядка переменных (для канонического представления) и общих подграфов (для сжатия). Применение этих двух концепций приводит к созданию эффективной структуры данных и алгоритмов представления множеств и отношений. [8] [9] Путем распространения совместного использования на несколько BDD, т.е. один подграф используется несколькими BDD, структура данных Общая сокращенная упорядоченная двоичная диаграмма решения . определяется [2] Понятие BDD теперь обычно используется для обозначения этой конкретной структуры данных.
В своей видеолекции « Развлечение с бинарными диаграммами решений» (BDD ) [10] Дональд Кнут называет BDD «одной из немногих действительно фундаментальных структур данных, появившихся за последние двадцать пять лет» и упоминает, что статья Брайанта 1986 года какое-то время была одной из наиболее цитируемых статей в области информатики.
Аднан Дарвич и его коллеги показали, что BDD — это одна из нескольких нормальных форм булевых функций, каждая из которых вызвана различной комбинацией требований. Другая важная нормальная форма, выявленная Дарвичем, — это нормальная форма разложимого отрицания или DNNF.
Приложения
[ редактировать ]BDD широко используются в программном обеспечении САПР для синтеза схем ( логический синтез ) и формальной верификации . Существует несколько менее известных приложений BDD, включая дерева отказов анализ , байесовские рассуждения, настройку продукта и поиск конфиденциальной информации . [11] [12] [ нужна ссылка ]
Каждый произвольный BDD (даже если он не редуцирован и не упорядочен) может быть напрямую реализован аппаратно путем замены каждого узла мультиплексором 2 к 1 ; каждый мультиплексор может быть напрямую реализован с помощью 4-LUT в FPGA . Не так-то просто преобразовать произвольную сеть логических элементов в BDD. [ нужна ссылка ] (в отличие от и-инверторного графа ).
BDD применяются в эффективных интерпретаторах Datalog . [13]
Переменный порядок
[ редактировать ]Размер BDD определяется как представляемой функцией, так и выбранным порядком переменных. Существуют булевы функции для которого в зависимости от порядка переменных мы в конечном итоге получим граф, число узлов которого будет в лучшем случае линейным (по n ), а в худшем — экспоненциальным (например, сумматор с пульсирующим переносом ). Рассмотрим булеву функцию Использование порядка переменных , БДД нужен узлы для представления функции. Использование порядка , BDD состоит из узлы.
Крайне важно позаботиться об упорядочении переменных при применении этой структуры данных на практике. Проблема поиска наилучшего порядка переменных является NP-сложной . [14] Для любой константы c > 1 даже NP-трудно вычислить порядок переменных, в результате чего OBDD имеет размер, который не более чем в c раз превышает оптимальный. [15] Однако существуют эффективные эвристики для решения этой проблемы. [16]
Существуют функции, для которых размер графика всегда экспоненциальный, независимо от порядка переменных. Это справедливо, например, для функции умножения. [1] Фактически, функция, вычисляющая средний бит произведения двух -битные числа не имеют OBDD меньше, чем вершины. [17] (Если бы функция умножения имела OBDD полиномиального размера, это показало бы, что факторизация целых чисел находится в P/poly , что, как известно, не соответствует действительности. [18] )
Исследователи предложили усовершенствования структуры данных BDD, уступив место ряду связанных графов, таких как BMD ( диаграммы бинарных моментов ), ZDD ( диаграммы решений с нулевым подавлением ), FBDD ( диаграммы свободных бинарных решений ), FDD ( диаграммы функциональных решений ). , PDD ( диаграммы принятия решения о четности ) и MTBDD (многотерминальные BDD).
Логические операции над BDD
[ редактировать ]Многие логические операции над BDD могут быть реализованы с помощью с полиномиальным временем : алгоритмов манипулирования графами [19] : 20
Однако повторение этих операций несколько раз, например, формирование соединения или дизъюнкции набора BDD, может в худшем случае привести к экспоненциально большому BDD. Это связано с тем, что любая из предыдущих операций для двух BDD может привести к созданию BDD с размером, пропорциональным произведению размеров BDD, и, следовательно, для нескольких BDD размер может быть экспоненциальным по количеству операций. Порядок переменных необходимо рассмотреть заново; то, что может быть хорошим упорядочением для (некоторых) набора BDD, может не быть хорошим упорядочением для результата операции. Кроме того, поскольку построение BDD булевой функции решает NP-полную проблему булевой выполнимости и ко-NP-полную проблему тавтологии , построение BDD может занять экспоненциальное время в зависимости от размера булевой формулы, даже если результирующий BDD мал.
Вычисление экзистенциальной абстракции над несколькими переменными сокращенных BDD является NP-полным. [20]
Подсчет моделей, то есть подсчет количества удовлетворяющих присвоений булевой формулы, может выполняться за полиномиальное время для BDD. Для общих пропозициональных формул проблема является ♯P -полной, и самые известные алгоритмы в худшем случае требуют экспоненциального времени.
См. также
[ редактировать ]- Булева проблема выполнимости , каноническая NP-полная вычислительная задача
- L/poly — класс сложности , который строго содержит набор задач с BDD полиномиального размера. [ нужна ссылка ]
- Проверка модели
- Радикс-дерево
- Теорема Баррингтона
- Аппаратное ускорение
- Карта Карно , метод упрощения выражений булевой алгебры
- Диаграмма принятия решений с подавлением нуля
- Алгебраическая диаграмма решений , обобщение BDD от двухэлементных до произвольных конечных множеств.
- Сентенциальная диаграмма принятия решений , обобщение OBDD
- Диаграмма влияния
Ссылки
[ редактировать ]- ^ Jump up to: а б Брайант, Рэндал Э. (август 1986 г.). «Алгоритмы на основе графов для манипулирования булевыми функциями» (PDF) . Транзакции IEEE на компьютерах . С-35 (8): 677–691. CiteSeerX 10.1.1.476.2952 . дои : 10.1109/TC.1986.1676819 . S2CID 10385726 .
- ^ Jump up to: а б Брейс, Карл С.; Руделл, Ричард Л.; Брайант, Рэндал Э. (1990). «Эффективная реализация пакета BDD». Материалы 27-й конференции по автоматизации проектирования ACM/IEEE (DAC 1990) . Издательство Компьютерного общества IEEE. стр. 40–45. дои : 10.1145/123186.123222 . ISBN 978-0-89791-363-8 .
- ^ Соменци, Фабио (1999). «Бинарные диаграммы решений» (PDF) . Проектирование вычислительной системы . Серия F науки НАТО: Компьютерные и системные науки. Том. 173. ИОС Пресс. стр. 303–366. ISBN 978-90-5199-459-9 .
- ^ Ли, Калифорния (1959). «Представление коммутационных схем с помощью программ двоичного решения». Технический журнал Bell System . 38 (4): 985–999. дои : 10.1002/j.1538-7305.1959.tb01585.x .
- ^ Акерс-младший, Шелдон Б. (июнь 1978 г.). «Двоичные диаграммы решений». Транзакции IEEE на компьютерах . С-27 (6): 509–516. дои : 10.1109/TC.1978.1675141 . S2CID 21028055 .
- ^ Бут, Раймонд Т. (январь 1976 г.). «Машина двоичных решений как программируемый контроллер». Информационный бюллетень ЕВРОМИКРО . 1 (2): 16–22. дои : 10.1016/0303-1268(76)90033-X .
- ^ Мамруков, Ю. В. (1984). Анализ апериодических цепей и асинхронных процессов (доктор философии). Ленинградский электротехнический институт.
- ^ Брайант, Рэндал Э. (1986). «Алгоритмы на основе графов для манипулирования булевыми функциями» (PDF) . Транзакции IEEE на компьютерах . С-35 (8): 677–691. дои : 10.1109/TC.1986.1676819 . S2CID 10385726 .
- ^ Брайант, Рэндал Э. (сентябрь 1992 г.). «Символические логические манипуляции с упорядоченными двоичными диаграммами решений» . Обзоры вычислительной техники ACM . 24 (3): 293–318. дои : 10.1145/136035.136043 . S2CID 1933530 .
- ^ «Стэнфордский центр профессионального развития» . scpd.stanford.edu . Архивировано из оригинала 4 июня 2014 г. Проверено 23 апреля 2018 г.
- ^ Дженсен, РМ (2004). «CLab: библиотека C++ для быстрой интерактивной настройки продукта без возврата» . Материалы Десятой Международной конференции по принципам и практике программирования с ограничениями . Конспекты лекций по информатике. Том. 3258. Спрингер. п. 816. дои : 10.1007/978-3-540-30201-8_94 . ISBN 978-3-540-30201-8 .
- ^ Липмаа, Х.Л. (2009). «Первый протокол CPIR с вычислениями, зависящими от данных» (PDF) . Международная конференция по информационной безопасности и криптологии . Конспекты лекций по информатике. Том. 5984. Спрингер. стр. 193–210. дои : 10.1007/978-3-642-14423-3_14 . ISBN 978-3-642-14423-3 .
- ^ Уэйли, Джон; Авотс, Дзинтарс; Карбин, Майкл; Лам, Моника С. (2005). «Использование журнала данных с двоичными диаграммами решений для анализа программ» . Ин Йи, Квангын (ред.). Языки и системы программирования . Конспекты лекций по информатике. Том. 3780. Берлин, Гейдельберг: Springer. стр. 97–118. дои : 10.1007/11575467_8 . ISBN 978-3-540-32247-4 . S2CID 5223577 .
- ^ Боллиг, Беате; Вегенер, Инго (сентябрь 1996 г.). «Улучшение порядка переменных в OBDD является NP-полным». Транзакции IEEE на компьютерах . 45 (9): 993–1002. дои : 10.1109/12.537122 .
- ^ Зилинг, Детлеф (2002). «Неаппроксимируемость OBDD-минимизации» . Информация и вычисления . 172 (2): 103–138. дои : 10.1006/inco.2001.3076 .
- ^ Райс, Майкл. «Обзор эвристики упорядочения статических переменных для эффективного построения BDD/MDD» (PDF) .
- ^ Вельфель, Филипп (2005). «Ограничения на OBDD-размер умножения целых чисел посредством универсального хеширования» . Журнал компьютерных и системных наук . 71 (4): 520–534. CiteSeerX 10.1.1.138.6771 . дои : 10.1016/j.jcss.2005.05.004 .
- ^ Ричард Дж. Липтон . «БДД и факторинг» . Потерянное письмо Гёделя и P=NP , 2009.
- ^ Андерсен, HR (1999). «Введение в бинарные диаграммы решений» (PDF) . Конспекты лекций . ИТ-университет Копенгагена.
- ^ Хут, Майкл; Райан, Марк (2004). Логика в информатике: моделирование и рассуждения о системах (2-е изд.). Издательство Кембриджского университета. стр. 380–. ISBN 978-0-52154310-1 . OCLC 54960031 .
Дальнейшее чтение
[ редактировать ]- Убар, Р. (1976). «Генерация тестов для цифровых схем с использованием альтернативных графов». Учеб. Таллиннский технический университет (на русском языке) (409). Таллинн, Эстония: 75–81.
- Кнут, DE (2009). Глава 1: Побитовые трюки и методы; Бинарные диаграммы решений . Искусство компьютерного программирования . Том. 4. Аддисон–Уэсли. ISBN 978-0-321-58050-4 . Черновик главы 1b, заархивированный 12 марта 2016 г. на Wayback Machine, доступен для скачивания.
- Мейнель, К.; Теобальд, Т. (2012) [1998]. Алгоритмы и структуры данных в проектировании СБИС: OBDD – Основы и приложения (PDF) . Спрингер. ISBN 978-3-642-58940-9 . Полный учебник доступен для скачивания.
- Эбендт, Рюдигер; Фей, Гёршвин; Дрекслер, Рольф (2005). Расширенная оптимизация BDD . Спрингер. ISBN 978-0-387-25453-1 .
- Беккер, Бернд; Дрекслер, Рольф (1998). Бинарные диаграммы решений: теория и реализация . Спрингер. ISBN 978-1-4419-5047-5 .
Внешние ссылки
[ редактировать ]- Забавы с двоичными диаграммами решений (BDD) , лекция Дональда Кнута
- Список программных библиотек BDD для нескольких языков программирования.