Диаграмма двоичного решения - Binary decision diagram - Wikipedia

В Информатика, а диаграмма двоичных решений (BDD) или же программа ветвления это структура данных который используется для представления Логическая функция. На более абстрактном уровне BDD можно рассматривать как сжатый представление наборы или же связи. В отличие от других сжатых представлений, операции выполняются непосредственно над сжатым представлением, то есть без декомпрессии. Другой структуры данных используется для представления Логические функции включают нормальная форма отрицания (NNF), Полиномы Жегалкина, и пропозиционально ориентированные ациклические графы (PDAG).

Определение

Логическая функция может быть представлена ​​как укорененный, направленный, ациклический график, который состоит из нескольких узлов принятия решений и конечных узлов. Есть два типа терминальных узлов, называемых 0-терминальными и 1-терминальными. Каждый узел решения помечен логической переменной и имеет два дочерние узлы называется низким ребенком и высоким ребенком. Край от узла младшему (или высокому) ребенку представляет собой задание до 0 (соответственно 1). BDD называется «упорядоченным», если разные переменные появляются в одном порядке на всех путях от корня. BDD называется сокращенным, если к его графу были применены следующие два правила:

  • Объединить любые изоморфный подграфы.
  • Удалите все узлы, два дочерних которых изоморфны.

В популярном использовании термин BDD почти всегда относится к Уменьшенная упорядоченная двоичная диаграмма решений (ROBDD в литературе используется, когда необходимо подчеркнуть аспекты упорядочения и сокращения). Преимущество ROBDD в том, что он каноничен (уникален) для конкретной функции и порядка переменных.[1] Это свойство делает его полезным при проверке функциональной эквивалентности и других операциях, таких как отображение функциональных технологий.

Путь от корневого узла к 1-терминалу представляет собой (возможно, частичное) присвоение переменной, для которой представленная логическая функция истинна. Когда путь спускается к младшему (или высокому) дочернему элементу от узла, переменной этого узла присваивается значение 0 (соответственно 1).

Пример

На левом рисунке ниже показан двоичный решение дерево (правила редукции не применяются), а таблица истинности, каждая из которых представляет функцию f (x1, x2, x3). В дереве слева значение функции можно определить для заданного присвоения переменной, пройдя путь вниз по графику к терминалу. На рисунках ниже пунктирные линии представляют края младшего дочернего элемента, а сплошные линии - края высокого дочернего элемента. Следовательно, чтобы найти (x1 = 0, x2 = 1, x3 = 1), начните с x1, проведите вниз по пунктирной линии до x2 (так как x1 имеет присвоение 0), затем вниз по двум сплошным линиям (поскольку x2 и x3 каждая есть задание к одному). Это приводит к выводу 1, который является значением f (x1 = 0, x2 = 1, x3 = 1).

Бинарное решение дерево левого рисунка можно преобразовать в двоичное решение диаграмма максимально уменьшив его по двум правилам редукции. Результирующий BDD показан на правом рисунке.

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

История

Основная идея, на основе которой была создана структура данных, - это Расширение Шеннона. А функция переключения делится на две подфункции (кофакторы) путем присвоения одной переменной (см. if-then-else нормальная форма). Если такая подфункция рассматривается как поддерево, она может быть представлена двоичное дерево решений. Диаграммы двоичных решений (BDD) были представлены Ли,[2] и далее изученный и известный Акерсом[3] и Буте.[4]

Полный потенциал эффективных алгоритмов, основанных на структуре данных, был исследован Рэндал Брайант в Университет Карнеги Меллон: его ключевые расширения заключались в использовании фиксированного порядка переменных (для канонического представления) и общих подграфов (для сжатия). Применение этих двух концепций приводит к эффективной структуре данных и алгоритмам для представления множеств и отношений.[5][6] Расширяя совместное использование на несколько BDD, то есть один подграф используется несколькими BDD, структура данных Общая сокращенная упорядоченная двоичная диаграмма решений определено.[7] Понятие BDD теперь обычно используется для обозначения этой конкретной структуры данных.

