Бінарна діаграма рішень

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Бінарна діаграма рішень (англ. Binary decision diagram) або програма розгалуження — це структура даних в інформатиці, яка використовується для представлення булевої функції. На більш абстрактному рівні, БДР можна розглядати як стиснене представлення множин або відношень. На відміну від інших стиснених представлень, операції виконуються безпосередньо на стислому представлені, тобто без декомпресії. Інші структури даних, які використовуються для представлення булевої функції мають в собі заперечення нормальної формипропозіціональний орієнтований ациклічний граф[en].

Визначення[ред. | ред. код]

Булева функція може бути представлена у вигляді орієнтованого ациклічного графа, який складається з декількох вузлів рішень і термінальних вузлів. Існують два типи кінцевих вузлів: 0-термінал і 1-термінал. Кожен вузол рішень позначений булевою (логічною) змінною і має два дочірніх вузли з назвою нижній дочірній та верхній дочірній. Ребро з вузла до нижнього (або верхнього) дочірнього вузла являє собою відповідність нулю (або 1). Така БДР називається «впорядкованою», якщо різні змінні з'являються в тому ж порядку на всіх шляхах від кореня. БДР називають скороченою, якщо наступні два правила вже були застосовані до його графи:

  • Злиті будь-які ізоморфні підграфи.
  • Вилучено будь-який вузол, у якого обидва нащадки ізоморфні.

У більшості випадків під бінарною діаграмою рішень розуміють саме скорочену впорядковану бінарну діаграму рішень (СВБДР). Перевага скороченої впорядкованої БДР в тому, що вона є канонічною (єдиною) для конкретної функції й заданого порядку змінних[1].  Ця властивість робить СВБДР корисною для перевірки функціональної еквівалентності.

Шлях від кореня до 1-терміналу представляє (можливо частково) набори змінних, для яких задана булева функція приймає значення «істина». Як шлях прямує від кореня до нижнього або верхнього нащадка, так і змінна у вузлі ставиться у відповідність 0 або 1.

Приклад[ред. | ред. код]

На малюнку ліворуч зображене бінарне дерево прийняття рішень (без застосування правил скорочення), відповідне наведеної на цьому ж малюнку таблиці істинності для булевої функції . Для заданих вхідних значень , , можна визначити значення логічної функції, рухаючись по дереву від кореневого вузла дерева до термінальних вузлів, вибираючи напрямок переходу з вузла залежно від вхідного значення . Пунктирними лініями на малюнку зображені переходи до молодшого нащадку, а безперервними лініями зображені переходи до старшого нащадку. Наприклад, якщо задано вхідні значення (, , ), то з кореневого вузла необхідно перейти по пунктирній лінії ліворуч (оскільки значення дорівнює 0), після цього необхідно перейти по безперервним лініям праворуч (бо значення та дорівнюють 1). У результаті ми опинимося в 1-термінальному вузлі, тобто значення дорівнює 1.

Бінарне дерево прийняття рішень на малюнку ліворуч можна перетворити в бінарну діаграму рішень шляхом застосування двох правил скорочення. БДР, яка буде отримана після скорочення, зображена на малюнку праворуч.

Бінарне дерево рішень та таблиця істинності функції
БДР функції f

Історія[ред. | ред. код]

Основною ідеєю для створення такої структури даних послужило розкладання Шеннона. Будь-яку булеву функцію по одній з вхідних змінних можна розділити на дві підфункції, званих позитивним і негативним доповненням, з яких за принципом if-then-else вибирається тільки одна підфункція залежно від значення вхідної змінної (за якою виконувалося розкладання Шеннона). Представляючи кожну таку підфункцію у вигляді піддерева і продовжуючи розкладання по решті вхідних змінних, можна отримати дерево прийняття рішень, скорочення якого дасть бінарну діаграму рішень. Інформація про використання бінарних діаграм рішень або бінарних розгалужених програм була вперше опублікована в 1959 році в технічному журналі «Bell Systems Technical Journal»[2][3][4].

Потенціал для створення ефективних алгоритмів, заснованих на використанні цієї структури даних, досліджував Рендел Брайнт з університету Карнегі — Меллон: його підхід полягав у використанні фіксованого порядку змінних (для однозначності канонічного представлення кожної булевої функції) і повторного використання загальних підграфів (для компактності). Застосування цих двох ключових концепцій дозволяє підвищити ефективність структур даних і алгоритмів для представлення множин і відносин між ними.[5][6] Використання декількома БДР загальних підграфів призвело до появи такої структури даних, як розділювана скорочена впорядкована бінарна діаграма рішень (англ. Shared Reduced Ordered Binary Decision Diagram).[7] Назва БДР тепер в основному використовується для цієї конкретної структури даних.

Дональд Кнут у своїй відеолекції Fun With Binary Decision Diagrams (BDDs) назвав бінарні діаграми рішень «однією з дійсно фундаментальних структур даних, які з'явилися за останні двадцять п'ять років» і зазначив, що публікація Рендела Брайнта 1986 року, яка пояснила використання бінарних діаграм рішень для маніпуляції над булевими функціями, була деякий час найбільш цитованою публікацією в комп'ютерній науці.

