Cómo encontrar todos los conjuntos más pequeños que no están contenidos en ningún otro conjunto.
Tengo un grupo de elementos que han sido ordenados en diferentes conjuntos. Estos conjuntos podrían tener intersecciones no nulas entre ellos. ¿Cómo puedo encontrar todos los conjuntos que no están contenidos en ninguno de los conjuntos existentes?
Por ejemplo:
- elementos: a, b, c, d
- conjuntos: {a, b, c}, {a, b}, {a}, {a, b, c, d}, {b, d, c}
En este caso, el resultado debería ser: {a}, {b, d, c}
- {a, b, c, d} contiene {a, b, c} contiene {a, b} contiene {a}
- {a, b, c, d} contiene {b, d, c}
Mi enfoque sería crear un grafo con:
– nodos que representen los conjuntos
– una arista entre el conjunto 1 y el conjunto 2 si el conjunto 1 está contenido en el conjunto 2
Una vez que construya el grafo, la solución serán las aristas sin predecesores (o aristas entrantes).
G = nx.DiGraph()
G.add_nodes_from([frozenset({‘a’, ‘b’, ‘c’}), frozenset({‘a’, ‘b’}), frozenset({‘a’}), frozenset({‘a’, ‘b’, ‘c’, ‘d’}), frozenset({‘b’, ‘d’, ‘c’})])
G.add_edges_from([(n, m) for n in G for m in G if n!=m if n<m])
print([n for n, in_degree in g.in_degree() if in_degree == 0]) print([n=”” for=”” n,=”” in_degree=”” in=”” g.in_degree()=”” if=”” in_degree=”=”></m])
print([n for n, in_degree in g.in_degree() if in_degree == 0])>
davy.ai
Solución para encontrar conjuntos que no están contenidos en ningún conjunto existente
Suponiendo que se nos da una lista de conjuntos y queremos encontrar todos los conjuntos que no están contenidos en ningún conjunto existente, podemos utilizar el siguiente enfoque:
Aquí está una implementación de este enfoque en Python:
Salida:
Por lo tanto, los conjuntos que no están contenidos en ningún conjunto existente son
{a}
y{b, d, c}
.