Listas en prolog
Las listas son estructuras de datos muy poderosas para almacenar y manipular conjunto de términos. Se trata de un par ordenado donde cada componente es un término, una lista o eltérmino NIL (que es la lista vacía y se escribe []). La primer componente de la lista se llama cabeza de la lista y la segunda cola.
Estructura de una lista
Una lista en Prolog (como en casicualquier lenguaje que use listas) se divide en dos partes:
Cabeza. Es el primer elemento de la lista. Puede ser un átomo o una lista, pero a fin de cuentas es el primer elemento de la lista original.Cola. Es el resto de los elementos de una lista, es de nuevo una lista.
Ejemplos:
(1) L=[perro, gato, raton, queso]
(a) cabeza= perro
(b) cola=[gato, raton, queso]
(2) L=[[perro, gato], [raton,queso]]
(a) cabeza=[perro, gato]
(b) cola=[[raton, queso]]
(3) L=[perro]
(a) cabeza=perro
(b) cola=[] la lista vacía
(4) L=[]
(a) cabeza= NO
(b) cola=[] la lista vacía
Manejo del contenido delas listas
Se destaca el uso de las listas para determinar la existencia de un elemento en la lista e incluso el uso de recursividad.
En primer lugar, la existencia de un elemento en la lista sepuede verificar con una regla como: pertenece(E,L):-L=[E| ]. Que dice que el elemento E pertenece a la lista L si L se puede hacer teniendo una lista cuya cabeza sea E y cualquier cola, incluso la listavacía.
Pero esto solamente nos asegura la pertenencia de la cabeza de la lista, no si un elemento está dentro de ella. Para esto se necesita una segunda cláusula recursiva: pertenece(E,[|T]):-pertenece(E,T). Es decir “un elemento E pertenece a una lista compuesta de cualquier cabeza y una cola T, si ese mismo elemento E es la cabeza del resto de la lista T”.
Así se tiene el siguiente programa enProlog que verifica la pertenencia de un elemento en una lista:
pertenece(E,L):-L=[E|_].
pertenece(E,[_|T]):-pertenece(E,T).
:-pertenece(E,[a,b,c,d,e].)
Uso de la pertenencia para definir otras...
Regístrate para leer el documento completo.