Застосування[ред. | ред. код]

БДР широко використовуються в системах автоматизованого проєктування (САПР) для синтезу логічних схем і у формальній верифікації.

В електроніці кожна конкретна БДР (навіть не скорочена і не впорядкована) може бути безпосередньо реалізована заміною кожного вузла на мультиплексор з двома входами й одним виходом.

Порядок змінних[ред. | ред. код]

Розмір БДР визначається як булевою функцією, так і вибором порядку вхідних змінних. При складанні графа для булевої функції кількість вузлів у найкращому випадку може лінійно залежати від , а в найгіршому випадку залежність може бути експоненційною при невдалому виборі порядку вхідних змінних. Наприклад, дана булева функція . Якщо використовувати порядок змінних , то знадобиться 2 n + 1 вузлів для представлення функції у вигляді БДР. Ілюструє БДР для функції від 8 змінних зображена на малюнку зліва. А якщо використовувати порядок , то можна отримати еквівалентну БДР з 2n + 2 вузлів. Ілюстрована БДР для функції від 8 змінних зображена на малюнку праворуч.

БДР для функції ƒ(x1, …, x8) = x1x2 + x3x4 + x5x6 + x7x8 при використанні невдалого порядку змінних
Аналогічна БДР при вдалому виборі порядку змінних

Вибір порядку змінних є критично важливим при використанні таких структур даних на практиці. Проблема знаходження найкращого порядку змінних є NP-складним завданням.[8] На додаток, NP-складним є навіть завдання знаходження субоптимального порядку змінних, при якому для будь-якої константи c > 1 розмір БДР не більше ніж в c раз більше оптимального.[9] Однак існують ефективні евристичні методи для розв'язання цієї проблеми.

Крім того, існують такі функції, для яких розмір графа завжди зростає експоненціально з ростом числа змінних, незалежно від порядку змінних. Це належить до функцій множення, що вказує на явну складність факторизації.

Дослідження бінарних діаграм рішень привели до появи безлічі суміжних видів графів, таких, як BMD (Binary Moment Diagrams), ZDD (Zero Suppressed Decision Diagram), FDD (Free Binary Decision Diagrams), PDD (Parity decision Diagrams), і MTBDDs (Multiple terminal BDDs).

Логічні операції над БДР[ред. | ред. код]

Багато логічних операцій можуть бути виконані безпосередньо над БДР за допомогою алгоритмів, що виконують маніпуляції над графами за поліноміальний час.

Однак повторення цих операцій безліч разів, наприклад, при формуванні кон'юнкцій або диз'юнкцій набору БДР, можуть призвести до експоненціально великого БДР в гіршому випадку. Це відбувається через те, що результатом будь-яких попередніх операцій над двома БДР в загальному випадку може бути БДР з розміром, пропорційним добутку попередніх розмірів, тому для декількох БДР розмір може збільшуватися експоненціально.

Див. також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. Graph-Based Algorithms for Boolean Function Manipulation, Randal E. Bryant, 1986
  2. C. Y. Lee.
  3. Sheldon B. Akers.
  4. Raymond T. Boute, «The Binary Decision Machine as a programmable controller».
  5. Randal E. Bryant.
  6. R. E. Bryant, «Symbolic Boolean Manipulation with Ordered Binary Decision Diagrams» [Архівовано 23 вересня 2015 у Wayback Machine.], ACM Computing Surveys, Vol. 24, No. 3 (September, 1992), pp. 293—318.
  7. Karl S. Brace, Richard L. Rudell and Randal E. Bryant.
  8. Beate Bollig, Ingo Wegener. Improving the Variable Ordering of OBDDs Is NP-Complete, IEEE Transactions on Computers, 45(9):993-1002, September 1996.
  9. Detlef Sieling. «The nonapproximability of OBDD minimization.» Information and Computation 172, 103–138. 2002.

Рекомендована література[ред. | ред. код]

  • D. E. Knuth, «The Art of Computer Programming Volume 4, Fascicle 1: Bitwise tricks & techniques; Binary Decision Diagrams» (Addison-Wesley Professional, March 27, 2009) viii+260pp, ISBN 0-321-58050-8. Draft of Fascicle 1b [Архівовано 12 березня 2016 у Wayback Machine.] available for download.
  • H. R. Andersen «An Introduction to Binary Decision Diagrams,» Lecture Notes, 1999, IT University of Copenhagen.
  • Ch. Meinel, T. Theobald, «Algorithms and Data Structures in VLSI-Design: OBDD — Foundations and Applications» [Архівовано 24 вересня 2015 у Wayback Machine.], Springer-Verlag, Berlin, Heidelberg, New York, 1998. Complete textbook available for download.
  • Rüdiger Ebendt; Görschwin Fey; Rolf Drechsler (2005). Advanced BDD optimization. Springer. ISBN 978-0-387-25453-1.
  • Bernd Becker; Rolf Drechsler (1998). Binary Decision Diagrams: Theory and Implementation. Springer. ISBN 978-1-4419-5047-5.

Посилання[ред. | ред. код]