M.C. Juan Carlos Olivares Rojas

Slides:



Advertisements
Presentaciones similares
I.A. Listas en Prolog Parte II.
Advertisements

La Familia y La Casa Capítulo 6. la familia los padres.
ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
Mi familia española.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
La familia Algunas fotos….
El vocabulario de la familia
Nuestro reto es educar al pensamiento, para que razone de acuerdo a ciertas reglas; con ello podremos ser más eficientes al momento en que ordenamos.
La prima. la bicicletael ciclomotor el árbol el padre el hijo la hija la madre la familia.
Clase 2 Tipos de datos Asignación de valores Estructura IF Ejercicios
Unidad 1 DISEÑO DE ALGORITMOS ING. Nelwi Baez. MSC
¡Qué familia! XXII Olimpiada Thales.
Matemáticas sin números
Estructuras en C++ Roger Morera Fallas.
Unidad II Interfaces Hombre Máquina
SQL Server Integration Services SSIS
Representación del conocimiento
Programación 1 Introducción
Introducción al lenguaje de programación lógico Prolog
Pensamiento y lenguaje
CAPITULO 2 La Representación del Conocimiento
Lógica de Primer Orden.
Introducción a la Computación
METODOLOGIA DE LA PROGRAMACION
Logic M.C. Juan Carlos Olivares Rojas February, 2009.
Prolog PROgramming in LOGic
Prolog Se orienta a la solución de problemas que pueden ser expresados en forma de objetos y relaciones. La programación en Prolog consta de: Hechos.
Inteligencia Artificial
Ingeniero Anyelo Quintero
L. Enrique Sucar/Eduardo Morales
PROGRAMACIÓN LÓGICA.
ESTRUCTURAS DE CONTROL
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
Reglas y Encadenamiento de Reglas
Lenguajes Formales de Consulta
Hasta ahora: Lógica Proposicional. q. p:-q. r:-p ?-r. Si tienes un jaguar, conduces rápido. Tienes un jaguar. Es cierto que conduces rápido? p:-q.
FUNCIONES LOGICAS SI(PL;V_V;V_F)
ANITA PABLOMARÍAPEPE ANASUSANA LUPEROSAROBERTOJOSÉJUAN JOSELITOFELIPEALFREDO.

ESTRUCTURA DE DATOS ESD-243
Tema 6. Conceptos básicos de programación (Repaso) Prof. María Alejandra Quintero Informática Año 2013.
All in the Family.
Agentes que razonan de forma Lógica
LÓGICA DE PROGRAMACIÓN LSC. Susana Alejandra López Jiménez.

Fundamentos de Inteligencia Artificial
Algorit moAlgorit mo An á lisisAn á lisis Argumen toArgumen to Asignación Asociación Cometar ioCometar io Compilación Constan teConstan te Definición.
Programación Procedural y Recursiva en C++
Especialista en Business Intelligence Integration Services SSIS Transformaciones (Parte 3) Microsoft SQL Server 2008 R2 Suscribase a
Unidad II Aplicaciones con Arreglos en Java y C++
Términos algoritmo diseñar algoritmo implementar algoritmo
Sesión 2: La familia Dar y pedir información sobre las personas de nuestro entorno más cercano Uso de los posesivos Uso de los verbos SER, ESTAR, TENER,
La familia de Daniela: ¿Quienes son sus hermanos?
JENNIFER MONCALEANO VELASQUEZ PROGRAMACION EN PROLOG.
POO U1: INTRODUCCIÓN AL PARADIGMA DE LA PROGRAMACIÓN ORIENTADA A OBJETOS.
Presente un cuestionario con los aspectos mas importantes sobre los
GENOGRAMA MARIA ELENA OLIVARES J
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.

