Você está na página 1de 4

Instituto Tecnológico de Colima

Ing. Informática

Matemáticas Discretas

APLICACIÓN DE CONJUNTOS EN INFORMATICA

Adrián Avila Silva

Brayan Alberto ochoa mendoza

Introducción
El concepto de conjunto es uno de los más importantes en matemáticas, aun
Más que la operación de contar, pues se puede encontrar implícita o explícitamente, en
todas las ramas de las matemáticas puras y aplicadas. En su forma explícita, los
principios y terminología de los conjuntos se utilizan para construir teoremas
matemáticos más claros y precisos y para explicar conceptos abstractos como el
infinito.

Todo matemático o filósofo ha empleado razonamientos de la teoría de conjuntos de


una forma más o menos consciente. La teoría de conjuntos se debe al matemático ruso
Georg Cantor, aunque otros matemáticos como George Boole dieron los primeros
pasos para su desarrollo.

En el último cuarto del siglo XIX se vivió un episodio apasionante de la historia


de las matemáticas que las ligaría desde entonces a la historia de la lógica. Primero,
George Boole (1815-1864) trató de presentar la lógica como parte de las matemáticas.
Poco después G. Fregge (1848-1925) intentó demostrar que la aritmética era parte de
la lógica y, dando un gran paso tanto en la historia de las matemáticas como en la
historia de la lógica, G. Cantor se adelantó a Fregge con una fundamentación lógica de
la aritmética. Como consecuencia, Cantor creó una nueva disciplina matemática entre
1874 y 1897: la teoría de conjuntos.

Cantor definió conjunto como “una colección en un todo de determinados y


Distintos objetos de nuestra percepción o nuestro pensamiento, llamados los
Elementos del conjunto”. Su obra fue admirada y condenada simultáneamente por sus
contemporáneos. Desde entonces los debates en el seno de la teoría de conjuntos han
sido siempre apasionados, sin duda por hallarse estrechamente conectados con
importantes cuestiones lógicas.

La Teoría de Conjuntos empezó a influir en otras áreas de las matemáticas.


Por ejemplo, Lebesgue la utilizó en su integral. Posteriormente se intento axiomatizar la
Teoría de Conjuntos. El primero que lo hizo fue Zermelo en 1908. Después lo
intentaron Fraenkel, von Neumann, Bernays y Gödel. Este último terminó
demostrando las limitaciones de cualquier teoría axiomática.

Uso de conjuntos en Informática


En informática, un conjunto es una colección (contenedor) de ciertos valores, sin
ningún orden concreto ni valores repetidos. Su correspondencia en las matemáticas
sería el conjunto finito. Sin tener en cuenta la secuencia, ni el hecho de que no haya
valores repetidos, se asemeja a una lista. Un conjunto puede verse como una cadena
asociativa (array) (mapeado parcial) donde no se atiende al valor de cada par clave-
valor.
Los conjuntos pueden implementarse usando diversas estructuras de datos. Con
una estructura de datos ideal se comprueba si un objeto se encuentra en el conjunto,
además de activarse otras operaciones útiles tales como la iteración sobre todos los
objetos del conjunto, la realización de uniones o intersecciones entre dos conjuntos, o
la toma del complemento de un conjunto en algún dominio limitado. Cualquier
estructura de datos en cadena asociativa puede usarse para implementar un conjunto,
dejando que los juegos de claves sean los elementos del conjunto, e ignorando los
valores.
Gracias a su parecido con las series asociativas, los conjuntos se implementan
habitualmente por los mismos medios, es decir, un árbol binario de búsqueda auto-
balanceable para conjuntos ordenados (con O (log n) para la mayoría de operaciones),
o una tabla hash para conjuntos no ordenados (que tienen O(1) en el caso promedio,
pero O (n) en el peor caso, para la mayoría de operaciones). Es posible usar una tabla
de hash lineal ordenada para crear conjuntos deterministamente ordenados. Otros
métodos generalizados incluyen las cadenas (array).
En particular, un subconjunto de enteros 1..n puede ser implementado de manera
eficaz como en una matriz de bits con n bits, que además ofrece operaciones de unión
e intersección muy eficaces. El filtro Bloom implementa un conjunto por probabilidad,
por medio de una muy compacta representación, pero arriesgando una pequeña
probabilidad de falsos positivos en interrogantes. Sin embargo, casi ninguna de estas
estructuras de datos ofrece operaciones de conjuntos como de unión o de intersección
de manera fiable. Para dichas operaciones existen otras estructuras de datos de
conjunto más especializadas.

