Upload
don-angel-epifanio
View
229
Download
1
Embed Size (px)
DESCRIPTION
ds
Citation preview
LISTAS Y ESTRUCTURAS COMPLEJASMartinez Gutirrez Yael Isay. Alvarado Torres Armando .Garca Ramrez Marcos David.Macario Vzquez Elas Zaid .Lpez 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.Nos indican el inicio y final de una lista: []
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.
4.7 Manejo del contenido de las listas
miembro(Elem,Lista)el termino Elem pertenece a Listamiembro(X,[X|_]).miembro(X,[_|Y]) :- miembro(X,Y).
nel(Lista,N)el numero de elementos de la lista Lista es Nnel([],0).nel([X|Y],N) :- nel(Y,M), N is M+1.
es_lista(Lista)Lista es una listaes_lista([]).es_lista([_|_]).
concatena(L1,L2,L3)concatenacion de las listas L1 y L2 dando lugar a la lista L3concatena([],L,L).concatena([X|L1],L2,[X|L3]) :- concatena(L1,L2,L3).
ultimo(Elem,Lista)Elem es el ultimo elemento de Listaultimo(X,[X]).ultimo(X,[_|Y]) :- ultimo(X,Y).
inversa(Lista,Inver)Inver es la inversa de la lista Listainversa([],[]).inversa([X|Y],L) :- inversa(Y,Z), concatena(Z,[X],L).
borrar(Elem,L1,L2)se borra el elemento Elem de la lista L1 obteniendose la lista L2borrar(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 L2subconjunto([X|Y],Z) :- miembro(X,Z),subconjunto(Y,Z).subconjunto([],Y).
insertar(Elem,L1,L2)se inserta el elemento Elem en la lista L1 obteniendose la lista L2insertar(E,L,[E|L]).insertar(E,[X|Y],[X|Z]) :- insertar(E,Y,Z).
permutacion(L1,L2)la lista L2 es una permutacion de lista L1permutacion([],[]).permutacion([X|Y],Z) :- permutacion(Y,L),insertar(X,L,Z).
4.8: Ejercicio 10
GRACIAS POR SU ATENCIN.