Curso: 2015/2016 Profesor: Ernesto Dolz-Barberà
PreguntasElementosEjemplo ¿Qué investigar?Unidad de estudio ¿Buscando qué?Variable (s) ¿Dónde? ¿Quiénes?Espacio y muestra ¿Cuándo?Tiempo.
REGLAS PARA ELABORAR SEUDOCODIGOS Y DIAGRAMA DE FLUJO
Conceptos Generales PROGRAMACIÓN I DOCENTE: ING. MARLENY SORIA M. 1.
BASES DE DATOS II Yahaira Mora Luis Fernando Peláez Maria Fernanda Pineda Monserrat Rodríguez Fernando Solano.
RAZONES PROPORCIONES PORCENTAJES Presentación realizada por Roberto Muñoz Villagrán ramv. RAMV.1.
La familia. Los parientes Las mascotas Es un gato.
Equipo: Erika López Coyotecatl María José Cuazitl Popocatl CETis - Centro de Estudios Tecnológicos de Servicio Industrial y Servicio “Daniel Cabrera Rivera”
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
FOIL PARA LA EXTRACCIÓN DE INFORMACIÓN DE LA WEB 1.
La familia. Los parientes Las mascotas Es un gato.
Transcripción de la presentación:

M.C. Juan Carlos Olivares Rojas Programación Lógica M.C. Juan Carlos Olivares Rojas

Agenda 5.1 Principios de la programación lógica.   5.2 Bases para la programación en lenguaje prolog

Paradigma de Programación Lógica Otra forma de estructurar programas es a través del pensamiento lógico, generalmente lógica de primer orden en donde se pueden expresar mucha información. Por cuestiones de tiempo un repaso sobre lógica de primer orden es muy difícil por lo que se realizará sobre la marcha.

PROLOG Hechos: las aves vuelan los pingüinos no vuelan "pichurri" es un ave "sandokan" es un perro "alegría" es un ave

PROLOG Reglas o Restricciones: una mascota vuela si es un ave y no es un pingüino Preguntas ¿ "pichurri" vuela ? ¿ qué mascotas vuelan ?

PROLOG Términos: constantes (a), variables (X), funciones (f(X, Y )) pepe, juan, Cliente, cliente-de(X, Y ) Fórmulas atómicas: predicados definidos sobre términos tipo-cliente(X,bueno)

PROLOG Fórmulas bien formadas (wff): fórmulas atómicas unidas por conectivas (^, _,!, ¬) y cuantificadas (1A universal, 1B existencial) 1AX, 1BZ cliente(X) ^ compra(X, Z) ^ caro(Z)  tipo-cliente(X, bueno) abuelo(X,Y) :- padre(X,Z), padre(Z,Y). 1AX, Y 1BZ padre(X, Z) ^ padre(Z, Y)  abuelo(X, Y )

PROLOG abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y). abuelo(X, Y) = {(pepe, juan), (pepe, ana), … , (luis, javier)} progenitor(X, Y ) :- padre(X, Y ). progenitor(X, Y ) :- madre(X, Y ).

PROLOG abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y). abuelo(X,Y) :- padre(X,Z), progenitor(Z,Y). hechos: A. (A átomo) reglas: A :- A1, ..., An. (n>0, y A, A1, ..., An átomos)

PROLOG Hechos: padece(jon, gripe). padece(jon, hepatitis). padece(ana, gripe). padece(carlos, alergia). es-síntoma(fiebre, gripe). es-síntoma(cansancio, gripe). es-síntoma(estornudos, alergia). suprime(paracetamol, fiebre). suprime(antihistamínico, estornudos).

PROLOG Reglas: Preguntas: debe-tomar(Per, Far) :- padece(Per, Enf), alivia(Far, Enf). alivia(Far, Enf) :- es-síntoma(Sin, Enf), suprime(Far, Sin). Preguntas: ? padece(carlos, gripe). ? padece(jon, Z). ? alivia(paracetamol, gripe).