Soporte de Lenguajes

Uno de los primeros lenguajes que soportaban conjuntos fue Pascal; muchos lenguajes
lo incluyen ahora, ya sea en el núcleo del lenguaje o en una librería estándar. El
Lenguaje de programación Java ofrece la interfaz Set para el soporte de conjuntos
(donde lo implementa la clase HashSet usando una tabla hash), y la sub-
interfaz SortedSet para dar soporte a conjuntos ordenados (implementado por la
clase TreeSetpor medio de un árbol de búsqueda binario). En C++, STL ofrece la clase
"conjunto" para templates, que implementa a un conjunto ordenado usando un árbol
de búsqueda binario; el STL de SGI ofrece la clase "hash_set", implementando
conjuntos con una tabla de hash. Python tiene un tipo de conjunto incorporado, pero
no un conjunto en sí.
Multiconjunto

Una variación del conjunto es el multiconjunto o bolsa, que es lo mismo que una
estructura de datos de conjunto, pero que admite valores repetidos. Formalmente, un
multiconjunto se puede considerar como una serie asociativa que mapea elementos
únicos en enteros positivos, indicando la multiplicidad del elemento, aunque la
implementación propiamente dicha pueda variar. En C++, la biblioteca de templates
estándar (Standard Template Library) ofrece la clase "multiset" para los multiconjuntos
ordenados, y la STL de SGI ofrece la clase "hash_multiset", que implementa conjuntos
usando una tabla hash. Las colecciones de Apache Commons ofrecen la interfaz Bag y
SortedBag para Java; además de implementar clases como HashBag y TreeBag, que son
semejantes a otras implementaciones de conjuntos con nombres similares.

IMPLEMENTACIONES
Los conjuntos pueden implementarse usando diversas estructuras de datos. Con
una estructura de datos ideal se comprueba si un objeto se encuentra en el conjunto,
además de activarse otras operaciones útiles tales como la iteración sobre todos los
objetos del conjunto, la realización de uniones o intersecciones entre dos conjuntos, o
la toma del complemento de un conjunto en algún dominio limitado. Cualquier
estructura de datos en cadena asociativa puede usarse para implementar un conjunto,
dejando que los juegos de claves sean los elementos del conjunto, e ignorando los
valores.
Gracias a su parecido con las series asociativas, los conjuntos se implementan
habitualmente por los mismos medios, es decir, un árbol binario de búsqueda auto-
balanceable para conjuntos ordenados (con O (log n) para la mayoría de operaciones),
o una tabla hash para conjuntos no ordenados (que tienen O(1) en el caso promedio,
pero O (n) en el peor caso, para la mayoría de operaciones). Es posible usar una tabla
de hash lineal ordenada para crear conjuntos deterministamente ordenados. Otros
métodos generalizados incluyen las cadenas (array).
En particular, un subconjunto de enteros 1..n puede ser implementado de manera
eficaz como en una matriz de bits con n bits, que además ofrece operaciones de unión
e intersección muy eficaces. El filtro Bloom implementa un conjunto por probabilidad,
por medio de una muy compacta representación, pero arriesgando una pequeña
probabilidad de falsos positivos en interrogantes. Sin embargo, casi ninguna de estas
estructuras de datos ofrece operaciones de conjuntos como de unión o de intersección
de manera fiable

Você também pode gostar