В своей видеолекции Развлечение с двоичными диаграммами решений (BDD),[8] Дональд Кнут называет BDD «одной из немногих действительно фундаментальных структур данных, появившихся за последние двадцать пять лет» и упоминает, что статья Брайанта 1986 года в течение некоторого времени была одной из самых цитируемых статей в области компьютерных наук.

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

Приложения

BDD широко используются в CAD программное обеспечение для синтеза схем (логический синтез ) И в формальная проверка. Есть несколько менее известных приложений BDD, в том числе дерево отказов анализ, Байесовский аргументация, конфигурация продукта и поиск частной информации.[9][10][нужна цитата ]

Каждый произвольный BDD (даже если он не сокращен или не упорядочен) может быть напрямую реализован на аппаратном уровне путем замены каждого узла на 2 к 1. мультиплексор; каждый мультиплексор может быть напрямую реализован с помощью 4-LUT в FPGA. Не так просто преобразовать произвольную сеть логических вентилей в BDD.[нужна цитата ] (в отличие от и-инверторный график ).

Переменный порядок

Размер BDD определяется как представляемой функцией, так и выбранным порядком переменных. Существуют булевы функции для которого, в зависимости от порядка переменных, мы получим граф, количество узлов которого будет линейным (вп) в лучшем случае и экспоненциально в худшем случае (например, гадюка ). Рассмотрим булеву функцию Использование порядка переменных , BDD требуется 2п+1 узлы для представления функции. Использование заказа , BDD состоит из 2п + 2 узла.

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

При применении этой структуры данных на практике крайне важно позаботиться об упорядочивании переменных. NP-жесткий.[11] Для любой постоянной c > 1 даже NP-сложно вычислить упорядочение переменных, приводящее к OBDD с размером, который не более чем в c раз больше оптимального.[12] Однако существуют эффективные эвристики для решения этой проблемы.[13]

Есть функции, для которых размер графика всегда экспоненциальный - независимо от порядка переменных. Это имеет место, например, для функции умножения.[1] Фактически, функция, вычисляющая средний бит произведения двух -битовые номера не имеют OBDD меньше, чем вершины.[14] (Если бы функция умножения имела OBDD полиномиального размера, она показала бы, что целочисленная факторизация в П / поли, что неизвестно.[15])

За клеточные автоматы при простом поведении минимальный BDD обычно растет линейно на последовательных шагах. Для правила 254, например, это 8t + 2, а для правило 90 это 4т + 2. Для клеточных автоматов с более сложным поведением он обычно растет примерно по экспоненте. Таким образом, для Правило 30 это {7, 14, 29, 60, 129} и для Правило 110 {7, 15, 27, 52, 88}. Размер минимального BDD может зависеть от порядка, в котором указаны переменные; таким образом, например, простое отражение правила 30 для правила 86 дает {6, 11, 20, 36, 63}.

Исследователи предложили усовершенствовать структуру данных BDD, уступив место ряду связанных графиков, таких как BMD (диаграммы двоичных моментов ), ZDD (диаграмма решения с нулевым подавлением ), FDD (бесплатные диаграммы двоичных решений ), PDD (диаграммы решений по четности ) и MTBDD (множественные терминальные BDD).

Логические операции с BDD

Многие логические операции с BDD могут быть реализованы с помощью алгоритмов манипулирования графами с полиномиальным временем:[16]:20

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

Вычисление экзистенциальной абстракции над несколькими переменными сокращенных BDD является NP-полным.[17]

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

Смотрите также