PROLOG ¿Qué devuelve cada pregunta como resultado? ? alivia(X, gripe). ? debe-tomar(Y, antihistamínico). ? alivia(X, Y). ? suprime(X, fiebre), suprime(X, estornudos). ¿Qué devuelve cada pregunta como resultado?

PROLOG hija (*A, *B) <- mujer (*A), padre (*B, *A). hija (*A, *B) <- mujer (*A), madre (*B, *A). A continuación se muestra un programa completo en PROLOG: %% declaraciones padrede('juan', 'maria'). padrede('pablo', 'juan').

PROLOG padrede('pablo', 'marcela'). padrede('carlos', 'debora'). %%Reglas % A es hijo de B si B es padre de A hijode(A,B) :- padrede(B,A). abuelode(A,B) :- padrede(A,C), padrede(C,B). hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B. familiarde(A,B) :- padrede(A,B).

PROLOG familiarde(A,B) :- hijode(A,B). familiarde(A,B) :- hermanode(A,B). %% consultas % juan es hermano de marcela? ?- hermanode('juan', 'marcela'). Yes ?- hermanode('carlos', 'juan'). No ?- abuelode('pablo', 'maria'). Yes ?- abuelode('maria', 'pablo'). no

PROLOG %unificación con evaluación. ?- X is 3+5. X = 8 %unificación simbólica ?- X = 3+5. X = 3+5

PROLOG %comparación con evaluación ?- 3+5 =:= 2+6. yes %comparación simbólica. ?- 3+5 == 2+6. no ?- 3+5 == 3+5.

PROLOG Los programas en PROLOG se definen a través de Algoritmos, Lógica y Control. En caso de que una consulta de más de un resultado, el prompt no aparece en la shell. Se puede utilizar el operador . Para terminar el resultado, o bien, el operador ; para continuar con los emparejamientos de resultados. Se pueden combinar preguntas para obtener respuestas más exactas.

PROLOG %Combinación de preguntas legusta(pepe, pesca). legusta(maria, bailar). legusta(ana, pesca). legusta(pepe, musica). legusta(maria, musica). legusta(ana, bailar). %preguntas

PROLOG ¿Le gusta la música a Pepé y a María? ?_ legusta(pepe,musica), legusta(maria, musica). ¿Le gusta bailar a Pepé o le gusta la música a maria? ?_ legusta(pepe,bailar); legusta(maria, musica). ¿Le gusta bailar a Pepé y a maria no le gusta la música? legusta(pepe,bailar), not(legusta(maria,musica)).

PROLOG El portal de redes sociales de la UVAQ desea diseñar un Sistema Experto para encontrar la pareja ideal de cada estudiante si es que existiere. Para lograr esto, se tienen en la base de conocimientos registrados los gustos de cada usuario (color de ojos, altura, complexión, carro, etc.). Se da un punto por cada coincidencia. Diseñar la regla o reglas que determinen la mejor pareja de cada usuario. (Se deben tener al menos 2 hombres y 2 mujeres con 5 gustos c/u).

PROLOG Se puede aplicar recursividad en PROLOG además de que algunos programas en programación estructurada pueden ser implementados. %Sucesiones sucesor(1,2). sucesor(2,3). sucesor(3,4). sucesor(4,5). sucesor(5,6).

PROLOG sucesor(6,7). suma(1,X,R):-sucesor(X,R). suma(N,X,R):-sucesor(M,N), suma(M,X, R1), sucesor(R1, R). %Como se crearía una consulta? %¿Qué es lo que el programa haría?

PROLOG %Programa aridad ama(juan). ama(pepe, maria). La unificación es el proceso en el cual uma variable toma un valor. Cuando una variable tiene un valor, este no cambia.

Prolog Realizar un programa en Prolog que permita determinar si dos personas pueden comunicarse entre sí. Se deberá codificar una base de conocimientos para 5 personas con los idiomas que conocer, así como establecer una regla que permita inferir el resultado.

