Introducci6én
Se han estudiado los ntimeros y los simbolos y se han construido estructuras
4s complejas con estos elementos denominadas listas. En el presente capitulo
s Pages ni
mi uilizardn estructuras atin mas complejas, grupos de listas 0 bien fistas de
se
listas.
Laprincipal raz6n para utilizar estas nuevas estructuras es que nos permitiran
un mayor nivel de abstraccién. De esta forma se podran representar modelos de
datos més complejos tales como los conjuntos, vectores, matrices y drboles
Los conjuntos, vectores y matrices son estructuras muy usadas en matematica.
Los arboles son una representaci6n jerarquica muy utilizada en computacién.
Se estudiardn las técnicas de representacién y se desarrollardn algoritmos
que permitan construir nuevas abstracciones. Ademis se construirén procesos
para su creacién, modificacién y eliminacién.
Representacion de los conjuntos
El concepto de conjunto es fundamental en las matemdaticas. Un conjunto
¢s una coleccién de objetos. Estos objetos se suelen llamar los elementos del
conjunto.
Las listas se pueden utilizar para representar conjuntos matematicos. De esta
forma se utiliza la siguiente notaci6n. %
Para representar el conjunto vacio denominado en matemitica por el simbolo
} se utilizaré la lista nula denominada por( ).
{
_— ,6 _ Lntraduccion 4 la prosramaci
=e i
ra representar un conjunto cualquiera de la form:
fel. €2, ... EN}
se utilizard una lista de la forma:
(el e2 ... eN)
Al igual que con los eonjuntos matemiticos, los conjuntos en Sche
ME debe,
0
cumplir las siguientes condiciones.
a) No deben tener elementos repetidos.
b) No existe ninguna relacién de orden entre sus elementos.
¢) Por lo tanto, dos conjuntos son iguales si tienen los mismos elem
entos,
importar el orden en el que se encuentren. sin
Con la notacién definida un conjunto de la form:
} se escribird como ( ).
{a. b, c}se escribird (a b c).
{1. 2. 3, 4, 5} se escribiré como (1 2 3 4 5).
Tal como en matemética: —{1, 2, 3, 4, 5) es igual a (2, 3, 5, 4, 1)
En Scheme se supondré que: (1 2 3 4 5) es igual a (2.35 41)
Identificaci6n de conjuntos
Se construiré una funcién denominada (conjunto? lista). Esta funcién recibe
como argumento un conjunto y verifica que efectivamente sea un conjunto.
Basicamente debe revisar que no existan elementos repetidos. Debe producir
los siguientes resultados:
> (conjunto? ‘( ))
Ht
> (conjunto? ‘(a b c))
= ca
> (conjunto? ‘(a b ¢ de)
ater Seances
cmt
;
(conjunto? “(a bc cd e))
>
if
construir esta funcién Se pregunta primero si se trata de lista, en caso
soe recorte el Conjunto Y se verifica que cada elemento se eneuenne
gos camente und Vez en Ia epresentacin, Este proceso continua hasta
re ae con el timo elemento. A continuacién se presenta el céigo,
para
Determina si se recibe 0 no conjunto
Precondiciones:
conjunto: lista lineal
Identifica si una lista cumple
Jas condiciones para ser un conjunto
lista: una lista lineal de simbolos
(define (conjunto lista)
(cond ( (null? lista)
a)
((miembro? (car lista) (cdr lista))
#f)
(else
(conjunto (cdr lista)))))
Igualdad de conjuntos
Se construiré una funcién denominada (equal-set? conjl conj2). Esta funci6n
recibe como argumentos dos conjuntos, en caso que sean iguales devuelve
en valor de #t, en caso contrario devuelve el valor de #f. A continuacién se
presentan algunos ejemplos.
> (equal-set? *() ‘())
Ht
> (equal-set? “(1 2 3) “(1 2 3 4)
if
> (equal-set? ‘(1 2 3 4) “(1 23 5))
#f