INTRODUCCIÓN A PROLOG



Documentos relacionados
MATERIAL 2 EXCEL 2007

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Universidad Católica del Maule. Fundamentos de Computación Especificación de tipos de datos ESPECIFICACIÓN ALGEBRAICA DE TIPOS DE DATOS

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

ESPOCH ESCUELA DE MEDICINA HERNANDEZ MAYRA FORMULAS Y DUNCIONES BASICAS ESPOCH

Guía para realizar trabajos universitarios

OBJETIVOS GENERALES DEL AUDITOR INDEPENDIENTE Y CONDUCCIÓN DE UNA AUDITORÍA, DE ACUERDO CON LAS NORMAS INTERNACIONALES DE AUDITORÍA

MLM Matemática Discreta

PROLOG Inteligencia Artificial Universidad de Talca, II Semestre Jorge Pérez R.

Reglas del juego. 2 o más jugadores

Lección 24: Lenguaje algebraico y sustituciones

Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

Modulo 1 El lenguaje Java

2.3 El Mundo de Tarski.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES)

Capítulo 4 PROLOG 4.1 Introducción

IIC Matemática Discreta

Una desigualdad se obtiene al escribir dos expresiones numéricas o algebraicas relacionadas con alguno de los símbolos

Centro de Capacitación en Informática

Oprime click para iniciar

Ejercicio Nº 3: Realizar aumentos en una Tabla de Sueldos

GUÍA DE USUARIO PARA EL AVISO DE PRÉSTAMOS, APORTACIONES PARA FUTUROS AUMENTOS DE CAPITAL O AUMENTOS DE CAPITAL RECIBIDOS EN EFECTIVO 86-A

INTRODUCCION A LA LÓGICA DE ENUNCIADOS

Impress : Programa de presentaciones de OpenOffice.

Matrices Invertibles y Elementos de Álgebra Matricial

Manual de usuario Sucursal Virtual

Introducción. Paradigma de Lógica Gran importancia en la I.A. Origen: prueba de teoremas y razonamiento deductivo. Lógica.

LABORATORIO Nº 3 PRÁCTICA DE FUNCIONES EN MICROSOFT EXCEL

Inteligencia Artificial II. Razonamiento con ontologías

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Tema 3. Espacios vectoriales

Que es Velneo vdataclient V7?

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS

Una publicación de la Oficina de Información al Consumidor CALL-FCC (voz), TELL-FCC (TTY)

Capítulo 1: Fundamentos: Lógica y Demostraciones Clase 1: Lógica Proposicional

OPERACIONES CON POLINOMIOS

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

EDWIN KÄMMERER ORCASITA INGENIERO ELECTRÓNICO

OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)

Elementos de Microsoft Word

Informática I Notas del curso

5- Uso de sentencias avanzadas

Trabajo Semanal Alternativo

Hacer campos de solo lectura en ventanas.

Ahora podemos comparar fácilmente las cantidades de cada tamaño que se vende. Estos valores de la matriz se denominan elementos.

UNIDAD EJECUTORA DE CONSERVACION VIAL MANUAL DEL USUARIO DEL SISTEMA INTEGRAL DE CONTROL DE PROYECTOS

Módulo 9 Sistema matemático y operaciones binarias

Construcción de Escenarios

Control de Inventarios SisMod

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

Cómo restaurar la copia de seguridad de un curso en Moodle?

Tema 1: Fundamentos de lógica, teoría de conjuntos y estructuras algebraicas: Apéndice

Instrucciones para la familiarización de los alumnos con el instrumento de evaluación de EECL (ES)

SIIT SISTEMA INFORMÁTICO DE INSPECCIONES DE TRABAJO. Modulo de Planificación Manual de Usuario

MANUAL DE USUARIOS DEL MODULO DE EVALUACIÓN DE DESEMPEÑO SISTEMA DE ADMINISTRACIÓN DE SERVIDORES PÚBLICOS (SASP)

MANUAL DE USUARIO. Sistema Administrativo XENX ERP. Modulo Suministros Almacén Requisición Compras Proveedores

Menús. Gestor de Menús

PROYECTO DE LA REAL ACADEMIA DE CIENCIAS Estímulo del talento matemático

INSTRUCTIVO WINK PARTE I: PRIMEROS PASOS CON WINK

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Su éxito se mide por la pertinencia y la oportunidad de la solución, su eficacia y eficiencia.

3.2 Operaciones aritmético-lógicas en Pascal

Capítulo 4 Procesos con estructuras de repetición

Información sobre la configuración de una aplicación para transmitir datos ASCII por puerto serie, con pantallas terminales Magelis.

MANUAL DE USO DEL SISTEMA

Operación de Microsoft Excel. Guía del Usuario Página 79. Centro de Capacitación en Informática

Módulo II - PowerPoint