PROLOG Dos términos se ejecutan cuando existe una posible ligadura en sus variables y en sus valores. Ejemplo: a(X, 3) = a(2, Y). edad(luis,25). edad(hugo,32). edad(paco,29). edad(jaime,67). edad(laura,85). es_viejo(Persona) :- edad(Persona,Valor), valor > 60.

Ejercicio padre(X,Y) – X es padre de Y madre(X,Y) – X es madre de Y es_padre(X) – X es un padre es_madre(X) – X es una madre es_hijo(X) – X es un hijo (hombre) hermana(X,Y) – X es hermana de Y abuelo(X,Y) – X es abuelo (hombre) de Y tia(X,Y) – X es tía de Y primo(X,Y) – X es primo (hombre) de Y

PROLOG Prolog tiene la característica de ser reversible; es decir, los argumentos pueden ser de entrada y salida. Si se tiene un predicado abuelo se puede saber quienes son los nietos de ese abuelo. Esto no sucede con los operadores aritméticos. Otro tipo de datos utilizado en Prolog es el registro. El cual es una combinación de elementos.

PROLOG Por ejemplo: persona(‘Eva’, ‘López’, ‘Cárdenas’, 25) Define a una persona teniendo como atributos su nombre, sus apellidos y su edad. Dado que los términos son anidados se pueden tener registros como: Persona(“Helena”, edad(22), dirección(‘Miguel Hidalgo 33’, ‘Centro’, ‘Morelia’))

PROLOG Se pueden utilizar estructuras de datos recurrentes como árboles, en donde el primer elemento podría ser un nodo, el segundo el hijo izquierdo y el tercer elemento, el hijo derecho. arbol(dato1, temp, temp) arbol(dato1, arbol(dato2, temp, temp), temp) En donde temp indica un campo vacío.

PROLOG % Ejemplo entrada(paella). entrada(gazpacho). entrada(consome). carne(filete_de_cerdo). carne(pollo_asado). pescado(trucha). pescado(bacalao). postre(flan).

PROLOG postre(nueces_con_miel). postre(naranja). calorias(paella, 200). calorias(gazpacho, 150). calorias(consome, 300). calorias(filete_de_cerdo, 400). calorias(pollo_asado, 280). calorias(trucha, 160). calorias(bacalao, 300).

PROLOG calorias(flan, 200). calorias(nueces_con_miel, 500). calorias(naranja, 50). plato_principal(P):- carne(P); pescado(P). comida(Entrada, Principal, Postre):- entrada(Entrada), plato_principal(Principal), postre(Postre). valor(Entrada, Principal, Postre, Valor):- calorias(Entrada, X), calorias(Principal, Y), calorias(Postre, Z), sumar(X, Y, Z, Valor).

PROLOG comida_equilibrada(Entrada, Principal, Postre):- comida(Entrada, Principal, Postre), valor(Entrada, Principal, Postre, Valor), menor(Valor, 800). sumar(X, Y, Z, Res):- Res is X + Y + Z. menor(X, Y):- X < Y. dif(X, Y):- X \==Y.   Encontrar: ¿Cuántas calorías tiene la combinación paella, trucha, naranja? ¿Qué comida que tiene cónsome de entrada es la más balanceada?

PROLOG Se pueden definir funciones recursivas como el factorial: fac(N,F) :- N > 0, M is N - 1, fac(M,Fm), F is N * Fm. ¿Cómo se expresa la serie de fibonnaci?

Prolog El predicado trace() permite observar la invocación de un predicado El predicado listing() permite visualizar la regla que define un predicado en particular. El predicado assert() permite agregar un predicado a la base de conocimiento.

Proyecto Se realizará el programa adivina quien. Se codificarán como hechos al menos 5 personas con 5 características físicas. Se tendrá una regla que indique quién es la persona al inicio. Se codificarán reglas para preguntar, si tienen la característica física y una regla para afirmar quien es (si no le atina pierde el jugador).

¿Preguntas, dudas y comentarios?