Dada una familia conjunto de subconjuntos de un universo . Deje y queremos responder es .
Estoy buscando una estructura de datos que me permita responder rápidamente a esto. Mi aplicación es de la teoría de grafos donde quiero ver si eliminar un vértice y su vecindario deja vértices aislados, y para cada vértice enumera todos los vértices aislados que deja.
Quiero crear el poset completo o eventualmente un tablas que almacenan verdadero falso decir exactamente qué conjuntos están subconjuntos entre sí.
Sea , y , supongamos que
Podemos generar la matriz de contención (el gráfico bipartito) en tiempo y luego podemos crear la tabla de todas las comparaciones en tiempo por cada conjunto , recorrer todo elementos de todos los otros conjuntos y marcan el conjunto como no un subconjunto de si el elemento no se encuentra en . En total tiempo.
¿Podemos hacer algo más rápido? En particular, ¿es posible tiempo o no?
Encontré algunos artículos relacionados:
Algoritmo subcuadrático simple para calcular el orden parcial del subconjunto (1995) que proporciona un algoritmo .
El orden parcial del subconjunto: computación y combinación mejora ligeramente lo anterior, pero también afirma que el documento anterior resuelve el problema en el tiempo donde d es el número máximo de conjuntos que comparten un elemento común, pero no pude entender este resultado.
En el artículo Entre y O ( n α ), los autores muestran cómo en un gráfico encontrar los componentes conectados después de eliminar la vecindad cerrada de un vértice utilizando la multiplicación de matrices. Esto se puede utilizar para calcular el conjunto de inclusión del conjunto al encontrar todos los componentes que son singletons con un tiempo de ejecución de .
También esta discusión del foro está relacionada: ¿Cuál es la forma más rápida de verificar la inclusión de conjuntos? lo que implica un límite inferior de .
fuente
Respuestas:
Si la aleatoriedad está dentro de los límites, una idea aproximada sería generar un grupo de funciones de "firma monotónica aleatoria" y usarlas para aproximar la relación del subconjunto (a la Bloom filtros). Desafortunadamente, no sé cómo convertir esto en un algoritmo práctico, pero aquí hay algunas estimaciones que no prueban de inmediato que la idea sea imposible. Esto está muy lejos de ser una solución útil, pero lo escribiré en caso de que ayude.
Supongamos por simplicidad que los conjuntos son casi del mismo tamaño, digamos , y que s = o ( u ) . Podemos suponer 1 ≪ s , de lo contrario, hemos terminado. Definir q|S|=s±O(1) s=o(u) 1≪s
Tenga en cuenta quep≫1.
Aquí está la parte muy poco práctica. Elija aleatoriamente subconjuntos A 1 , ... , A p ⊂ U con reemplazo, cada uno de tamaño q , y defina una función f : 2 U → { 0 , 1 } por f ( S ) = 1 iff A i ⊂ S para alguna i . Con S fijo y A i , f variando aleatoriamente, tenemos Prpag UN1, ... , Apag⊂ U q F: 2U→ { 0 , 1 } F( S) = 1 UNyo⊂ S yo S UNyo, f
Dado quef(S)es monótono,S⊂Timplicaf(S)≤f(T). SiT⊄S, solucionar algunost∈T-S. La probabilidad de quefdetecteT⊄Ses
Pr ( f ( S ) = 0 < 1 = f
Incluso si los cálculos anteriores son correctos, no tengo idea de cómo generar funciones de firma monótonas con las características deseadas rápidamente. También es probable que esta técnica no se extienda a tamaños de conjuntos significativamente diferentes.
fuente