Рекомендации

  1. ^ а б Алгоритмы на основе графов для манипуляции логическими функциями, Рэндал Э. Брайант, 1986
  2. ^ К. Ю. Ли. "Представление коммутационных цепей программами двоичного решения". Технический журнал Bell System, 38: 985–999, 1959.
  3. ^ Шелдон Б. Акерс-младший.. Диаграммы двоичных решений, транзакции IEEE на компьютерах, C-27 (6): 509–516, июнь 1978.
  4. ^ Раймонд Т. Бут, «Машина двоичных решений как программируемый контроллер». EUROMICRO Информационный бюллетень, Vol. 1 (2): 16–22, январь 1976 г.
  5. ^ Рэндал Э. Брайант. "Графические алгоритмы для манипуляции с логическими функциями ". IEEE Transactions on Computers, C-35 (8): 677–691, 1986.
  6. ^ Рэндал Э. Брайант "Символьная логическая манипуляция с упорядоченными двоичными диаграммами решений », ACM Computing Surveys, Vol. 24, № 3 (сентябрь 1992 г.), стр. 293–318.
  7. ^ Карл С. Брейс, Ричард Л. Руделл и Рэндал Э. Брайант. "Эффективное внедрение пакета BDD ». В материалах 27-й конференции по автоматизации проектирования ACM / IEEE (DAC 1990), страницы 40–45. Издательство IEEE Computer Society Press, 1990.
  8. ^ «Стэнфордский центр профессионального развития». scpd.stanford.edu. Архивировано из оригинал на 2014-06-04. Получено 2018-04-23.
  9. ^ Р. М. Йенсен. "CLab: библиотека C + + для быстрой интерактивной конфигурации продукта без возврата". Труды Десятой Международной конференции по принципам и практике программирования с ограничениями, 2004 г.
  10. ^ Х. Л. Липмаа. «Первый протокол CPIR с вычислением, зависящим от данных». ICISC 2009.
  11. ^ Беате Боллиг, Инго Вегенер. Улучшение порядка переменных в OBDD полностью завершено, IEEE Transactions on Computers, 45 (9): 993–1002, сентябрь 1996 г.
  12. ^ Детлеф Зилинг. «Неприблизимость минимизации OBDD». Информация и вычисления 172, 103–138. 2002 г.
  13. ^ Райс, Майкл. «Обзор эвристики упорядочивания статических переменных для эффективного построения BDD / MDD» (PDF).
  14. ^ Филипп Вельфель. "Границы OBDD-размера целочисленного умножения с помощью универсального хеширования." Журнал компьютерных и системных наук 71, стр. 520-534, 2005.
  15. ^ Ричард Дж. Липтон. «БДД и факторинг». Потерянное письмо Гёделя и P = NP, 2009.
  16. ^ Андерсен, Х. Р. (1999). «Введение в двоичные диаграммы принятия решений» (PDF). Конспект лекций. ИТ-университет Копенгагена.
  17. ^ Хут, Майкл; Райан, Марк (2004). Логика в информатике: моделирование и рассуждения о системах (2-е изд.). Кембридж [Великобритания]: Издательство Кембриджского университета. С. 380–. ISBN  978-0-52154310-1. OCLC  54960031.

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

  • Р. Убар, "Генерация тестов для цифровых схем с использованием альтернативных графов", в сб. Таллиннский технический университет, 1976, № 409, Таллиннский технический университет, Таллинн, Эстония, стр. 75–81.
  • Д. Э. Кнут "Искусство программирования Том 4, Часть 1: Побитовые приемы и методы; Диаграммы двоичных решений »(Addison – Wesley Professional, 27 марта 2009 г.) viii + 260pp, ISBN  0-321-58050-8. Черновик Fascicle 1b доступны для скачивания.
  • Гл. Майнель, Т. Теобальд "Алгоритмы и структуры данных в VLSI-дизайне: OBDD - основы и приложения », Springer-Verlag, Берлин, Гейдельберг, Нью-Йорк, 1998. Полный учебник доступен для загрузки.
  • Эбендт, Рюдигер; Фей, Гёршвин; Дрекслер, Рольф (2005). Расширенная оптимизация BDD. Springer. ISBN  978-0-387-25453-1.
  • Беккер, Бернд; Дрекслер, Рольф (1998). Диаграммы двоичных решений: теория и реализация. Springer. ISBN  978-1-4419-5047-5.

внешняя ссылка