Vous êtes sur la page 1sur 27

LISTAS Y

ESTRUCTURAS
COMPLEJAS
Martinez

Gutirrez Yael Isay.

Alvarado

Torres Armando .

Garca

Ramrez Marcos David.

Macario
Lpez

Vzquez Elas Zaid .

Ferreira Cynthia Valeria.

4.1 Listas en Prolog


Las listas son estructuras de datos muy poderosas para
almacenar y manipular conjunto de trminos. Se trata de
un par ordenado donde cada componente es un trmino,
una lista o el trmino NIL (que es la lista vaca y se
escribe []). La primer componente de la lista se llama
cabeza de la lista y la segunda cola.

4.2 La estructura de las listas

Estructura bsica:
En prolog, una lista es una representacin de un conjunto de
elementos.

La notacin es la siguiente:
[manzana, pera, banana]

lista vacia: [ ]

Se pueden utilizar cmo elementos de la lista cualquier tipo de dato de


prolog, incluyendo listas: [[a,b,c],[d, e, f]]

Tambin estructuras prolog:


[camino(tandil, bsas), camino(mardel, tandil), camino(bsas,junin) ]
[vehiculo(ale, [bici, moto, auto]), vehiculo(ariel,[bici, auto,
helicoptero])]

En su forma ms bsica, una lista se puede ver como un predicado que


tiene 2 partes:
lista(cabeza, cola)
en prolog:
[Cabeza | Cola]

Por ejemplo:
[Cabeza | Cola]=[1,2,3] [1] = [1|[ ]] Cabeza=1, Cola=[2,3]

Es una definicin recursiva...


[1,2,3] = [1 | [ 2 , 3 ] ] = [1 | [ 2 | [3 ] ] ] = [1 | [ 2 | [3 | [ ] ] ] ]

Para probar:
?-X=[1,2,3],X = [1 | [ 2 , 3 ] ],
X = [1 | [ 2 | [3 ] ] ],X = [1 | [ 2 | [3 | [ ] ] ] ] .

4.5: Ejercicio de Uso de las Listas y su Notacin.

Una Lista en Prolog se Divide en dos Partes:


Cabeza: Es el Primer Elemento de la Lista.
Cola: Es el Resto de los Elementos de una Lista

Ejemplo 1:
len, tigre, lince, puma.
Cabeza: len.
Cola: tigre, lince, puma.
Ejemplo 2:
Juan.
Cabeza: juan.
Cola: lista vaca.

Ejemplos:
(1) L=[perro, gato, ratn, queso]
(a) cabeza= perro
(b) cola=[gato, ratn, queso]
(2) L=[[perro, gato], [ratn, queso]]
(a) cabeza=[perro, gato]
(b) cola=[[ratn, queso]]
(3) L=[perro]
(a) cabeza=perro
(b) cola=[] la lista vaca
(4) L=[]
(a) cabeza= NO
(b) cola=[] la lista vaca

4.6 Incorporacin de Estructura de Datos mas Complejas a las Listas

La estructura de esta lista es mas compleja porque se piden


mas elementos los cuales podrn llevar uno o mas
predicados.
En el ejemplo anterior se
encuentran 2 predicados
1 con el apellido del
empleado y el segundo
nos muestra un listado
de los detalles acerca del
empleado.

Nos indican el inicio y final de una lista: []

4.7 Manejo del contenido de las


listas

miembro(Elem,Lista)
el trmino Elem pertenece a Lista

miembro(X,[X|_]).

miembro(X,[_|Y]) :- miembro(X,Y).

nel(Lista,N)
el numero de elementos de la lista Lista es N

nel([],0).

nel([X|Y],N) :- nel(Y,M),

N is M+1.

es_lista(Lista)
Lista es una lista

es_lista([]).

es_lista([_|_]).

concatena(L1,L2,L3)
concatenacin de las listas L1 y L2 dando lugar a la lista L3

concatena([],L,L).

concatena([X|L1],L2,[X|L3]) :- concatena(L1,L2,L3).

ultimo(Elem,Lista)
Elem es el ultimo elemento de Lista

ultimo(X,[X]).

ultimo(X,[_|Y]) :- ultimo(X,Y).

inversa(Lista,Inver)
Inver es la inversa de la lista Lista

inversa([],[]).

inversa([X|Y],L) :- inversa(Y,Z),

concatena(Z,[X],L).

borrar(Elem,L1,L2)
se borra el elemento Elem de la lista L1
obtenindose la lista L2

borrar(X,[X|Y],Y).

borrar(X,[Z|L],[Z|M]) :- borrar(X,L,M).

subconjunto(L1,L2)
la lista L1 es un subconjunto de lista L2

subconjunto([X|Y],Z) :- miembro(X,Z),
subconjunto(Y,Z).

subconjunto([],Y).

insertar(Elem,L1,L2)
se inserta el elemento Elem en la lista L1
obtenindose la lista L2

insertar(E,L,[E|L]).

insertar(E,[X|Y],[X|Z]) :- insertar(E,Y,Z).

permutacion(L1,L2)
la lista L2 es una permutacin de lista L1

permutacion([],[]).

permutacin([X|Y],Z) :- permutacion(Y,L),

insertar(X,L,Z).

4.8: Ejercicio 10

GRACIAS POR
SU ATENCIN

Vous aimerez peut-être aussi