Introducción a PROLOG
Enviado por cabetO82 • 8 de Septiembre de 2013 • Trabajo • 1.228 Palabras (5 Páginas) • 333 Visitas
Introducción a PROLOG
Contenido:
1. Generalidades sobre Prolog.
1. Formas Mínimas en Prolog.
2. Las Relaciones.
3. Predicados, Hechos y Reglas.
4. Listas.
2. Práctica 0.
3. Práctica 1.
4. Práctica 2.
5. Práctica 3.
6. Práctica 4.
7. Vínculos.
GENERALIDADES SOBRE PROLOG:
La programación lógica surge hacia 1979 donde Kowalski establece el enunciado del patrón de programación lógica:
Algoritmo + lógica + control
La programación lógica involucra:
El uso de hechos y reglas y la construcción de deducciones para procesar consultas.
Formas Mínimas en Prolog:
Corresponden a las formas más sencillas de información manipulada por Prolog:
1. Los átomos de información.: una cadena de texto que empieza por letra minúscula o un valor numérico con signo opcional
2. Las variables: Son cadenas de texto que empiezan por una letra mayúscula o por el signo _ (underscore).
Las Relaciones:
Con las formas mínimas anteriormente descritas se pueden construir las relaciones, base del conocimiento en Prolog.
Ejemplos de relaciones:
padre(pepe, maria). // en esta relación se denota una existencia de parentesco entre pepe y maria, prolog en este punto no conoce
//quien es el padre de quien, somos nosotros quienes le damos esa interpretación, prolog solamente se encarga de
//crear una relación en su base del conocimiento.
Obsérvese la sintaxis de la relación descrita:
• Nótese que los nombres de las personas empiezan por letras minúsculas indicando que son átomos de información y variables.
• El nombre de la relación es también un átomo de información y no debe ser una cantidad numérica.
• Número de objetos relacionados: sin son cero irán entre paréntesis y si son mas de uno, irán separados por comas.
• Los hechos terminan siempre en punto. (.)
Al tener por ejemplo dentro de nuestra base del conocimiento, los siguientes hechos:
sucesor(1,2).
sucesor(2,3).
sucesor(3,4).
sucesor(4,5).
sucesor(5,6).
sucesor(6,7).
Podemos realizar consultas como las siguientes:
sucesor(X,6).
sucesor(2,Y).
sucesor(X,Y).
Nótese como los átomos de información que se desean consultar han sido remplazados por variables (letra inicial en mayúscula); en este punto Prolog busca dentro de su base del conocimiento un hecho que haga emparejamiento con la información suministrada en la consulta. Primero, busca una predicado (nombre de la relación) llamado sucesor, luego hace una comparación entre la información que se tiene (6), para llenar la variable X con la información almacenada en el hecho, así, prolog responde X=5. De la misma forma ocurre con la segunda consulta; en la tercera no existe información para hacer emparejamiento en la base del conocimiento, por lo tanto el responderá con el primer hecho que tenga ese predicado.
Responderá:
X = 1
Y = 2;
En este punto tenemos dos opciones: quedar satisfechos con la respuesta que prolog nos ha suministrado oprimiendo enter o solicitarle consultas sobre otros posibles emparejamientos, para la cual debemos oprimir punto y coma (;).
Es también posible construir en prolog consultas complejas con los operadores AND(,), OR(;) y NOT(not) de la siguiente forma:
legusta(pepe,pesca).
legusta(maria,bailar).
legusta(ana,pesca).
legusta(pepe,musica).
legusta(maria,musica).
legusta(ana,bailar).
Se pueden realizar las siguientes preguntas sobre la base de información:
- ¿Le gusta la música a Pepe y a Maria? : ?-legusta(pepe,musica),legusta(maria,musica).
- ¿Le gusta bailar a Pepe o a Maria le gusta la música?: ?-legusta(pepe,musica);legusta(maria,musica).
- ¿Le gusta bailar a Pepe y a Maria no le gusta la música?: ?-legusta(pepe,musica),not(legusta(maria,musica)).
Para que estas consultas funcionen de forma adecuada es necesario no dejar espacios entre los operadores.
Predicados, Hechos y Reglas:
En este caso la relación padre(pepe, maria). se asume como un hecho, pues no está involucrando variables en su definición; al nombre de la relación se le llama predicado.
Mas formalmente un predicado es un conjunto de hechos o reglas que tienen un mismo nombre y la misma cantidad de objetos relacionados, si se trata de reglas, en nombre de la conclusión es el mismo y el número de objetos relacionados es también el mismo.
Una regla es una sola conclusión seguida por el signo :- el cual hace la vez de SI condicional, seguida por una o mas relaciones de condición.
Por ejemplo:
sucesor(1,2).
sucesor(2,3).
sucesor(3,4).
sucesor(4,5).
sucesor(5,6).
sucesor(6,7).
suma(1,X,R):-sucesor(X,R).
suma(N,X,R):-sucesor(M,N),suma(M,X,R1),sucesor(R1,R).
Aquí
...