Conjetura de las familias estables por uniones
La conjetura de las familias estables por uniones fue planteada por Péter Frankl en 1979 y aún sigue abierta.
Una familia de conjuntos es estable por uniones si la unión de dos conjuntos cualesquiera de la familia pertenece a la familia. Por ejemplo, {∅, {1}, {2}, {1,2}, {1,3}, {1,2,3}} es estable por uniones; pero {{1}, {2}, {1,3}, {1,2,3}} no lo es.
La conjetura afirma que toda familia no vacía estable por uniones y distinta {∅} posee algún elemento que pertenece al menos a la mitad de los conjuntos de la familia.
Definir las funciones
esEstable :: Ord a => Set (Set a) -> Bool familiasEstables :: Ord a => Set a -> Set (Set (Set a)) mayoritarios :: Ord a => Set (Set a) -> [a] conjeturaFrankl :: Int -> Bool
tales que
- (esEstable f) se verifica si la familia f es estable por uniones. Por ejemplo,
λ> esEstable (fromList [empty, fromList [1,2], fromList [1..5]]) True λ> esEstable (fromList [empty, fromList [1,7], fromList [1..5]]) False λ> esEstable (fromList [fromList [1,2], singleton 3, fromList [1..3]]) True
- (familiasEstables c) es el conjunto de las familias estables por uniones formadas por elementos del conjunto c. Por ejemplo,
λ> familiasEstables (fromList [1..2]) fromList [ fromList [] , fromList [fromList []] , fromList [fromList [],fromList [1]] , fromList [fromList [],fromList [1],fromList [1,2]], fromList [fromList [],fromList [1],fromList [1,2],fromList [2]] , fromList [fromList [],fromList [1,2]] , fromList [fromList [],fromList [1,2],fromList [2]] , fromList [fromList [],fromList [2]] , fromList [fromList [1]] , fromList [fromList [1],fromList [1,2]] , fromList [fromList [1],fromList [1,2],fromList [2]] , fromList [fromList [1,2]] , fromList [fromList [1,2],fromList [2]] , fromList [fromList [2]]] λ> size (familiasEstables (fromList [1,2])) 14 λ> size (familiasEstables (fromList [1..3])) 122 λ> size (familiasEstables (fromList [1..4])) 4960
- (mayoritarios f) es la lista de elementos que pertenecen al menos a la mitad de los conjuntos de la familia f. Por ejemplo,
mayoritarios (fromList [empty, fromList [1,3], fromList [3,5]]) == [3] mayoritarios (fromList [empty, fromList [1,3], fromList [4,5]]) == []
- (conjeturaFrankl n) se verifica si para toda familia f formada por elementos del conjunto {1,2,...,n} no vacía, estable por uniones y distinta de {∅} posee algún elemento que pertenece al menos a la mitad de los conjuntos de f. Por ejemplo.
conjeturaFrankl 2 == True conjeturaFrankl 3 == True conjeturaFrankl 4 == True



















