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 de {∅} 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
Leer más…