Programación Elemental con Bases de Datos y Programación El lenguaje Prolog



Documentos relacionados
Técnicas Básicas de Programación Prolog

Tema II El Lenguaje Lógico PROLOG

Tema III Predicados Extralógicos de PROLOG

1. Sintaxis de Prolog

Introducción al Cálculo Simbólico a través de Maple

Tema IV Programación lógica con estructuras

Módulo 9 Sistema matemático y operaciones binarias

U i n d id d a 3. El Element os á bá i s cos de un programa

3.1 Funciones de biblioteca

UNIDAD I Introducción. M.C. Juan Carlos Olivares Rojas

El Lenguaje de Programación PROLOG

FUNCIONES POLINÓMICAS

Distinguir las diferentes estructuras de repetición utilizadas en problemas con ciclos: mientras, haga-mientras, repita-hasta, para.

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Programación n declarativa: lógica y restricciones

Concepto de función. El subconjunto en el que se define la función se llama dominio o campo existencia de la función. Se designa por D.

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

Capítulo 4 PROLOG 4.1 Introducción

Oleksandr Karelin Carlos Rondero Guerrero Anna Tarasenko DESIGUALDADES Métodos de cálculo no tradicionales

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

INDICE. XVII Prólogo a la edición en español. XXI 1. Calculo proporcional 1.1. Argumentos y proporciones lógicas

Operadores lógicos y matemáticos en Visual Basic. Math. Comentarios en VB. Rem. Ejemplos. (CU00314A)

Cursada Primer Semestre 2015 Guía de Trabajos Prácticos Nro. 2

Complemento Microsoft Mathematics

Tema 2 : NÚMEROS ENTEROS. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

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

DERIVE también representa superficies en el espacio.

Números Reales. MathCon c

RELACIONES DE RECURRENCIA

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

FUNCIONES CUADRÁTICAS Y RACIONALES

Generador de hojas de cálculo de matemáticas

3.1. Concepto de función. Dominio, recorrido y gráfica Concepto de función

ACFGS - Matemáticas ESG - 05/2013 Pág. 1 de 17

OPERACIONES FUNDAMENTALES DEL ÁLGEBRA RELACIONAL. Bases de Datos Ingeniería de Sistemas y Computación Universidad Nacional de Colombia 2007

LENGUAJES DE CONSULTA ORIENTADOS A OBJETOS

Introducción a la Computación TFA

Tema 2. La Información y su representación

Ejemplos: Sean los conjuntos: A = { aves} B = { peces } C = { anfibios }

Resumen de Maxima. 1 Hoja de cálculo. 2 Operadores. 3 Constantes. 4 Números reales. 4.1 Funciones usuales. Página 1/6

MATEMÁTICAS para estudiantes de primer curso de facultades y escuelas técnicas

TEMA 8: LÍMITES DE FUNCIONES. CONTINUIDAD

Sistemas de Bases de Datos I. Modelo Lógico Modelo Relacional

Álgebra Matricial y Optimización Ma130

Tema 6: Programación Lógica: semántica declarativa. Lenguajes y Paradigmas de Programación

TEMA 10 FUNCIONES ELEMENTALES MATEMÁTICAS I 1º Bach. 1

1. Definición 2. Operaciones con funciones

INTRODUCCIÓN AL LENGUAJE PROLOG

Valores Booleanos Interpretación #t Cierto #f Falso

Estructuras de Datos y Algoritmos. Árboles de Expresión

MATEMÁTICAS CONTENIDOS MÍNIMOS DE 1º E.S.O.

Estructura de Datos. Unidad I Tipos de Datos

Formatos y Operadores

>> % suma de dos números reales, el resultado se asigna a ans

UNIDAD EDUCATIVA INTERNACIONAL SEK-ECUADOR PROGRAMA DE MATEMÁTICAS NM

Resolución de Problemas

3.1 DEFINICIÓN. Figura Nº 1. Vector

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

Caracteres alfanuméricos Las 26 letras del alfabeto inglés y los 10 dígitos decimales:

PROPIEDADES FUNCIONES PRINCIPALES

Clase 20: Arquitectura Von Neuman

1. Producto escalar, métrica y norma asociada

Juan Antonio González Mota Profesor de Matemáticas del Colegio Juan XIII Zaidín de Granada

DIRECTRICES Y ORIENTACIONES GENERALES PARA LAS PRUEBAS DE ACCESO A LA UNIVERSIDAD

Fundamentos de Informática Parte II Análisis y Visualización de Datos mediante Matlab

INTRODUCCIÓN A PROLOG

