Ir al contenido

Diferencia entre revisiones de «Conjunto potencia»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Mardolf (discusión · contribs.)
Sin resumen de edición
-código. WP:NO es un contenedor de código de lenguajes de programación, véase también WP:ISE
Línea 18: Línea 18:
En [[teoría de conjuntos]], ''X''<sup>''Y''</sup> es el conjunto de todas las [[función matemática|funciones]] de ''Y'' a ''X''. Como '''2''' puede ser definido como {0, 1} (véase [[número natural]]), '''2'''<sup>''S''</sup> es el conjunto de todas las funciones de ''S'' a {0, 1}.
En [[teoría de conjuntos]], ''X''<sup>''Y''</sup> es el conjunto de todas las [[función matemática|funciones]] de ''Y'' a ''X''. Como '''2''' puede ser definido como {0, 1} (véase [[número natural]]), '''2'''<sup>''S''</sup> es el conjunto de todas las funciones de ''S'' a {0, 1}.
Cada función en '''2'''<sup>''S''</sup> está en correspondencia biyectiva con un subconjunto de ''S'' (la antiimagen de 1) por lo que se establece una equivalencia de conjuntos entre '''2'''<sup>''S''</sup> y ''P''(''S'')
Cada función en '''2'''<sup>''S''</sup> está en correspondencia biyectiva con un subconjunto de ''S'' (la antiimagen de 1) por lo que se establece una equivalencia de conjuntos entre '''2'''<sup>''S''</sup> y ''P''(''S'')

== Implementación en Haskell ==

Esta implementación recibe una Lista de elementos y devuelve una lista con todas las listas que representan los subconjuntos posibles

<source lang="haskell">
parts [] = [[]]
parts (x:xs) = agregar x (parts xs) ++ (parts xs)

agregar x [] = []
agregar x (y:ys) = (x:y) : agregar x ys

-- notar que tanto el nombre parts como agregar son triviales
</source>

Para su ejecución se le pasa una lista de elementos a la función parts
Por ejemplo:

<source lang="haskell">
parts [10,20,30]
</source>

y obtenemos

<source lang="haskell">
[[10,20,30],[10,20],[10,30],[10],[20,30],[20],[30],[]]
</source>


== Implementación en Python ==

Esta implementación del algoritmo para obtener un conjunto potencia de una colección dada:

<source lang="python">
def addTo(e, t):
for s in t:
s += [e]
return t
def powerSet(a_set):
if not a_set: return [[]]
e = a_set[0]
t = a_set[1:]
return powerSet(t) + addTo(e, powerSet(t))
</source>

La cual puede ser probada ejecutando luego:

<source lang="python">
a = [1,2,3]

print powerSet(a)
</source>

Y la respuesta será:

<source lang="python">
[[], [3], [2], [3, 2], [1], [3, 1], [2, 1], [3, 2, 1]]
</source>


== Referencia ==
== Referencia ==

Revisión del 00:17 7 dic 2011

En matemáticas, dado un conjunto S, se llama conjunto potencia o conjunto de partes de S (se denota por P(S) o 2S) al conjunto formado por todos los subconjuntos posibles de S.

En la teoría de conjuntos basada en los Axiomas de Zermelo-Fraenkel, la existencia del conjunto potencia se establece por el axioma del conjunto potencia.

Por ejemplo, si S= {a, b, c} entonces el conjunto potencia de S es P(S) = {{ }, {a}, {b}, {c}, {a, b}, {a, c}, {b, c}, {a, b, c}}.

El conjunto potencia de un conjunto S, junto con las operaciones de la unión, de la intersección y del complemento forman el ejemplo prototípico de álgebra de Boole. De hecho, uno puede demostrar que cualquier álgebra de Boole finita es isomorfa al álgebra booleana del conjunto potencia de un conjunto finito. Para las álgebras booleanas infinitas esto no es verdad, pero cada álgebra booleana infinita es subálgebra de una álgebra booleana de partes.[cita requerida]

Cardinalidad del conjunto potencia

Cuando S es finito, si n = |S| es el número de elementos de S entonces su conjunto potencia contiene |P(S)| = 2n elementos. En este caso también se puede establecer una biyección entre los elementos del conjunto potencia con números de n-bits: el n-ésimo bit se refiere a la presencia o ausencia del n-ésimo elemento de S. Hay 2n tales números. Este argumento prueba la identidad de coeficientes binomiales:

La cardinalidad de un conjunto potencia siempre es mayor que la cardinalidad del conjunto base, el argumento diagonal de Cantor demuestra la afirmación para conjuntos infinitos, mientras que el hecho de que n < 2n la prueba para conjuntos finitos. El conjunto potencia de los números naturales, por ejemplo, se puede poner en correspondencia uno a uno con el conjunto de números reales. Usualmente se establece primero una biyección entre los números reales y el intervalo cerrado [0,1], para luego, usando la expansión diádica de los números reales, identificar cada elemento de [0,1] con la sucesión infinita de ceros y unos dada por los coeficientes.

La notación 2S

En teoría de conjuntos, XY es el conjunto de todas las funciones de Y a X. Como 2 puede ser definido como {0, 1} (véase número natural), 2S es el conjunto de todas las funciones de S a {0, 1}. Cada función en 2S está en correspondencia biyectiva con un subconjunto de S (la antiimagen de 1) por lo que se establece una equivalencia de conjuntos entre 2S y P(S)

Referencia

Bibliografía

Enlaces externos