Jump to content

Бинарная диаграмма решений

(Перенаправлено из программы ветвления )

В информатике двоичная диаграмма решений ( 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 показан на рисунке справа.

Бинарное дерево решений и таблица истинности для функции , описанный в обозначениях для булевых операторов .
BDD для функции f

Другое обозначение для записи этой булевой функции: .

Дополненные края

[ редактировать ]
Представление бинарной диаграммы решений с использованием дополненных ребер

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 состоит из узлы.

BDD для функции ƒ ( x 1 , ..., x 8 ) = x 1 x 2 + x 3 x 4 + x 5 x 6 + x 7 x 8 с использованием неправильного порядка переменных
Хороший переменный порядок

Крайне важно позаботиться об упорядочении переменных при применении этой структуры данных на практике. Проблема поиска наилучшего порядка переменных является 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 -полной, и самые известные алгоритмы в худшем случае требуют экспоненциального времени.

См. также

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

Дальнейшее чтение

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 42e828977ea17136c0b4e3baf9f063a9__1721136900
URL1:https://arc.ask3.ru/arc/aa/42/a9/42e828977ea17136c0b4e3baf9f063a9.html
Заголовок, (Title) документа по адресу, URL1:
Binary decision diagram - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)