Operaciones en el Modelo Relacional. Relacional. Relacional. Índice. Lenguajes de Consulta

Máster Universitario en Ingeniería de Caminos, Canales y Puertos Introducción al Análisis Numérico

Cálculo Relacional. Bibliografía: Fundamentos de bases de datos Korth, Silberschatz

Aritmética finita y análisis de error

Sistemas de Computadoras Índice

Álgebra Relacional. Unidad 5

UN SIMULADOR DE UNA MAQUINA COMPUTADORA COMO HERRAMIENTA PARA LA ENSEÑANZA DE LA ARQUITECTURA DE COMPUTADORAS

José de Jesús Ángel Ángel, c Factorización

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

Definición de vectores

Seminario de Informática. Modulo V: Bases de Datos Elementos Conceptuales

Prácticas con ordenador. Álgebra lineal y cálculo. Grado en Óptica y Optometría. Práctica nº1

I. RELACIONES Y FUNCIONES 1.1. PRODUCTO CARTESIANO { }

Algoritmos y Diagramas de Flujo 2

FACULTAD DE INGENIERÍA FORESTAL EXCELENCIA ACADÉMICA QUE CONTRIBUYE AL DESARROLLO DE LAS CIENCIAS FORESTALES

7. Manejo de Archivos en C.

Introducción a la programación. Oscar Alejandro González Bustamante. José Víctor Martínez Ramos.

1. MANUAL - INTRODUCCIÓN AL USO DE DERIVE.

Ejercicios. 1. Definir en Maxima las siguientes funciones y evaluarlas en los puntos que se indican:

CAPÍTULO III. FUNCIONES

1. El vocabulario de un programa PROLOG

EJERCICIOS SOBRE : DIVISIBILIDAD

Funciones trigonométricas básicas. Propiedades básicas de las funciones trigonométricas: Seno, Coseno, Tangente, Cotangente, Secante y Cosecante.

INSTITUTO TECNOLÓGICO

De aquí sale el proyecto MACsyma (MAC s SYmbolic MAnipulator)

CIF 2452 Fundamentos de Programación

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

PROBLEMA [1.5 puntos] Obtener la ecuación de la recta tangente en el punto ( 2, 1) a la curva dada implícitamente por y 3 +3y 2 = x 4 3x 2.

Una base de datos es una colección de información ordenada e interrelacionada que es de importancia para una empresa.

AXIOMAS DE CUERPO (CAMPO) DE LOS NÚMEROS REALES

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

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Anterior Sistemas binarios: Aritmética binaria Siguiente ARITMÉTICA BINARIA. Operaciones elementales con números binarios

Transcripción:

Programación Elemental con Bases de Datos y Programación II.1 El lenguaje Prolog. II.2 Programación con bases de datos. II.3 Aspectos a tener en cuenta en la programación en Prolog II.4 Programación recursiva: Aritmética de los números naturales. II.5 Aritmética extra-lógica de Prolog. II.6 Predicados de entrada y salida en Prolog El lenguaje Prolog Mecanización del método de resolución SLD fijar la regla de selección de átomos del objetivo fijar la regla de búsqueda de cláusulas en la base de conocimiento incorporar backtracking para salir de las derivaciones fallidas Aumento de la expresividad del lenguaje incorporando facilidades extralógicas (manipulación de expresiones aritméticas) metalógicas (análisis y manipulación de elementos del lenguaje) Aprovechamiento de las capacidades de la máquina gestión de entradas y salidas 1

Programación con bases de datos. Relación de la Programación Lógica con las Bases de Datos Relacionales Dada una colección de dominios finitos D 1,...,D n, una base de datos relacional sobre estos dominios consistirá en un cierto número de relaciones R D i D 1 i p definidas sobre algunos de los dominios. Ejemplo: dados los dominios: HOMBRE, MUJER, PERSONA, se pueden definir las relaciones PADRE HOMBRE PERSONA MADRE MUJER PERSONA MARIDO HOMBRE MUJER cuya descripción se suele dar de forma extensiva mediante tablas. Programación Lógica Puede usarse para: la representación de bases de datos relacionales, representado en la base de conocimientos de un programa las relaciones de forma: explícita, mediante secuencias de hechos implícita, mediante secuencia de reglas la consulta mediante el planteamiento de objetivos que extraen información contenida en la base de datos. 2

