27
LISTAS Y ESTRUCTURAS COMPLEJAS Martinez Gutiérrez Yael Isay. Alvarado Torres Armando . García Ramírez Marcos David. Macario Vázquez Elías Zaid . López Ferreira Cynthia Valeria.

4.-Listas y Estructuras Complejas en Prolog (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.