L. Enrique Sucar/Eduardo Morales

Slides:



Advertisements
Presentaciones similares
Introducción al Teorema de Gödel Eduardo Alejandro Barrio UBA - CONICET 2do Cuatrimestre de 2009 Eduardo Alejandro Barrio UBA.
Advertisements

Seminario: Expresividad semántica y lógica de segundo orden
La aritmetización de la sintaxis
Introducción al Teorema de Gödel Eduardo Alejandro Barrio UBA - CONICET 2do Cuatrimestre de 2009 Eduardo Alejandro Barrio UBA.
Lógica y argumentación
COMP 234 Prof. Carlos Rodríguez Sánchez
El vocabulario de la familia
LA FAMILIA Tune: Ten Little Indians El padre, la madre y los hermanos, El t í o, la t í a, tambi é n los primos, El abuelo, la abuela y los nietos: Miembros.
LÓGICA PROPOSICIONAL.
ALGEBRA RELACIONAL Y CALCULO RELACIONAL CON REFERENCIA A BASE DE DATOS
Técnico en programación de Software
Maestría en Bioinformática Bases de Datos y Sistemas de Información Fundamentos de Lógica Ing. Alfonso Vicente, PMP
Representación del conocimiento
3. INTRODUCCIÓN A LA PROGRAMACIÓN
   Conjuntos.
CAPITULO 2 La Representación del Conocimiento
Algebra Booleana y Compuertas Lógicas
Lógica de Primer Orden.
Programación.
Logic M.C. Juan Carlos Olivares Rojas February, 2009.
Prolog PROgramming in LOGic
Representaciones de conjuntos y funciones Roberto Moriyón.
Inteligencia Artificial
Integración de Información usando Vistas Lógicas Jeffrey D. Ullman Presentación: Juan Quinteros.
PROGRAMACIÓN LÓGICA.
ALGORITMOS es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos.
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
INTRODUCCIÓN A LA COMPUTACIÓN 12va Semana – 19va Sesión Miércoles 18 de Mayo del 2005 Juan José Montero Román
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.
CARACTERÍSTICAS DE LOS PROGRAMAS
"Y todo lo que hagáis, hacedlo de corazón, como para el Señor y no para los hombres" (Colosenses 3:23) Prof. Leonid Tineo Departamento de Computación Universidad.
Lógica Proposicional Inteligencia Artificial Luis Villaseñor Pineda
Inteligencia artificial
Tablas de verdad en PHP Programación en Internet II.
ESTRUCTURA DE DATOS ESD-243
LOGICA DE ENUNCIADO LOGICA DE PREDICADO
Paradigma Lógico René Mac Kinney Romero.
Programación Básica con NQC Patricio A. Castillo Pizarro 25/08/2007.
Universidad Autónoma San Francisco CARRERA PROFESIONAL: Lengua, Traducción e Interpretación Asignatura: MATEMÁTICA Tema: “SISTEMA FORMAL”
VBA – Elementos del Lenguaje
Lógica de enunciado La lógica de enunciados o de proposiciones es el nivel más básico de análisis lógico y descansa exclusivamente en las conectivas.
Calculo de Predicado Clase 18. Un predicado es una función que devuelve un booleano, es decir, F es un predicado si y sólo si el tipo de F es así: F :
Algoritmo Ing. Maria Rosana Heredia
Introducción a la programación
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
Departamento de Informática Universidad Técnica Federico Santa María Temas 2,3,4: Estructura de un Programa Pascal Declaraciones Tipos de Datos Simples.
Elementos básicos para el desarrollo de algoritmos
Dr. Eduardo Morales/Dr. Enrique Súcar Sesión 4 Dr. Eduardo Morales/Dr. Enrique Súcar Sesión 4 Lógica como Representación.
Matemáticas Computacionales
Términos algoritmo diseñar algoritmo implementar algoritmo
Unidad 7 Introducción a la lógica simbólica (Cálculo proposicional)
LOGICA DE PREDICADOS INTEGRANTES: JULIAN HUMBRETO GONZALEZ SERGIO ALBERTO CAMACHO JUAN FELIPE CUERVO.
JENNIFER MONCALEANO VELASQUEZ PROGRAMACION EN PROLOG.
Representación del conocimiento
Tablas de datos. Edades Familiares alumnos Niño Nº 10Edad Papá40 Mamá39 Hermano 19 Niño11 Niño Nº 11Edad Papá55 Mamá55 Hermano 134 Hermano 225 Niño12.
Presente un cuestionario con los aspectos mas importantes sobre los
Cómo refutar argumentos
TEMA: DISEÑO DE LA SOLUCION INTREGRANTES DE EQUIPO: ERIKA CRUZ MARTINEZ RODOLFO LOPEZ ANOTA LUIS ARMANDO LIÑA QUECHA JOSE FRANCISCO MEZO VARELA LUIS ENRIQUE.
Programación de Computadores
TIPOS DE DATOS ABSTRACTOS
Dr. Eduardo Morales/Dr. Enrique Súcar Sesión 4 Dr. Eduardo Morales/Dr. Enrique Súcar Sesión 4 Lógica como Representación.
PARADIGMA Es un marco de referencia que impone reglas sobre cómo se deben hacer las cosas. CONCEPTO DE PARADIGMA DE PROGRAMACION colección de modelos conceptuales.
ELEMENTOS BÁSICOS DE PROGRAMACIÓN EN C# Mtro. José David Uc Salas
Algebra booleana. Introduccion Las algebras booleanas, estudiadas por primera vez en detalle por George Boole, constituyen un lugar prominente en el advenimiento.
Inecuaciones lineales o inecuaciones de primer grado
Enunciados Simples Enunciados Compuestos Sistemas Tautológicos
Curso de programación Visual Chart 6 (1ªEd.)
Ing. Barros Rodriguez D. Ronald Introducción a la Programacón.
Mi familia yo padres mamá papá Esa es mi familia. tía tío primo prima
Mi familia yo padres mamá papá Esa es mi familia. tía tío primo prima
Transcripción de la presentación:

L. Enrique Sucar/Eduardo Morales INTRODUCCIÓN a PROLOG L. Enrique Sucar/Eduardo Morales Introducción Prolog = programación en lógica Es un lenguaje simbólico-asignar símbolos a objetos y manipularlos. Basado en las ideas de ver la programación como un “probador de teoremas” en lógica: Programa=conjunto de axiomas(hechos,reglas) Computación=prueba de teoremas(meta,pregunta) Entonces la idea es “declarar” lo que es verdadero y a partir de ello “probar” cierta meta.

Podemos ver un programa en Prolog como la representación de una serie de objetos (átomos) y relaciones entre estos objetos (predicados). Ejemplos: El libro le pertenece a Juan - pertenece(juan,libro) Juan es el padre de María - padre(juan,maría) Además de describir relaciones “directas” (hechos) entre objetos, podemos definir reglas para obtener nuevas relaciones. Todo lo que le pertenece a Juan también le pertenece a María. Dos personas son hermanas si son mujeres y tienen los mismos padres.

Dada una serie de hechos y reglas, podemos hacer preguntas sobre otras relaciones. Prolog determina si esta relación desconocida es válida a partir de los hechos y reglas en el programa. Un programa en Prolog consiste de 3 partes principales: 1. Hechos- relaciones conocidas entre objetos 2. Reglas- como obtener nuevas relaciones a partir de las conocidas 3. Preguntas- relación que deseamos conocer

Por ejemplo (por ahora solo con hechos): papa(fuhed,luis). mama(aida,luis). papa(fuhed,rico). papa(luis,edgar). papa(fuhed,bety). papa(fuhed,shafy). ?papa(luis,edgar). YES. ?mama(luis,maría). NO.

Variables Además de representar objetos específicos, podemos usar símbolos que pueden representar diferentes objetos(pueden ser asignados diferentes valores).Estas son variables en Prolog. En Prolog una variable se indica iniciando con mayúsculas (X,Y, Persona,….). Las variables representan cualquier objeto y se usan dentro de los predicados (NO como nombres de predicados). Por ejemplo, si a Juan le pertenece “algo” pertenece(juan,X).

% familia - hechos: m(luis). m(rico). m(fuhed). m(edgar). f(aida). f(bety). f(shafy). papa(fuhed,luis). mama(aida,luis). papa(fuhed,rico). papa(luis,edgar). papa(fuhed,bety). papa(luis,shafy). papa(jesus,fuhed).

