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 .