Dividir automáticamente las palabras en todo un documento

2. Doctores 2.1. Dar de alta un doctor 2.2. Buscar un doctor 2.3. Editar un doctor 2.4. Borrar un doctor

MANUAL DEL SISTEMA DE INFORMACIÓN DE EXPEDIENTES DEL GOBIERNO DE LA CIUDAD DE SANTA FE

LINUX - Los archivos de órdenes I

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Mantenimiento Limpieza

AUTOR CARLOS EDUARDO BUENO VERGARA JORGE ARMANDO BUENO VERGARA USO DE LOS OBJETOS DEL PROGRAMA. Dfd INFORMÁTICA II PROFESOR. JOSÉ FRANCISCO AMADOR

PRÁCTICA N 2 SISTEMAS DE NUMERACIÓN

SISTEMA InfoSGA Manual de Actualización Mensajeros Radio Worldwide C.A Código Postal 1060

Operación Microsoft Access 97

Programa Tracker : Cómo generar Vectores y sumarlos

MANUAL DE PRACTICUM12 PARA CENTROS EDUCATIVOS ÁMBITO MÁSTER

SISTEMA DE APARTADO DE SALAS PARA EVENTOS

Significado de las f.b.f (fórmulas bien formadas) en términos de objetos, propiedades y relaciones en el mundo

MANUAL DE USUARIO REGISTRO DE PRODUCTOR DE BIENES NACIONALES DILIGENCIAMIENTO Y ENVIO DEL FORMULARIO REGISTRÓ DE PRODUCTOR DE BIENES NACIONALES

Guía de sesión de resolución de problemas AgentCubes.

Profesorado de Informática Ciencias de la Computación INET- DFPD Matemática I - Matemática Discreta usando el computador Ing. Prof.

Instrucción IrA (GoTo). Saltos no naturales en el flujo normal de un programa. Pseudocódigo y diagramas de flujo. (CU00182A)

Lógica Proposicional IIC2212. IIC2212 Lógica Proposicional 1 / 56

MANUAL DE USUARIO PARA LA DECLARACIÓN INFORMATIVA DE OPERACIONES CON TERCEROS. Versión 1.1.5

sábado, 21 de agosto de Escriba la fecha con la que el sistema iniciará. CAPTURA DE INVENTARIOS EN MULTILAN

Ahora comencemos!... Las operaciones matemáticas fundamentales pueden realizarse de forma rápida y sencilla con Miicrosofftt Excell.

FIVB BEACH VOLLEYBALL WORLD TOUR PROTOCOLO DE EQUIPO NO PRESENTADO Y EQUIPO INCOMPLETO 2006

El proceso de edición digital en Artelope y CTCE

BROKERMovil Online para SmartPhone Guía Rápida v1.0

La ventana de Microsoft Excel

Un juego curioso con conexiones interesantes

PHP y MySQL. Indice: Switch Bucles For While do...while

Seminario Profesional MS PROJECT MODULO 2: Introducción y organización de las tareas

Secretaría de Salud. Subsecretaria de Innovación y Calidad. Dirección General de Calidad y Educación en Salud

El palacio de la Alhambra: La primera expansión. El favor de los visires

Transcripción:

INTRODUCCIÓN A PROLOG Lenguaje declarativo (opuesto a procedimentales) basado en reglas de la lógica PROLOG = Programming in Logic Originado en Europa a principios de los 70 s por Alain Colmerauer (Universidad de Marsella, Francia) Programas en Prolog Hechos Reglas La información se extrae por medio de consultas

Proposiciones: HECHOS o Juan es un programador o El león es un mamífero programador(juan). mamifero(leon). Nótese que se anota primero el predicado y entre paréntesis el sujeto de la proposición SINTAXIS Variables: Mayúsculas. Constantes: Minúsculas. Cada afirmación debe terminar con un punto. No se aceptan constantes con espacios en blanco, en lugar de ello se usa el

guión bajo (_). P. ejem. primer_ministro. Los comentarios empiezan con el símbolo % RELACIONES o Juan es el padre de Miguel padre(juan, miguel). REGLAS Sentencias condicionales Si el león come carne, entonces es carnívoro carnivoro(leon):- comecarne(leon)

CONJUNCIONES Emplea el operador lógico AND Se utiliza la coma (, ) tia(x,y):-hermana(x,z),padre(z,y). Regla (Condición) AND DISYUNCIONES Emplea el operador lógico OR Se utiliza el punto y coma ( ; ) hijo(x,y):-padre(y,x);madre(y,x). Regla (Condición) OR

CONSULTAS No es necesario programar el mecanismo de búsqueda Utiliza la resolución en sus derivaciones (generalización del modus ponendo ponens junto con la unificación) P. ejem. lagarto(iguana). serpiente(vibora). mamifero(conejo). Las consultas pueden ser interactivas mediante el indicador de comandos (?-):?- lagarto(iguana). Una iguana es un lagarto? (Termine la expresión con punto) Yes. Respuesta de Prolog

