Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEMANA 7
1
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
ÍNDICE
Introducción .................................................................................................................................. 3
Aprendizaje Esperado ................................................................................................................... 3
Conjuntos y Estructuras de Datos ................................................................................................. 4
Implementación mediante Arreglos ............................................................................................. 5
Notas a esta implementación ................................................................................................... 5
Definición del Tipo de Datos ..................................................................................................... 6
Definición del Conjunto Vacío ................................................................................................... 6
Pertenencia a un Conjunto........................................................................................................ 6
Unión de Conjuntos................................................................................................................... 7
Intersección de Conjuntos......................................................................................................... 7
Diferencia de Conjuntos ............................................................................................................ 8
Subconjuntos............................................................................................................................. 8
Igualdad de Conjuntos .............................................................................................................. 9
Conclusiones de esta Implementación ..................................................................................... 9
Implementación mediante Lista Enlazada .................................................................................... 9
Notas a esta implementación ................................................................................................. 10
Definición del Tipo de Datos ................................................................................................... 11
Definición del Conjunto Vacío ................................................................................................. 11
Pertenencia a un Conjunto...................................................................................................... 12
Intersección de Conjuntos....................................................................................................... 12
Subconjuntos........................................................................................................................... 13
Igualdad de Conjuntos ............................................................................................................ 13
Conclusiones de esta Implementación ................................................................................... 14
Bibliografía .................................................................................................................................. 15
2
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
INTRODUCCIÓN
En este capítulo se trabajará en función de la aplicación de estructuras de datos particulares al
trabajo con un área más tangible de las matemáticas, como lo es la Teoría de Conjuntos. A
través de dicha aplicación, se relacionarán algunas de las estructuras quizás más importantes
de dominar, de aquellas hasta ahora vistas el Arreglo y las Listas Enlazadas, con dicha teoría.
Para esto se aplicarán sencillas rutinas en C, a través de las cuales quedará clara la relación
entre ambas áreas de trabajo, a saber: las Matemáticas y la Computación.
Se implementarán, de esta manera, rutinas para definir diversas operaciones con conjuntos,
tales como: conjuntos vacíos, pertenencia a un conjunto, unión e intersección de conjuntos,
diferencia, subconjuntos e igualdad de conjuntos. Terminaremos este capítulo con algunas
conclusiones importantes respecto del trabajo realizado.
APRENDIZAJE ESPERADO
Se espera que al final de esta clase el alumno sea capaz de interpretar las operaciones básicas
con conjuntos e identificar asimismo sus propiedades fundamentales mediante la
representación de estructuras de datos a través de su implementación en un lenguaje de
programación.
3
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
CONJUNTOS Y ESTRUCTURAS DE DATOS
Este apartado trata en su esencia de aquel concepto fundamental de las matemáticas básicas
que todos conocemos, los Conjuntos. Por agregación, los conjuntos también son una de las
estructuras básicas de la informática.
Así por ejemplo, las estructuras de datos vistas hasta el momento son algo más que elementos
de un mismo tipo agrupados de manera aleatoria, son elementos entre los cuales existe una
determinada relación. El ejemplo más claro visto hasta ahora son las Listas Ordenadas, las
cuales contienen elementos “ordenados” entre sí. Sin tomar en cuenta las restricciones
impuestas por las propias estructuras estudiadas, sus elementos conforman conjuntos, con
una cardinalidad definida ya sea por la estructura, por las necesidades del procedimiento o del
conjunto de datos involucrados.
La única restricción básica que se reflejará desde los conjuntos en las implementaciones que se
muestran en adelante y sólo por una cuestión de claridad en la exposición, será la no
existencia de elementos repetidos, excepto en el caso de la intersección de conjuntos.
Sin embargo, no se debe deducir de lo anterior que dichas operaciones no son aplicables a
otro tipo de estructuras de datos, pasando su adecuada implementación sólo por un acabado
estudio y entendimiento de la estructura en particular y su correcta implementación a través
de un lenguaje de programación.
Para cada una de las implementaciones propuestas, se trabaja en cada caso en diferente
medida con algunas de las operaciones básicas en el ámbito de los Conjuntos, tales como:
4
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
IMPLEMENTACIÓN MEDIANTE ARREGLOS
En el siguiente arreglo se guardarán los datos en forma contigua dentro de él, tal como lo
haríamos en una lista. Para ello, se supondrá el conjunto:
0 1 2 3 4
1 2
Para toda implementación y según la Teoría de Conjuntos, un conjunto vacío es aquel cuya
cardinalidad es igual a cero.
• En este sentido, la representación de los elementos del conjunto es limitada, dado que su
objetivo es mostrar el tipo de datos con el que se va a trabajar.
• En la implementación de las primitivas, dada la eficiencia del método, se asume que las
estructuras son pasadas por referencia.
5
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
DEFINICIÓN DEL TIPO DE DATOS
PERTENENCIA A UN CONJUNTO
6
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
UNIÓN DE CONJUNTOS
Para unir A y B en un tercer conjunto C, incluimos todos aquellos elementos de A más todos
aquellos elementos de B que no se encuentren en A.
INTERSECCIÓN DE CONJUNTOS
7
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
DIFERENCIA DE CONJUNTOS
Para restar A-B se recorre todo A. Todos aquellos elementos de A que no se encuentren en B
se insertan en un tercer conjunto (o arreglo) C.
SUBCONJUNTOS
8
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
IGUALDAD DE CONJUNTOS
Si se define el cardinal del conjunto A como |A| y de un conjunto B como |B|, todas aquellas
operaciones que involucran los dos conjuntos, tales como unión, intersección, etcétera,
presentan una complejidad del orden de O(|A| x |B|). Del mismo modo, se puede indicar que
la operación de pertenencia de un elemento cualquiera de dichos conjuntos es del orden de
O(|A|) u O(|B|).
Se debe suponer también que en este caso existe una relación específica de orden entre los
elementos del conjunto y que, por lo mismo, se pueden diferenciar elementos mayores de
elementos menores. También se aceptará que al insertar o eliminar elementos, la lista se
mantiene ordenada. Lo anterior supone una gran ventaja, ya que para cualquier operación
9
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
sobre las listas de cada conjunto a operar, se debe hacer un único recorrido a fin de identificar
cada uno de sus elementos. Así, las operaciones de búsqueda, inserción y eliminación de
elementos tienen una ejecución en un tiempo del orden de O(|A|), siendo |A| el cardinal o
número de elementos del conjunto A.
Implementando un algoritmo del tipo Fusión de Listas Ordenadas, operaciones tales como la
unión o la intersección de conjuntos se logran a través de la realización de pequeñas
variaciones al algoritmo de intercalación de elementos.
En este caso en particular, las operaciones básicas que se verán en el ámbito de los Conjuntos
son:
Dado lo anterior, quedan propuestas –a modo de ejercicio– las siguientes operaciones con
Conjuntos en su implementación mediante Listas Enlazadas: Unión y Diferencia de Conjuntos.
• Los punteros definidos para recorrer las listas c1 y c2 corresponden a los conjuntos A y
B respectivamente.
• Los punteros auxiliares aux y c3 serán utilizados en la creación del conjunto resultante
C.
10
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
DEFINICIÓN DEL TIPO DE DATOS
Como se puede ver en el código anterior, se utiliza en esta implementación con Listas
Enlazadas, una con cabecera ficticia y centinela para facilitar las operaciones de inserción y
búsqueda de elementos dentro del conjunto.
Esta operación se realiza inicializando en cero el cardinal del conjunto y se reserva de paso la
memoria necesaria para alojar la cabecera y el centinela de la lista.
11
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
PERTENENCIA A UN CONJUNTO
INTERSECCIÓN DE CONJUNTOS
Se sabe que la intersección entre dos conjuntos corresponde a todos aquellos elementos que
pertenecen tanto a uno como al otro conjunto de datos estudiados. Por lo tanto:
12
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
La rutina añade un elemento que es común a los conjuntos A y B al conjunto C, cada vez que
esta coincidencia es detectada (c1->elem == c2->elem).
SUBCONJUNTOS
Se sabe que un conjunto cualquiera (A) es subconjunto de otro (B) cuando todos sus
elementos son, a su vez, elementos de este último conjunto (B). Por lo tanto:
IGUALDAD DE CONJUNTOS
Sabiendo que, como lo hemos definido anteriormente, un conjunto (A) es igual a otro (B) si
ambos conjuntos contienen exactamente los mismos elementos, entonces:
13
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
La rutina devuelve TRUE al programa si se verifica dicha condición. Para esto se comprueba en
primera instancia, la cardinalidad de los conjuntos A y B.
Si se define el cardinal del conjunto A como |A| y de un conjunto B como |B|, todas aquellas
operaciones que involucran los dos conjuntos, tales como unión, intersección, igualdad de
conjuntos, etcétera, se ejecutarán en un tiempo del orden de O(|A| + |B|).
El espacio máximo ocupado por un conjunto cualquiera de elementos es, obviamente, |A|.
Puede acotarse que este espacio es proporcional al implementado a través de un Arreglo, pero
esta vez multiplicado por la constante que significa la utilización de punteros.
14
| ESTE DOCUMENTO CONTIENE LA SEMANA 7
BIBLIOGRAFÍA
- Alfred V. Aho, John E. Hopcroft, Jefrey D. (1988). Estructuras de datos y algoritmos.
México, DF: Addison-Wesley. Iberoamericana: Sistemas Técnicos de Edición.
15
| ESTE DOCUMENTO CONTIENE LA SEMANA 7