З якою швидкістю ми можемо обчислити набір для включення набору сімейства наборів?


20

З огляду на набір сімейство F підмножин універсуму U . Нехай S1,S2F і ми хочемо відповісти S1S2 .

Я шукаю структуру даних, яка дозволить мені швидко відповісти на це. Моє додаток складається з теорії графів, де я хочу побачити, чи видалення вершини та її сусідства залишає окремі вершини, і для кожного списку вершин залишаються всі відокремлені вершини.

Я хочу створити повний набір або зрештою |F|2 таблиця, де зберігаються справжні помилкові дані, які саме набори є підмножиною одного.

Нехай m=SF|S|, u=|U|і n=|F|, припустимо u,nm

Ми можемо генерувати матрицю стримування n×u (двопартійний графік) за O(un) час, а потім можемо створити таблицю всіх n2 порівнянь за час O(nm) за кожним набором SF , провести цикл через усі елементи всіх інших наборів і позначити його , як не є підмножиною S , якщо вони елемент не знаходиться в S . Всього O(nm) часу.

Чи можемо ми зробити що-небудь швидше? Зокрема, чи можливий час O((n+u)2) чи ні?

Я знайшов кілька пов’язаних статей:

Простий підквадратичний алгоритм для обчислення часткового порядку підмножини (1995), який дає алгоритм O(m2/log(m)) .

Частковий порядок підмножини: обчислювальна техніка та комбінаторика дещо покращує вищесказане, але також стверджує, що вищезазначений документ вирішує проблему за час O(md) коли d - максимальна кількість наборів, що використовують спільний елемент, але я не міг зрозуміти цей результат.

У статті між та O ( n α )O(nm)O(nα) автори показують, як у графіку знайти з'єднані компоненти після видалення замкнутого сусідства вершини за допомогою матричного множення. Це можна використовувати для обчислення множини набору включення, знайшовши всі компоненти, які є одинаковими з режимом виконання .O((n+u)2.79)

Також ця дискусія на форумі пов'язана: Який найшвидший спосіб перевірити наявність включення? з якої випливає нижня межа .O(n2ϵ)


Лише пропозиція: чи можете ви спростити питання, встановивши ? Або обидва параметри важливі у вашій програмі? u=n
Колін МакКійлан

У моєму додатку у мене є , де < < означає асимптотично менше. u<<n<<2u<<
Мартін Ватшелль

Відповіді:


2

Якщо випадковість знаходиться в межах, однією грубою ідеєю було б створити купу функцій "випадкової монотонної сигнатури" та використовувати їх для наближення відношення до підмножини (фільтри a la Bloom). На жаль, я не знаю, як перетворити це на практичний алгоритм, але ось кілька оцінок, які не одразу виявляють ідею неможливою. Це дуже далеко не корисне рішення, але я випишу його на випадок, якщо це допоможе.

Припустимо для простоти, що всі набори майже однакового розміру, скажімо , і що s = o ( u ) . Можна припустити , 1 « сек , в іншому випадку ми зробили. Визначте q|S|=s±O(1)s=o(u)1s Зауважимо, щоp1.

q=[s/2]p=[(uq)(sq)]
p1

Ось дико непрактична частина. Випадково виберіть підмножини A 1 , , A pU із заміною, кожен розміром q , і визначте функцію f : 2 U{ 0 , 1 } на f ( S ) = 1 iff A iS для деяких i . З фіксованими S та A i , f, що змінюються випадковим чином, маємо PrpA1,,ApUqf:2U{0,1}f(S)=1AiSiSAi,f Оскількиf(S)є монотонним,STозначаєf(S)f(T). ЯкщоTS, фіксуємо деякетT-S. Ймовірність того, щоfвиявляєTS,є Pr ( f ( S ) = 0 < 1 = f

Pr(f(S)=0)=Pr(i.AiS)=Pr(A1S)p=(1(sq)/(uq))p=eΘ(1)
f(S)STf(S)f(T)TStTSfTS Деякі з цих кроків є досить тонкими, але я сьогодні не встигаю їх покращити. У будь-якому випадку, якщо вони всі дотримуються, то принаймні невідомо неможливо випадкове генерування функцій підпису, які мають розумну ймовірність відрізнити підмножини від непідрядних. Тоді логарифмічне число таких функцій дозволило б правильно розрізнити всі пари. Якщо функція генерування підписупі обчисленняп(S)може бути зменшено до ~ O (п+у)час, результат був би загальний ~ Про (п2
Pr(f(S)=0<1=f(T))=Pr(f(S)=0)Pr(f(T)=1|f(S)=0)=eΘ(1)Pr(i.AiT,AiTS0|f(S)=0)=eΘ(1)Pr(i.tAiT|f(S)=0)eΘ(1)Pr(i.tAiT)eΘ(1)pPr(tA1T)eΘ(1)p(sq1)/(uq)eΘ(1)pqsq(sq)/(uq)=eΘ(1)
ff(S)O~(n+u)O~(n2+u2)

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.