PROLOG

23
PROLOG PROGRAMACION LOGICA ING. LUIS FELIPE CARVAJAL JARAMILLO

description

programacion en Prolog

Transcript of PROLOG

Page 1: PROLOG

PROLOG

PROGRAMACION LOGICA

ING. LUIS FELIPE CARVAJAL JARAMILLO

Page 2: PROLOG

QUE ES?

El Prolog (o PROLOG), proveniente

del francés PROgrammation en LOGique,1 es

un lenguaje para programar artefactos electrónicos

mediante el paradigma lógico con técnicas de producción

final interpretada. Es bastante conocido en el área de

la Ingeniería Informática para investigación en Inteligencia

Artificial.

http://es.wikipedia.org/wiki/Prolog

Page 3: PROLOG

PROGRAMANDO EN PROLOG

Descargar “SWI-Prolog”

http://www.swi-prolog.org/download/stable

Instalar “SWI-Prolog”

Ejecutar “SWI-Prolog”

interprete

Page 4: PROLOG

PROGRAMANDO EN PROLOG

Archivos de extensión .PL (archivos de texto)

Pasos:

Crear el archivo

Compilar el archivo

Realizar Consultas al archivo

Page 5: PROLOG

ejemplo de los países

Creación de la base de datos de países (esta es la base de

datos de conocimiento del sistema)

es_un_pais(colombia). %regla que define a Colombia como un país

es_un_pais(chile).

es_un_pais(brasil).

es_un_pais(peru).

es_un_pais(argentina).

Creación de las reglas que orientarán la lógica conceptual

limita_con(colombia , brasil).

limita_con(colombia , peru).

limita_con(brasil , peru).

CONSULTAS

Es_un_pais(Colombia).

True

Es_un_pais(Brasil).

True

Es_un pais(china).

False

Es_un_pais(X).

Colombia;

Chile;

Brasil;

Peru;

argentina

Page 6: PROLOG

ESTRUCTURA EN GRAFOS (DIRIGIDOS)

Colombia chile

Brasil

argentina

Perú

Nótense las flechas

Lo que restringe el

sentido de la relación

• CONSULTAS CON GRAFOS DIRIGIDOS

• Es_un_pais(X), write(X), nl, fail.

True

• limita_con(X,Y), write(X),write(-),write(Y), nl, fail.

colombia-Brasil

colombia-peru

brasil-peru

false.

Page 7: PROLOG

ESTRUCTURA EN GRAFOS (NO DIRIGIDOS)

• Definir una regla que asocie en ambos sentidoslimitrofes(X,Y):- limita_con(X,Y); %OR regla conjuntiva

limita_con(Y,X).

• “:-” significa SI (condición)

Colombia chile

Brasil

argentina

Perú

Nótese que no hay flechas,

lo que asegura el doble

sentido de la relación

CONSULTA

limitrofes(X,Y), write(X),write(-),write(Y), nl,fail.

colombia-brasil

colombia-peru

brasil-peru

brasil-colombia

peru-colombia

peru-brasil

false.

Page 8: PROLOG

REGLAS DISYUNTIVAS (or)

Y CONJUNTIVAS (and)

• creación de las reglas conjuntivas(OR ";")

limitrofes(X,Y):- limita_con(X,Y); %OR regla conjuntiva

• limita_con(Y,X).

Compuestas por una cola y varios predicados (uno solo verdadero hace verdadera toda la expresión)

• creación de las reglas disyuntiva (AND “,”)

pais_pequeño(X):- superificie_pais(X,Y), %AND regla disyuntiva

• Y < 900000.

Compuestas por una cola y varios predicados (todas deben ser verdaderas para que toda la expresión también lo sea)

CONSULTA

limitrofes(X,Y), write(X),write(-),write(Y), nl,fail.

colombia-brasil

colombia-peru

brasil-peru

brasil-colombia

peru-colombia

peru-brasil

false.

CONSULTA

pais_pequeño(X), write(X),nl,fail.

chile

false.

Page 9: PROLOG

PLANTEAMIENTO DE UN PROBLEMA

DEFINIR LA SIGUIENTE REGLA

Obtener los pares de países translímitrofes,

definiendo que dos países X ,Y son

translímitrofes si X limita con un país Z y Z

limita con Y, pero X y Y no son limítrofes. Un

país no es translímitrofes con si mismo

Ejemplos:

MEXICO Y CANADA SON TRANSLIMITROFES

COLOMBIA Y CHILE SON TRANSLIMITRIFES

Page 10: PROLOG

RESPUESTA DEL PROBLEMAtranslimitrofes(X,Y):- limitrofes(X,Z),

limitrofes(Z,Y),

dif(X,Y),

not(limitrofes(X,Y)).

CONSULTA

translimitrofes(colombia,chile).

true

translimitrofes(X,Y),write(X),write(-),write(Y),nl,fail.

colombia-chile

brasil-chile

chile-colombia

chile-brasil

false.

Page 11: PROLOG

LENGUAJE LOGICO VRS LENGUAJE

PROCEDIMENTAL(C,JAVA)

PROLOG:

Definición de una sola regla para crear la base de datos de conocimiento

Muy pocas líneas de código

Muy poco tiempo de desarrollo

Lenguaje muy similar al lenguaje común (español en nuestro caso), lo que deriva en no requerir programadores expertos

LENGUAJE PROCEDIMENTAL

Tiempo de creación del banco de datos

Cuantas líneas de código???

Cuanto tiempo de desarrollo ???

Complejidad del código, requerimiento de complejos niveles de programación

Page 12: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES RELACIONALES PROLOG y sus semejanzas con las BASES DE DATOS RELACIONALES

OPERADORES DE ALGEBRA RELACIONALES y codificación en SQL