?- Indicador que espera el sig. Comando?-serpiente(conejo). Un conejo es serpiente? no. Respuesta de Prolog Se pueden usar variables en las consultas:?- lagarto(x). Nombre de un lagarto (Note la X mayúscula) X=iguana Yes Respuesta de Prolog (Oprima ENTER para terminar la consulta o ESPACIO para buscar otra ocurrencia)

Otro ejemplo: pais(usa). pais(canada). pais(mexico). capital(usa,washington). capital(canada,ottawa). capital(mexico,cd_mexico). Consultas realizadas:?- pais(mexico).?- capital(canada,washington). no.?- pais(japon). no.?- pais(x). X=usa X=canada X=mexico

?- capital(canada,b). B=ottawa?- capital(r,washington). R=usa BACKTRACKING (RETROCESO) Las consultas pueden tener una o varias metas Consideremos el sig. ejemplo: compra(x,y):-sevende(y),gusta(x,y),bueno(y). sevende(vestido). sevende(sombrero). sevende(zapatos). gusta(jaime,zapatos). gusta(maria,vestido). gusta(maria,sombrero). bueno(sombrero). La regla compra tiene éxito si todas sus metas tienen éxito.

Prolog intenta satisfacer las metas de la consulta de izquierda a derecha y para cada meta va probando las cláusulas correspondientes 1er. Intento: compra(z,vestido):- sevende(vestido),gusta(z,vestido),bueno (vestido). Busca la cláusula para sustituir Z (de izq. a der.), teniendo a vestido como segundo argumento y encuentra gusta(maria,vestido) Se tiene ahora: compra(maria,vestido):- sevende(vestido),gusta(maria,vestido), bueno(vestido). La regla fracasa porque no hay regla que satisfaga bueno(vestido)

Esto no significa que compra(maria,vestido) haya fracasado, sino que se ha seleccionado una cláusula que no conduce a la solución. Por esa razón es necesario aplicar un retroceso (backtracking). 2o. Intento: compra(z,sombrero):- sevende(sombrero),gusta(z,sombrero), bueno(sombrero). Busca la cláusula para sustituir Z (de izq. a der.), teniendo a vestido como segundo argumento y encuentra gusta(maria,sombrero)