% reglas: abuelo(X,Z):-papa(X,Y),papa(Y,Z). abuelo(X,Z):-papa(X,Z),mama(Y,Z). La “,” representa una conjunción (Y). Es decir que hay que probar ambas submetas para probar la meta representada por la regla.

Negación-en Prolog se implementa por lo que se conoce como negación por falla, es decir que si algo no se puede probar se considera falso. La disjunción (O) se puede implementar mediante dos reglas con la misma meta. También se puede tener reglas recursivas, en las que una submeta es el misma meta (debe haber una condición de terminación). Esto se ilustra en el resto del ejemplo de la familia: hermano(X,Z):-papa(Y,X),papa(Y,Z),not(Y=Z). tio(X,Z):-m(X),papa(Y,Z),hermano(X,Y). tia(X,Z):-f(X),papa(Y,Z),hermano(X,Y). proj(X,Y):-papa(X,Y). proj(X,Y):-mama(X,Y). ancestro(X,Z):-proj(X,Y). ancestro(X,Z):-proj(X,Y),ancestro(Y,Z).

Estructuras Las estructuras básicas en Prolog son las cláusulas o predicados. Función(componente1,componente2) Los componentes también pueden ser funciones: función(componente1,función2(componente2)) Ejemplo: papa(hermano(luis),juan). Aritmética comparaciones: =, <, >, =>, =<, /= (resultado binario) operaciones: +, -, *, /, mod (números enteros) X is A <op> B (“X” debe ser una variable no instanciada)

Listas Una lista es un arreglo ordenado de elementos cuya longitud (número de elementos) es variable. En Prolog se representa con una serie de elementos separados por “,” entre paréntesis cuadrados. Ejemplo: [a,b,c] [ ] - lista vacia [a,[b,c],d] - un elemento puede ser a su vez una lista Las listas se manipulan especificando su "cabeza" (Head - primer elemento), y "cola" (Tail - lista del resto de los elementos), con la siguiente notación: [ H | T ]

Ejemplos: [a,b,c] - H = a, T = [b,c] [a] - H = a, T =[] [[b,c],d] - H = [b,c], T = [d] [ ] - H = fail, T = [ ] A continuación veremos algunas operaciones importantes con listas. % inserta un elemento al inicio de una lista: inserta(E,Li,Lf):-Lf=[E|Li]. % inserta mejorado: inserta2 (E,Li, [E | Li]).

% match. match([ ] ,[ ]). match([Hl|T1],[H2|T2]):-Hl=H2, match(Tl,T2). % concatena 2 listas (para búsqueda): agrega([ ],L,L). agrega([H|L1],L2,[H|L3]):- agrega(L1,L2,L3).

Búsqueda A continuación veremos la implementación de los algoritmos de búsqueda sin información (por profundidad y a lo ancho). Para ilustrarlo usamos un juego sencillo llamado "4 puzzle". Rutina general de búsqueda: busca(NI,NF):- encuentra([N1] NF). encuentra([NF |_],NF). encuentra(Agenda, NF):- n-agenda(Agenda, Nagenda),write(Nagenda),nl, encuentra(Nagenda,NF).

Por profundidad: n-agenda([NI|Agenda], Nagenda):- expande(NI, Nodos), agrega(Nodos, Agenda, Nagenda). A lo ancho: agrega(Agenda, Nodos, Nagenda).

Expande para el 4-puzzle: expande([s,X,Y,Z], [[X,s,Y,Z],[Y,X,s,Z]]). expande([X,s,Y,Z], [[s,X,Y,Z],[X,Z,Y,s]]). expande([X,Y,s,Z], [[s,Y,X,Z],[X,Y,Z,s]]). expande([X,Y,Z,s], [[X,s,Z,Y],[X,Y,s,Z]]). Tarea opcional: Implementa un programa en Prolog que haga búsqueda por profundidad y a lo ancho, y aplicalo a resolver el problema del "bloque deslizante": | B | B | B | | W | W | W | Cada bloque se puede mover al espacio, ya sea directamente o saltando uno o dos bloques. El objetivo es mover las B a la derecha y las W a la izquierda.