Representación de dominios Predicados monarios para definir los tipos: mujer(agar). mujer(sara). mujer(rebeca). mujer(milka). mujer(yiska). y llamar a estos predicados donde se quiera limitar los valores de alguna variable o controlar la consistencia de los datos. tia(t,s) :- progenitor(p,s), hermanos(t,p), mujer(t). Representación de dominios Utilizar estructuras de datos: dia(3,feb) fecha(2,nov,1993) y emplear el nombre de la estructura como patrón aniversario(p,dia(d,m)):- nacimiento(p,fecha(d,m,a)) 3

Representación de dominios Utilizar una combinación de las soluciones anteriores para la definición del dominio. nat(cero). nat(s(n)):- nat(n). suma(cero,y,y) :- nat(y). suma(s(x),y,s(z)) :- suma(x,y,z). par(cero). par(s(s(n)):-par(n). Representación de relaciones Extensional Enumerando los elementos de la relación padre(juan,ana). padre(maria,luis). padre(pedro,jose). Intensional Mediante reglas que expresen la relación abuelo(a,n):- padre(a,x), progenitor(x,n). 4

Relaciones reflexivas Sin restricción de tipo Con restricción de tipo r(a,b). r(a,b)....... r(x,x). r(x,x):-t(x). Ejemplo: mismaedad(juan,antonio).... mismaedad(x,x):-persona(x). Relaciones simétricas Como clausura simétrica de una relación asimétrica Divergente Convergente r(a,b). r'(a,b)....... r(x,y):-r(y,x). r(x,y):-r'(x,y). r(x,y):-r'(y,x). Ejemplo mal casados(x,y):-casados(y,x). Ejemplo bien casados(x,y):-esposa(x,y). casados(x,y):-esposa(y,x). ejc03.pl ejc031.pl 5

Relaciones transitivas Como clausura transitiva de una relación intransitiva Divergente Convergente r(a,b). r(a,b)....... r(x,y):- r(x,z), rt(x,y):- r(x,y). r(z,y). rt(x,y):- r(x,z), rt(z,y). Ejemplo: arco(a,b). arco(b,c).... Mal cm(x,y):- arco(x,y). cm(x,y):- cm(x,z), cm(z,y). ejc04.pl Bien cm(x,y):- arco(x,y). cm(x,y):- arco(x,z), cm(z,y). ejc041.pl Preorden Como clausura reflexiva y transitiva de una intransitiva Ejemplo: (Representación de un grafo orientado) arco(a,b).... % clausura reflexiva cm(x,x). % clausura transitiva cm(x,y):- arco(x,z), cm(z,y). ejc05.pl 6

Relación de equivalencia Como clausura reflexiva y transitiva de la clausura simétrica de una relación asimétrica) Ejemplo: (Representación de un grafo no orientado) arco(a,b).... % clausura simétrica eje(x,y):- arco(x,y). eje(x,y):- arco(y,x). % clausura reflexiva cm(x,x). % clausura transitiva cm(x,y):- eje(x,z), cm(z,y). ejc06.pl Algebra de relaciones. Unión Esquema: r(x):-r1(x). r(x):-r2(x). Ejemplo: progenitor(p,h):-padre(p,h). progenitor(p,h):-madre(p,h). 7

Algebra de relaciones. Interesección Esquema: r(x):-r1(x), r2(x). Ejemplo: votante(x):- residente(x), mayordeedad(x). Algebra de relaciones. Producto cartesiano Esquema: r(x,y):- r1(x), r2(y). Ejemplo: pareja(x,y):- hombre(x), mujer(y). 8

Esquema: r(x):- Algebra de relaciones. Diferencia r1(x), not r2(x). Ejemplo: contribuyente(x,y):- residente(x), not extranjero(x). Algebra de relaciones. Proyección Esquema: r(x):- r1(x,y). Ejemplo: espadre(x):- padre(x,y). 9

Algebra de relaciones. Selección Esquema: r(x):- r1(x,y), cond(y). Ejemplo: adolescente(x):- edad(x,e), E < 18. Aspectos a tener en cuenta. Orden de las reglas padre(juan,antonio). padre(juan,luis). padre(juan,maria). padre(maria,jose). padre(maria,jose). padre(juan,maria). padre(juan,luis). padre(juan,antonio).?- padre(x,y).?- padre(x,y). {X/juan, Y/antonio} {X/juan, Y/luis} {X/juan, Y/maria} {X/maria, Y/jose} {X/maria, Y/jose} {X/juan, Y/maria} {X/juan, Y/luis} {X/juan, Y/antonio} 10

