Це не відповідь. Це просте, але тривале спостереження. Сподіваюся, це стане в нагоді.
Версія вашої проблеми є: чи X містять підмножину A?
Ця проблема пов'язана з проблемою оцінки монотонних булевих функцій nзмінні. Підмножина{1,…,n} еквівалентний n-бістринг, так що сім'я X еквівалентна булева функція f з nзмінні. Дана функціяf, можна визначити найменш монотонну функцію, яка не більша за f, а саме g(y)=(∃x⊆y,f(x)). Первісна проблема зводиться до оцінюванняg(A). І навпаки, проблема оцінки монотонної булевої функції може бути зведена до початкової задачі, або наївно, приймаючиf=g або вибравши f що робить X менший.
На практиці BDD мають тенденцію працювати добре. Тож один можливий підхід - це створення BDD дляf, походять від нього BDD для g, а потім оцініть g. Середній розмір BDD заgповинна бути , тому що існує багато монотонних булевих функцій . Отже, теоретично це погане рішення.Ω((nn/2))
Але (1) можливий кращий аналіз та (2) можливий підхід до цього підходу, який робить його кращим. Наприклад, я жодним чином не використовував кореляцію між розміром та розміром 's BDD. (Має бути відповідна кореляція, але я не знаю, чи вона тут проста чи зручна.)Xg
Для повноти простий алгоритм обчислення BDD для з BDD для є наступним.
Тут є стандартом або операцією на BDD.gf
m(x?f1:f0)=x?(m(f0)∨m(f1)):m(f0)
∨