Se tiene ahora: compra(maria,sombrero):- sevende(sombrero),gusta(maria,sombrero, bueno(sombrero). La regla tiene éxito porque se hace una prueba satisfactoria a bueno(sombrero) ENTRADA Y SALIDA Se usa el comando write para desplegar un texto o una variable en la pantalla write( Hola ). saludo:- nl, tab(4),write( Hola ), nl, tab(20), write(x). Se usa el comando read para capturar desde el teclado

name:- write( Anote su nombre: ), read(nombre), nl, write( Hola ),write(nombre). Nótese que la variable Nombre inicia con mayúscula. ESTRUCTURAS Se pueden utilizar varios datos a la vez: nacimiento(pedro, fecha(23,ago,1970)).?- nacimiento(pedro, X). X=fecha(23, ago, 1970)

Consultas de todas las personas nacidas en Agosto:?- nacimiento(x, fecha(y, ago, Z)). X=pedro ARITMÉTICA Se usa el predicado is?- X is 3+4 X=7 Uso de operaciones aritméticas en predicados: suma(a, B, C):- C is A + B.?- suma(3, 4, 7).?- suma(3, 4, X). X=7

CICLOS En Prolog, casi no se usan ciclos, en lugar de ellos se aplica recursividad; sin embargo, se pueden implementar. P. ejem. Para imprimir los numeros del 1 al 10 se usa lista(m, N):- M<N, nl, write(m), NuevoM is M+1, lista(nuevom, N). LISTAS En Prolog no hay matrices, en su lugar se usan Listas. [maria, javier, juan] [] %lista vacía

CABEZA Y COLA DE LISTAS Si se tiene la lista [a, b, c, d], la a es la cabeza y la cola es la lista [b, c, d] Una lista cuya cabeza es A y cola es B se anota como [A B] El predicado primer_elemento(x, [X _]). tiene éxito si X es el primer elemento de la lista.

IMPRIMIR LOS ELEMENTOS DE UNA LISTA Si la lista no está vacía, primero se imprime la cabeza y luego la cola: imprimir( [A B] ):- write(a), imprimir(b). AGREGAR ELEMENTOS A UNA LISTA Este predicado tiene tres listas: A, B y C, donde A y B se fusionan en el mismo orden y generan C: agregar([a ColaA], B,[A,ColaC]):- agregar(colaa, B, ColaC).

LA NEGACIÓN COMO FRACASO El predicado \+ tiene éxito sólo si fracasa su argumento. Considere los siguientes hechos: roja(rosa). verde(hierba). blanca(margarita). Suponga la siguiente consulta:?- roja(amapola). no. Esto no significa que las amapolas no sean rojas, sino que no hay hechos que lo confirmen. O sea que?- \+roja(amapola).?- \+roja(rosa). no.

CORTES Es un predicado que cuando se invoca detiene las inferencias y fija las decisiones tomadas hasta ese momento. Impide el retroceso Se denota por el símbolo! No se puede rehacer ninguna meta que precede al corte Sólo se permite el retroceso a las metas ubicadas después del corte melodia(x):- la(x),!, re(x), mi(x). Una vez que la(x) tiene éxito, se hace el corte y esto fija todas las opciones. No se puede rehacer la(x)

Cualquier otra meta que tenga el predicado melodia(x) se excluirá de las consideraciones posteriores LAS LISTAS COMO EXPRESIONES LÓGICAS Representación de operadores lógicos como listas La negación se puede representar como una lista de dos elementos: la palabra neg y una expresión lógica. Las conjunciones, disyunciones, implicaciones y equivalencias se pueden representar como una lista de tres

elementos: el alcance izquierdo, la conexión lógica y el alcance derecho. Definiciones: 1. Conexiones binarias 2. Constantes lógicas 3. Variables lógicas 4. Si A es una expresión 5. Si A y B son expresiones y Con es una and, or, then, iif v y f Son expresiones [neg, A] también lo es [A, Con, B] es una expresión conexión lógica

Dichas definiciones se pueden traducir a Prolog y hacerse ejecutables. Se abrevian constantes lógicas (clog), variables lógicas (vlog), conexión binaria (conbi) y expresiones (expr). Se supone que las variables lógicas son p, q, r y s. El programa queda de la sig. forma: conbi(and). conbi(or). conbi(then). conbi(iif). clog(v). clog(f). vlog(p). vlog(q). vlog(r). vlog(s). expr(x):-clog(x). expr(x):-vlog(x). expr( [neg, A] ):-expr(a). expr( [A, Con, B] ):-expr(a), conbi(con), expr(b).

Para probar las expresiones y verificar que estén bien formadas: p & (q r)?- expr( [p, and, [q, then, [neg, r]]]). EVALUACIÓN DE EXPRESIONES LÓGICAS Se supone que todo aquello que no se pueda demostrar que es cierto, se considera falso por definición.

Consideraciones: 1. La constante lógica v es verdadera 2. Existe una lista de variables lógicas, todas las cuales son ciertas por definición. 3. [neg, A] es cierto si A es falsa. 4. [A, and, B] es cierto si A es cierto y B es cierto. 5. [A, or, B] es cierto si A es cierto. 6. [A, or, B] es cierto si B es cierto. 7. [A, then, B] es cierto si A no es cierto. 8. [A, then, B] es cierto si B es cierto. 9. [A, iif, B] es cierto si [A, then, B] y [B, then, A] son ciertos.

Suponemos que q y r son ciertas y todas las demás variables son falsas: true(q). true(r). true( [neg, A] ):-\+(true(a)). true( [A, and, B] ):-true(a), true(b). true( [A, or, B] ):-true(a). true( [A, or, B] ):-true(b). true( [A, then, B] ):-true(b). true( [A, then, B] ):-\+(true(a)). true( [A, iif, B] ):-true( [A,then,B]), true([b, then, A]).

EL PREDICADO ASSERT Este predicado toma un argumento que debe ser instanciado a una cláusula. Agrega un hecho a la base de conocimiento. Tiene dos variantes: asserta(x) coloca la cláusula instanciada a X antes de otra cláusula del mismo predicado assertz(x) coloca la cláusula instanciada a X después de otra cláusula del mismo predicado?- asserta(hombre(juan)).?- hombre(x). X=juan.

EL PREDICADO RETRACT Este predicado toma un argumento que debe ser eliminado de una cláusula. Elimina un hecho de la base de conocimiento.?- asserta(hombre(juan)).?- asserta(hombre(pedro)).?- hombre(x). X=juan; X=pedro?- retract(hombre(juan)).?- hombre(x). X=pedro

EJERCICIO Elabore un programa en Prolog con su árbol genealógico, donde los hechos sean únicamente predicados del tipo padre (-, -) ó madre (-, -) Programe los predicados con las reglas necesarias para encontrar las relaciones de parentesco más comunes, tales como: a) hermano(a,b). b) primo(a,b). c) tio(a,b). d) hijo(a,b). e) nieto(a,b). f) abuelo(a,b). g) bisabuelo(a,b). h) bisnieto(a,b). i) cuñado(a,b). j) concuño(a,b). k) etc.