Aspectos a tener en cuenta. Orden de las fórmulas El orden de aparición de los predicados en los cuerpos de las cláusulas puede afectar a: 1.- El orden en que se generan las soluciones: 2.- El número de cálculos que se deben realizar: 3 - La terminación de los cómputos: ejc07.pl Aspectos a tener en cuenta. Modos de uso El uso influye en la forma de definir el predicado Ejemplo: abuelo(x,y):- progenitor(x,z), progenitor(z,y). es más apropiada para objetivos como abuelo(juan,x). abuelo(x,y):- progenitor(z,y), progenitor(x,z). es más apropiada para objetivos como abuelo(x,jose). En ocasiones, es mejor definir predicados distintos: abuelo/2 y nieto/2. 11

Modos de uso % nieto(+,-) (+,?) nieto(x,y):-progenitor(x,z), progenitor(z,y). % abuelo(-,+) (?,+) abuelo(x,y):- progenitor(z,y), progenitor(x,z). Definición de predicados Influye en: Tamaño del espacio de búsqueda La aparición de ciclos y ramas infinitas La aparición de soluciones redundantes 12

Tamaño de la búsqueda europeo(persona):- pais(pais), nacido(persona,pais), eneuropa(pais). Aparición de ciclos y ramas infinitas casados(x,y):- casados(y,x). padre(x,y):- hijo(y,x). hijo(x,y):- padre(y,x). antepasado(x,y):- progenitor(x,y). antepasado(x,y):- antepasado(x,z), progenitor(z,y). 13

Soluciones redundantes minimo(x,y,x):- menorigual(x,y). minimo(x,y,y):- menorigual(y,x).?- minimo(3,3,m). Programación recursiva Aritmética natural Nat ::= Cero Suc(Nat) A través de funtores. Dominio de Def. c 0 nat(c). s(c) 1 nat(s(n)):- nat(n). s(s(c)) 2..... ejc08.pl 14

Aritmética natural Operaciones Suma. s(s(s(c))) s(s(c)) s(c) s(s(c)) s(s(c)) s(s(c)) s(s(s(s(s(c))))) s(s(s(s(c)))) s(s(s(c))) c s(s(c)) s(s(c)) suma(c,m,m) :- nat(m). suma(s(n),m,s(x)) :- suma(n,m,x). Tabla de comportamiento suma(x,y,z) Uso (+,+,+) (+,+,-) (+,-,+) (-,+,+) (-,-,+) (-,+,-) (-,-,-) Test. Comprueba si X+Y=Z Generador único. Genera la suma Z = X+Y Generador único. Genera la resta Y = Z-X Generador único. Genera la resta X = Z-Y Generador acotado. Genera todos los valores X e Y tal que Z = X+Y Generador no acotado. Genera los naturales en X y la suma de X e Y en Z Generador anómalo Comportamiento 15

Aritmética natural par impar enpares prod menor menorigual min factorial mcd for forstep Acumuladores fact(x,z) :- facta(x,s(c),z). facta(c,a,a) :- nat(a). facta(s(x),a,z) :- prod(s(x),a,na), facta(x,na,z). 3 6 3 1 6 2 2 2 3 1 1 1 6 0 0 0 6 6 16

Aritmética extralógica X + Y suma X - Y resta X * Y producto X / Y división X // Y división entera -X menos unario X mod Y módulo abs(x) valor absoluto sqrt(x) raíz cuadrada exp(x), X**Y e elevado a X, X elevado a Y log(x), log10(x) logaritmos neperianos y base 10 sin(x), cos(x), tan(x) seno, coseno y tangente asin(x), acos(x), atan(x) arcoseno, arcocoseno y arcotangente integer(x) redondea a entero float(x) convierte a float round(x),truncate(x), ceiling(x),floor(x) redondeos random(n) número aleatorio 0 <= r < N Aritmética extralógica Una expresión puede evaluarse si no contiene variables libres. Las expresiones anteriores, al evaluarse devuelven un valor numérico. Si el resultado de una expresión es erróneo, el predicado que la evalúa produce error. 17

Predicado is X is E Evalúa la expresión E. Unifica el resultado con X (X puede ser número o variable) Si unifican y X libre => éxito»(x se instancia al valor). Si unifican y X instanciada => éxito Si no unifican => fallo Si hay error y X libre => ERROR Si hay error y X instanciada => ERROR Ejemplo de is X is 2+5 éxito {X/7} 7 is 4+3 éxito 4+5 is 6+3 fallo (la parte izquierda no se evalúa) X is a+1 ERROR X is 3+Y (con Y libre) ERROR X is 3+Y (con {Y/5}) éxito {X/8} 18

