Как быстро мы можем вычислить набор включений в набор семейства?

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

Если случайность находится в границах, одной грубой идеей было бы сгенерировать набор функций «случайной монотонной сигнатуры» и использовать их для аппроксимации отношения подмножеств (а-ля фильтры Блума). К сожалению, я не знаю, как превратить это в практический алгоритм, но вот некоторые оценки, которые не сразу доказывают невозможность идеи. Это очень далеко от полезного решения, но я напишу его, если оно поможет.

Для простоты предположим, что все наборы имеют почти одинаковый размер, скажем , и что s = o ( u ) . Мы можем предположить 1|S|=s±O(1)s=o(u) ,противном случае мы сделали. Определить д1s

q=[s/2]p=[(uq)(sq)]
Обратите внимание, что .p1

Вот эта дико непрактичная часть. Произвольно выберите подмножеств A 1 , , A pU с заменой каждого размера q и определите функцию f : 2 U{ 0 , 1 } на f ( S ) = 1, если A iS для некоторого i , С фиксированным S и A i ( f ( SpA1,,ApUqf:2U{0,1}f(S)=1AiSiS изменяющимся случайным образом, мы имеем PrAi,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)TSTТ-SеТS
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)
Some of those steps are pretty tenuous, but I don't have time to improve them tonight. In any case, if they all hold, then at least it's not clearly impossible to randomly generate signature functions that have reasonable likelihood of distinguishing subsets from nonsubsets. A logarithmic number of such functions would then distinguish all pairs correctly. If generating a signature function f and computing f(S) could be reduced to O~(n+u) time, the result would be an overall O~(n2+u2) algorithm.

Even if the above calculations are correct, I have no idea how to generate monotonic signature functions with the desired features quickly. It's also likely that this technique doesn't extend to significantly different set sizes.

Geoffrey Irving
источник