З огляду на набір сімейство підмножин універсуму . Нехай і ми хочемо відповісти .
Я шукаю структуру даних, яка дозволить мені швидко відповісти на це. Моє додаток складається з теорії графів, де я хочу побачити, чи видалення вершини та її сусідства залишає окремі вершини, і для кожного списку вершин залишаються всі відокремлені вершини.
Я хочу створити повний набір або зрештою таблиця, де зберігаються справжні помилкові дані, які саме набори є підмножиною одного.
Нехай , і , припустимо
Ми можемо генерувати матрицю стримування (двопартійний графік) за час, а потім можемо створити таблицю всіх порівнянь за час за кожним набором , провести цикл через усі елементи всіх інших наборів і позначити його , як не є підмножиною , якщо вони елемент не знаходиться в . Всього часу.
Чи можемо ми зробити що-небудь швидше? Зокрема, чи можливий час чи ні?
Я знайшов кілька пов’язаних статей:
Простий підквадратичний алгоритм для обчислення часткового порядку підмножини (1995), який дає алгоритм .
Частковий порядок підмножини: обчислювальна техніка та комбінаторика дещо покращує вищесказане, але також стверджує, що вищезазначений документ вирішує проблему за час коли - максимальна кількість наборів, що використовують спільний елемент, але я не міг зрозуміти цей результат.
У статті між та O ( n α ) автори показують, як у графіку знайти з'єднані компоненти після видалення замкнутого сусідства вершини за допомогою матричного множення. Це можна використовувати для обчислення множини набору включення, знайшовши всі компоненти, які є одинаковими з режимом виконання .
Також ця дискусія на форумі пов'язана: Який найшвидший спосіб перевірити наявність включення? з якої випливає нижня межа .