Teoría de conjuntos

Lógica de predicados de primer orden

Implementar un regla de PROLOG para cada OPERADOR DE ALGEBRA RELACIONAL

Existen dos operadores básicos o unarios

PROYECCIÓN la proyección de E según X (πxE)

E es una relación (que no es mas que una tabla)

SELECCIÓN la selección de E según THETA “θ” (δθE)

E es una relación, revisa elemento por elemento y evalúa la condición THETA y si es verdadera la adiciona a la salida y si la condición es falsa la descarta y continua

Page 13: PROLOG

…PROLOG Y BASES DE DATOS RELACIONALES

ejemplo de proyección (se eligen columnas)

En SQL select nombre from insumos;

N0MBRE PRECIO

Arena 20

Cemento 80

Cal 50

hierro 120

TABLA DE INSUMOS

NOMBRE

Arena

Cemento

Cal

hierro

Π nombre INSUMOS

“La proyección INSUMOS sobre el atributo nombre”

Page 14: PROLOG

…PROLOG Y BASES DE DATOS RELACIONALES

ejemplo de proyección (se eligen columnas)

En PROLOG SE ELIGEN COLUMNAS

proyectarN, asigna el nombre al campo

(debe empezar con Mayuscula. Proyectar el

nombre si ese nombre figura en la tabla

insumos. “_” es una variable indeterminada

El resultado, proyecta una columna de una

tabla, habría que hacer una regla para cada

tipo de proyección que quiero. (dos formas

de hacer lo mismo)

“_” es una indeterminada

Page 15: PROLOG

…PROLOG Y BASES DE DATOS RELACIONALES

ejemplo de selección (se eligen filas)

En SQL select * from insumos where precio<80;

Se muestran todos los campos o atributos

TABLA DE INSUMOS δprecio<80 INSUMOS“La selección en INSUMOS donde el precio sea menor que 80

NOMBRE PRECIO

Arena 20

Cal 50

Conserva el esquema de la tabla

N0MBRE PRECIO

Arena 20

Cemento 80

Cal 50

hierro 120

Page 16: PROLOG

…PROLOG Y BASES DE DATOS RELACIONALES

ejemplo de selección (se eligen filas) En PROLOG SE ELIGEN FILAS

se proyectan las dos columnas de la tabla,

Seleccionar Nombre y Costo, si existen en la

tabla (regla) Insumo y el costo es > a 25 pesos

Solo se muestran aquellos

que cumplen La condición

especificada en la regla

Page 17: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS

X producto cartesiano (E1XE2)

Da la combinación de cada elemento que pertenece a

E1 con cada elemento en E2, donde E1 y E2 son

conjuntos de elementos

U Unión (E1UE2)

Da todos los elementos que pertenecen a E1 y/o a E2

- Diferencia (E1-E2)

Da todos los elementos que pertenezcan a E1 pero no

pertenezcan a E2

Page 18: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (PRODUCTO CARTESIANO)

CampoT1_1 CampoT1_2

A1 B1

A2 B2

A3 B3

CampoT2_1 CampoT2_2

A4 B4

A5 B5

TABLA 1

TABLA 2

CampoT1_1 CampoT1_2 CampoT2_1 CampoT2_2

A1 B1 A4 B4

A1 B1 A5 B5

A2 B2 A4 B4

A2 B2 A5 B5

A3 B3 A4 B4

A3 B3 A5 B5

TABLA 1 X TABLA 2

La cantidad de filas del resultado es: la multiplicación de las filas de TABLA1

Multiplicado por la cantidad de filas de TABLA2

La cantidad de columnas del resultado es: la suma de las columnas de TABLA1

mas la cantidad de columnas de TABLA2

Page 19: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (PRODUCTO CARTESIANO)EN SQL select campoT1_1,campoT1_2, campoT2_1,campoT2_2

from tabla1,tabla2;

EN PROLOG

Instanciación

de dos tablas

Producto

cartesiano de

ambas tablas

“,”es AND

Page 20: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (UNION)

CampoT1_1 CampoT1_2

A1 B1

A2 B2

A3 B3

CampoT2_1 CampoT2_2

A4 B4

A5 B5

TABLA 1

TABLA 2

CampoTR_1 CampoTR_2

A1 B1

A2 B2

A3 B3

A4 B4

A5 B5

TABLA 1 U TABLA 2

Si existen un elemento repetido en la

U este no se repite, no se puede unir

cualquier cosa con cualquier cosa,

deben ser compatibles (cuando tienen

el mismo numero de columnas y están

definidas sobre el mismo dominio o

tipo de datos

Page 21: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (UNION)EN SQL select * from tabla1 UNION select * from tabla2;

EN PROLOG

En la Unión no se dan elementos

repetidos,

El ; es la Unión.

Page 22: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (DIFERENCIA/INTERSECCION)

CampoT1_1 CampoT1_2

A1 B1

A2 B2

A3 B3

CampoT2_1 CampoT2_2

A4 B4

A3 B3

TABLA 1

TABLA 2

CampoTR_1 CampoTR_2

A1 B1

A2 B2

TABLA 1 - TABLA 2

deben ser compatibles (cuando tienen

el mismo numero de columnas y están

definidas sobre el mismo dominio o

tipo de datos

Page 23: PROLOG

PROLOG Y BASES DE DATOS

OPERADORES BINARIOS (DIFERENCIA/INTERSECCION) En SQL select * from Tabla1 minus select * from Tabla2;

Algunas versiones utilizan except o intersect

En PROLOG

Creación de otra tabla con un dato

Repetido, para evidenciar la diferencia

Son los insumos que no pertenecen a la

Tabla insumoimportados.

“, not” es la diferencia