Predicado is is NO ES ASIGNACION X is X+1 (con {X/4}) fallo X is X+1 (con X libre) ERROR X is a, Y is X+1, Z is 5+9 ERROR is NO SE RESATISFACE NUNCA Operadores relacionales E1 > E2 mayor E1 >= E2 mayor o igual E1 < E2 menor E1 =< E2 menor o igual E1 =:= E2 igual E1 =\= E2 distinto Se evalúan los dos argumentos y se compara los resultados. 19

Ejemplos 3+7 > 2+5 éxito 2+4 =:= 3+X si {X/3} => éxito si X está instanciada a un valor <>3 => fallo. si X está libre => ERROR. 3+1 =:= a+2 ERROR Revisión programas lógicos min mcd muma factorial fibonacci for forstep (sin y con acumuladores) (sin y con acumuladores) 20

Menus %% entradas entrada(rabanos, 20). entrada(pate, 90). entrada(ensalada, 40). entrada(sopa,35). %% primer plato (de carne) carne(ternera, 130). carne(pollo, 100). carne(conejo, 120). %% primer plato (de pescado) pescado(trucha, 90). pescado(salmon, 150). pescado(merluza, 95). %% postre postre(flan, 80). postre(cuajada, 60). postre(fruta, 50). calmenu(e,p,t,c) C son las calorías del menú con entrada E, primer plato P y postre T calmenu(e,p,t,c) :- calmenu(e,p,t,c) :- entrada(e,ce), pescado(p,cp), postre(t,ct), C is CE+CP+CT. entrada(e,ce), carne(p,cp), postre(t,ct), C is CE+CP+CT. Cuestiones sobre menu Qué menús tiene menos de 150 calorías?.?-calmenu(e,p,t,c),c < 150. Y exactamente 200?.?-calmenu(E,P,T,200). Qué menús tienen menos de 210 siendo el postre el que aporta más de 70??-calmenu(E,P,T,C),C<210,postre(T,CP),CP>70. Cuantas calorías tienen los menús que llevan ternera??-calmenu(e,ternera,t,c). Cuantas calorías tiene los menús que llevan carne??-calmenu(e,p,t,c),carne(p,cp). 21

Rompecabezas C A M A + V I N O V I C I O num(n) :-for(0,9,n). suma(ac,x,y,z,nac) :- 1 1 Nac Ac 5 6 2 9 X + 3 8 0 7 Y 9 4 3 6 Z N is Ac+X+Y, Z is N mod 10, Nac is N // 10 Rompecabezas Y Z T 0 C A M A + V I N O solucion(c,a,m,v,i,n,o):- V I C I O num(a),num(o), A=\=O, suma(0,a,o,o,t), num(m), M=\=A, M=\=O, num(n), N=\=M, N=\=A, N=\=O, suma(t,m,n,i,z), I=\=N, I=\=M, I=\=A, I=\=O, suma(z,a,i,c,y), C=\=I, C=\=N, C=\=M, C=\=A, C=\=O, num(v), V=\=C, V=\=I, V=\=N, V=\=M, V=\=A, V=\=O, suma(y,c,v,i,v). 22

Ejercicios C A M A C A S A + M E S A V I C I O A B C - 15 D E F - 15 G H I - 15 / \ 15 15 15 15 15 Entrada/Salida Entrada read(x) X puede ser cualquier término o variable. - Lee un término (Hay que terminarlo con un punto) - Lo intenta unificar con X puede dar fallo o éxito - Su comportamiento está fuera del modelo de Prolog. 23

Ejemplos juan.?- read(x) X = juan. yes.?- read(suma(x,y)). suma(3,9). X = 3 Y = 9 yes?-read(x),y is X. 3+4. X = 3+4 Y = 7. yes Entrada/Salida Salida write(x) - Escribe el término X en el dispositivo de salida.?-x is 4+2, write(x). 6 X=6 yes?-read(x), Y is X, write('el valor de la variables leida es '), write(y). 3+4. El valor de la variable leida es 7 X = 3 + 4 Y = 7 yes 24

Entrada/Salida nl - escribe un salto de línea en el dispositivo de salida. Un evaluador de expresiones en Prolog ev :- write('escriba la expresion y punto'), nl, read(x), Y is X, write('el valor de '),write(x), write(' es '),write(y).?- ev. Escriba la expresion y punto. 5+6. El valor de 5+6 es 11 yes %% hanoi(discos,origen,ayuda,destino). hanoi(0,i,f,a). hanoi(n,i,f,a):- N > 0, N1 is N - 1, hanoi(n1,i,a,f), write(i),write(' -> '),write(f), nl, hanoi(n1,a,f,i).?- hanoi(3,pri,seg,ter). 25