Ratones amaestrados: control de la búsqueda.

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Ratones amaestrados: control de la búsqueda."

Transcripción

1 Ratones amaestrados: control de la búsqueda. 1 / 12 El predicado de corte! El predicado! (leído corte) proporciona control sobre el mecanismo de backtracking de Prolog: siempre tiene éxito pero tiene el efecto lateral de podar todas las elecciones alternativas en el nodo correspondiente en el árbol de búsqueda. Este es un predicado metalógico o extralógico: es un predicado que afecta al comportamiento operacional de Prolog. es en cierto sentido un predicado impuro (ajeno a la lógica) pero es un predicado muy útil... casi fundamental para el programador de Prolog 2 / 12

2 Cómo opera el corte? Cuando se resuelve un objetivo p con una cláusula de la forma: p : q 1,..., q n,!, r 1,..., r m Prolog intenta resolver los objetivos q 1,..., q n normalmente (haciendo backtraking sobre cada uno de ellos si es necesario); pero una vez que se alcanza el corte! se descartan automáticamente: las alternativas que quedasen por explorar para q 1,..., q n el resto de claúsulas para p que vengan a continuación de esta Sí que se puede hacer backtraking sobre r 1,..., r m 3 / 12 El corte en ejemplos (I) En la página?? definíamos un predicado para incrementar en 1 los enteros de una lista (dejando intactos los no enteros): inclst2([],[]). inclst2([x Xs],[Y Ys]):- integer(x),!,y is X+1,incLst2(Xs,Ys). inclst2([x Xs],[X Ys]):- inclst2(xs,ys). Con el objetivo inclst2([2,gato],l) obteníamos: L = [3,gato] pero también L = [2,gato]... por un backtraking indeseado Con el corte! adecuado se soluciona este problema: ahora solo muestra la respuesta L = [3,gato] (se poda el resto del árbol de búsqueda). 4 / 12

3 Más cortes Para filtrar los elementos positivos de una lista (página??) hacíamos: lstpos([],[]). lstpos([x Xs],[X Ys]):- X>0, lstpos(xs,ys). lstpos([x Xs],Ys):- X=<0, lstpos(xs,ys). Utilizando un corte tras la condición X > 0 de la segunda claúsula, no es necesario comprobar expĺıcitamente la condición en la última cláusula: lstpos([],[]). lstpos([x Xs],[X Ys]):- X>0,!, lstpos(xs,ys). lstpos([x Xs],Ys):- lstpos(xs,ys). Esto mismo puede hacerse en el predicado separa de la página?? y en parte en la pag.?? 5 / 12 Tabla de distribución de frecuencias Problema: dada una lista de enteros construir la tabla de frecuencias asociada, con los elementos ordenados. Por ejemplo, para la lista [3, 3, 2, 2, 1, 1, 2, 3, 2, 3, 3] la tabla de frecuencias podría escribirse como [(1, 2), (2, 4), (3, 5)] (el 1 aparece 2 veces, el 2 aparece 4 veces y el 3, 5 veces). Prolog distingue los predicados no solo por el nombre, sino por el número de argumentos, i.e., podemos utilizar el mismo nombre para el predicado auxiliar: frec(l,t):- frec(l,[],t). frec([],t,t). frec([n Ns],T1,T3):- inserta(n,t1,t2), frec(ns,t2,t3). inserta(n,[],[(n,1)]). inserta(n,[(n,k) Ns],[(N,K1) Ns]):-!, K1 is K+1. inserta(n,[(m,k) Ns],[(N,1),(M,K) Ns]):- N<M,!. inserta(n,[(m,k) Ns],[(M,K) Ns1]):- inserta(n,ns,ns1). 6 / 12

4 El predicado fail fail es un predicado built-in que siempre falla. es útil para forzar la la vueltra atrás (backtracking) si no existiese como buil-in siempre podríamos plantear un objetivo artificial que provocase el fallo como 0=1 o 0==1 La combinación de! y fail permite definir la negación como fallo finito 7 / 12 Negación como fallo finito En varios problemas ha aparecido la negación de forma natural. Por ejemplo, hemos definido el predicado esta (member), pero después, en otros predicados nos interesaba utilizar la negación: noesta (not(member)). En general, nos interesa un predicado como: not(g)::= tiene éxito si el objetivo G falla Nótese que este predicado actúa sobre sobre un objetivo G. Podemos definirlo como: not(g):- G,!, fail. not( ). O también (es esencialmente lo mismo): not(g):- call(g),!, fail. % call(g): resuelve el objetivo G not( ). 8 / 12

5 Cómo funciona esta negación? not(g):- G,!, fail. not( ). Para probar si G falla: Se invoca a G (primera cláusula): Si G tiene éxito, provoco el fallo (con fail), pero además antes da fallar se cierran las alternativas con un corte es decir, not(g) falla (sin posibilidad de utilizar otra cláusula). Si G no tiene éxito, entonces no se alcanza el corte de la primera cláusula y hay backtraking: se alcanza la segunda cláusula y automáticamente tiene éxito i.e., not(g) tiene éxito. 9 / 12 Cómo NO funciona esta negación? Esta negación es sólo una aproximación a la negación lógica y tiene restricciones de uso. En particular, el modo de uso es: not(+g)::= tiene éxito si el objetivo G falla; falla si G tiene (algún) éxito. Es decir, el objetivo G debe ser cerrado, sin variables. Si es así, funciona correctamente, pero si no, en general puede proporcionar respuestas incorrectas. Esta negación está predefinida en Prolog mediante el predicado built-in \+. 10 / 12

6 Disyunción ; Cuando dos o más cláusulas de un predicado tienen exactamente la misma cabeza, a menudo es cómodo agruparlas en una sola. Esto puede conseguirse utilizando el operador de disyunción ;. Ejemplo: fueraderango(+x,+inf,+sup)::= chequea si X [Inf..Sup] fueraderango(x,inf,sup):- X<Inf ; X>Sup. Ahora, usando la negación: enrango(+x,+inf,+sup)::= chequea si X [Inf..Sup] enrango(x,inf,sup):- \+ fueraderango(x,inf,sup). 11 / 12 Condicional if then else Utilizando corte definir el siguiente predicado: ifthenelse(+c,+p1,+p2)::= resuelve P1 si la condicion C se satisface; P2 en otro caso ifthenelse(c,p1, P2):- C,!, P1. ifthenelse(c, P1,P2):- P2. Este predicado está predefinido: ifthenelse(c,p1,p2) se escribe como C -> P1 ; P2 12 / 12

3.2. Control con cortes Operador corte Cortes verdes Cortes rojos

3.2. Control con cortes Operador corte Cortes verdes Cortes rojos 3. CONTROL en la PROGRAMACIÓN LOGICA 45 Tema 3. CONTROL en la PROGRAMACION LOGICA 3.1. Control mediante el Orden en literales y sentencias 3.2. Control con cortes 3.2.1. Operador corte 3.2.2. Cortes verdes

Más detalles

Inteligencia Artificial 2º cuatrimestre de 2009

Inteligencia Artificial 2º cuatrimestre de 2009 Programación en PROLOG(2) Inteligencia Artificial 2º cuatrimestre de 2009 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Operador de corte (cut): Motivaciones Prolog

Más detalles

Operador de corte (cut): Motivaciones. Cut (!): Definición formal. Cut (!): Implicancias de la Definición. Cut (!): Ejemplo. Aplicaciones. b,!

Operador de corte (cut): Motivaciones. Cut (!): Definición formal. Cut (!): Implicancias de la Definición. Cut (!): Ejemplo. Aplicaciones. b,! Operador de corte (cut): Motivaciones Programación en PROLOG(2) Prolog es un lenguaje de programación altamente declarativo. Inteligencia Artificial 2º cuatrimestre de 2008 Departamento de Ciencias e Ingeniería

Más detalles

Operador de corte (cut): Motivaciones. Cut (!): Definición formal. Cut (!): Implicancias de la Definición. Aplicaciones. Cut (!): Ejemplo. b,!

Operador de corte (cut): Motivaciones. Cut (!): Definición formal. Cut (!): Implicancias de la Definición. Aplicaciones. Cut (!): Ejemplo. b,! Operador de corte (cut): Motivaciones Programación en PROLOG(2) Inteligencia Artificial 2º cuatrimestre de 2009 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Prolog

Más detalles

Estructuras incompletas. Listas diferencia.

Estructuras incompletas. Listas diferencia. Estructuras incompletas. Listas diferencia. 1 / 13 Estructuras incompletas Proporcionan una técnica de implementación muy potente propia de Prolog: Incrementan radicalmente la eficiencia de muchos programas.

Más detalles

Control en Prolog. Control

Control en Prolog. Control Control sobre La búsqueda El retroceso La unificación Aplicaciones. Control en Prolog Recorrido sobre grafos Sin repetir nodo Sin repetir arco Control La búsqueda mediante un predicado sin argumentos!

Más detalles

Práctica II. Prolog II: Meta Intérprete Vanilla

Práctica II. Prolog II: Meta Intérprete Vanilla Práctica II Prolog II: Meta Intérprete Vanilla Contenido 1. Meta intérpretes. 2. Meta intérprete vanilla para cláusulas definidas. 3. Extensión vanilla predicados predefinidos. 4. Extensión vanilla pruebas.

Más detalles

Programas mutantes: manipulación de la base de conocimiento

Programas mutantes: manipulación de la base de conocimiento Programas mutantes: manipulación de la base de conocimiento 1 / 30 Programas mutantes Una de las razones por las que Prolog está tan ligado a la inteligencia artificial es por su capacidad para permitir

Más detalles

Metodología de Programación I Corte y Aritmética

Metodología de Programación I Corte y Aritmética Metodología de Programación I Corte y Aritmética Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

Semántica Operacional para la Programación en Lógica Lógica para Ciencias de la Computación

Semántica Operacional para la Programación en Lógica Lógica para Ciencias de la Computación Semántica Operacional para la Programación en Lógica Lógica para Ciencias de la Computación Primer Cuatrimestre de 2009 Material Adicional Semánticas para la Programación n en LógicaL Se han explorado

Más detalles

Programación Lógica. Programación Lógica

Programación Lógica. Programación Lógica Programación Lógica Programación imperativa programa es secuencia de instrucciones que una computadora ejecuta para resolver un problema Programación Lógica programa especifica conocimiento (declarativa)

Más detalles

Cómo Implementar una Ontología? Prolog Datalog Description Logic

Cómo Implementar una Ontología? Prolog Datalog Description Logic Cómo Implementar una Ontología? Prolog Datalog Description Logic Reglas como LPO CláusulaHorn: Una cláusula con a lo sumo un literal positivo Cláusulas: Subconjuntos de LPO con la siguiente forma: x 1,.,x

Más detalles

Métodos de Inteligencia Artificial

Métodos de Inteligencia Artificial Métodos de Inteligencia Artificial L. Enrique Sucar (INAOE) esucar@inaoep.mx ccc.inaoep.mx/esucar Tecnologías de Información UPAEP Contenido Lógica proposicional Lógica de predicados Inferencia en lógica

Más detalles

Ejercicios de Lógica Proposicional *

Ejercicios de Lógica Proposicional * Ejercicios de Lógica Proposicional * FernandoRVelazquezQ@gmail.com Notación. El lenguaje proposicional que hemos definido, aquel que utiliza los cinco conectivos,,, y, se denota como L {,,,, }. Los términos

Más detalles

2. Estructuras condicionales

2. Estructuras condicionales 2. Estructuras condicionales Fundamentos de Informática Dpto. Lenguajes y Sistemas Informáticos Curso 2012 / 2013 Índice Estructuras condicionales 1. Ej07: Cond. simple 2. Ej08: Cond. doble 3. Ej09: Cond.

Más detalles

Tema II: Introducción al Lenguaje Funcional

Tema II: Introducción al Lenguaje Funcional Tema II: Introducción al Lenguaje Funcional Características de Haskell Lenguaje funcional de o. superior fuertemente tipificado. Clasifica los entes de un programa en: objetos (constantes y funciones)

Más detalles

Tema III Predicados Extralógicos de PROLOG

Tema III Predicados Extralógicos de PROLOG Tema III Predicados Extralógicos de PROLOG Programación Declarativa 1 Predicados Extralógicos Se incorporan al lenguaje como predicados predefinidos con usos limitados para acceder a funciones del sistema

Más detalles

logica computacional Tema 1: Introducción al Cálculo de Proposiciones

logica computacional Tema 1: Introducción al Cálculo de Proposiciones Tema 1: Introducción al Cálculo de Proposiciones Introducción al concepto de cálculo Un cálculo es una estructura pura; un sistema de relaciones. Un cálculo se compone de lo siguiente: Un conjunto de elementos

Más detalles

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS

LISTAS ENLAZADAS FUNDAMENTOS TEORICOS LISTAS ENLAZADAS FUNDAMENTOS TEORICOS Una lista enlazada es una colección o secuencia de elementos dispuestos uno detrás de otro, en la que cada elemento se conecta al siguiente elemento por un «enlace»

Más detalles

Lógica Matemática. Operadores Lógicos. Universidad del Azuay - Marcos Orellana Cordero

Lógica Matemática. Operadores Lógicos. Universidad del Azuay - Marcos Orellana Cordero Lógica Matemática Operadores Lógicos Introducción La lógica proposicional inicia con las proposiciones y los conectores lógicos. A partir de la combinación de dos proposiciones por medio de un conector

Más detalles

Control de retroceso. Corte y negación (2010/2011)

Control de retroceso. Corte y negación (2010/2011) Luis Valencia Cabrera lvalencia@us.es (http://www.cs.us.es/~lvalencia) Ciencias de la Computacion e IA (http://www.cs.us.es/) Universidad de Sevilla Control de retroceso. Corte y negación (2010/2011) Índice

Más detalles

INTELIGENCIA ARTIFICIAL II

INTELIGENCIA ARTIFICIAL II ESCUELA SUPERIOR POLITÉCNICA AGROPECUARIA DE MANABÍ MANUEL FÉLIX LÓPEZ CARRERA INFORMÁTICA SEMESTRE SÉPTIMO PERIODO ABR. /SEP.-2015 INTELIGENCIA ARTIFICIAL II TEMA: RESUMEN#6: INTRODUCCIÓN A PRÓLOG AUTORA:

Más detalles

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición:

Informática de 1 o de Matemáticas. Ejercicios de Introducción a Haskell. Ejercicio 1 Consideremos la siguiente definición: Ejercicios de Introducción a Haskell Informática de 1 o de Matemáticas Ejercicio 1 Consideremos la siguiente definición: doble x = x + x El valor de doble(doble 3) se puede calcular usando distintos métodos

Más detalles

M.S.C. Elvia Cristina Márquez Salgado. Unidad 1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

M.S.C. Elvia Cristina Márquez Salgado. Unidad 1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS M.S.C. Elvia Cristina Márquez Salgado Unidad 1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS Definición del Problema Esta fase está dada por el enunciado del problema, el cual requiere una definición clara

Más detalles

2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004

2º Certamen ILI-253 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 2004 º Certamen ILI-53 Lenguajes de Programación Juan Pablo Menichetti Jorge Mujica 10 de Junio del 004 ta: Tiempo: 10 Minutos. Responda con lápiz indeleble para acceder a recorrecciones. Utilice solo las hojas

Más detalles

Tema: Algoritmos Backtracking.

Tema: Algoritmos Backtracking. Programación IV. Guía 12 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos Backtracking. Objetivos Específicos Comprender el funcionamiento de un Algoritmo Backtracking.

Más detalles

el proceso de backtracking.

el proceso de backtracking. 1 El proceso de Backtracking 1.1 Backtracking En esta práctica se examina en detalle cómo Prolog busca todas las soluciones a un objetivo. Prolog responde a una pregunta hecha por el programador. Esta

Más detalles

Tema 3. Patrones y Definiciones de Funciones

Tema 3. Patrones y Definiciones de Funciones Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 3. Patrones y Definiciones de Funciones 3.1 Comparación de Patrones Patrones constantes Patrones

Más detalles

Un poco de lógica. Ramón Espinosa. Departamento de Matemáticas, ITAM

Un poco de lógica. Ramón Espinosa. Departamento de Matemáticas, ITAM Un poco de lógica Ramón Espinosa Departamento de Matemáticas, ITAM La lógica, como el whisky, pierde sus efectos benéficos cuando se consume en grandes cantidades. Lord Dunsany Uno de los principales propósitos

Más detalles

PROLOG. Un programa Prolog es un conjunto de cláusulas de Horn (hechos y reglas) donde: Todas las claúsulas acaban con.

PROLOG. Un programa Prolog es un conjunto de cláusulas de Horn (hechos y reglas) donde: Todas las claúsulas acaban con. PROLOG 1 / 101 Sintaxis de Prolog Un programa Prolog es un conjunto de cláusulas de Horn (hechos y reglas) donde: Todas las claúsulas acaban con. El símbolo se escribe como :- que se lee como si (condicional).

Más detalles

Programación Declarativa UNIVERSIDAD DE MÁLAGA

Programación Declarativa UNIVERSIDAD DE MÁLAGA Programación Declarativa UNIVERSIDAD DE MÁLAGA (3 o de Ingeniería Técnica en Informática) E.T.S.I. INFORMÁTICA 17 de Febrero de 2005 Alumno: Grupo: Prolog Ejercicio 1 (a)(2 pts.) Realiza el árbol de búsqueda

Más detalles

Inteligencia Artificial II (Curso ) Ejercicios propuestos del tema 3

Inteligencia Artificial II (Curso ) Ejercicios propuestos del tema 3 Inteligencia Artificial II (Curso 2010-2011) Ejercicios propuestos del tema 3 Ejercicio 1: Describe los modelos probabilísticos del lenguaje unigram y bigram y cómo se calcula la probabilidad de una secuencia

Más detalles

Sistemas Inteligentes de Gestión. Relación de ejercicios PROLOG. Carlos Cubero & Fernando Berzal

Sistemas Inteligentes de Gestión. Relación de ejercicios PROLOG. Carlos Cubero & Fernando Berzal Sistemas Inteligentes de Gestión Relación de ejercicios PROLOG Juan Carlos Cubero & Fernando Berzal ENTREGA DE LA PRÁCTICA 1_ejemplos.txt 2_ejemplos.pl 2_ejemplos.txt 3_ejemplos.txt 4_ejemplos.pl 5_genealogia.pl

Más detalles

Objetivos formativos de Matemática Discreta. Tema 1: Conjuntos, aplicaciones y relaciones

Objetivos formativos de Matemática Discreta. Tema 1: Conjuntos, aplicaciones y relaciones Objetivos formativos de Matemática Discreta Para cada uno de los temas el alumno debe ser capaz de hacer lo que se indica en cada bloque. Además de los objetivos que se señalan en cada tema, se considera

Más detalles

LENGUAJES Y COMPILADORES

LENGUAJES Y COMPILADORES LENGUAJES Y COMPILADORES Repaso. La clase pasada presentamos el lenguaje imperativo simple y dimos las ecuaciones para casi todas las construcciones del lenguaje. En efecto, teníamos que [ ] Σ

Más detalles

Programas Generate & Test

Programas Generate & Test Programas Generate & Test Son básicamente programas que generan soluciones candidatas que se evalúan para comprobar si son o no correctas En algunas ocasiones es más sencillo comprobar si algo es una solución

Más detalles

Inteligencia Artificial

Inteligencia Artificial Inteligencia Artificial Conocimiento y razonamiento 2. Lógica proposicional Dr. Edgard Iván Benítez Guerrero 1 Lenguajes lógicos Los hechos forman parte del mundo, mientras que las sentencias son la representación

Más detalles

Lógica Matemática. Contenido. Definición. Finalidad de la unidad. Proposicional. Primer orden

Lógica Matemática. Contenido. Definición. Finalidad de la unidad. Proposicional. Primer orden Contenido Lógica Matemática M.C. Mireya Tovar Vidal Proposicional Definición Sintaxis Proposición Conectivos lógicos Semántica Primer orden cuantificadores Finalidad de la unidad Definición Traducir enunciados

Más detalles

Algoritmos de búsqueda con espacio de memoria limitado

Algoritmos de búsqueda con espacio de memoria limitado Algoritmos de búsqueda con espacio de memoria limitado Los métodos de búsqueda por primero el mejor, tales como A, no escalan bien a grandes problemas de búsqueda debido a su consumo de memoria, mientras

Más detalles

Tema 20: La importancia de realizar pruebas

Tema 20: La importancia de realizar pruebas Departamento de Ciencias e Ingeniería de la Computación Academia de Ciencias de la Computación Tema 20: La importancia de realizar pruebas M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com

Más detalles

Lógica en Ciencias de la Computación. Caso de estudio: PROLOG

Lógica en Ciencias de la Computación. Caso de estudio: PROLOG Lógica en Ciencias de la Computación. Caso de estudio: PROLOG UCAB / USB Papel de la Lógica L en Informática Formación: Menos discurso, más razonamiento Área genérica que aplica a múltiples dominios de

Más detalles

Tema 3.- Predicados y sentencias condicionales

Tema 3.- Predicados y sentencias condicionales UNIVERSIDAD DE CÓRDOBA ESCUELA POLITÉCNICA SUPERIOR DE CÓRDOBA DEPARTAMENTO DE INFORMÁTICA Y ANÁLISIS NUMÉRICO PROGRAMACIÓN DECLARATIVA INGENIERÍA INFORMÁTICA ESPECIALIDAD DE COMPUTACIÓN CUARTO CURSO PRIMER

Más detalles

Colegio Centro América. Cuaderno de ejercicios Matemáticas

Colegio Centro América. Cuaderno de ejercicios Matemáticas Colegio Centro América Cuaderno de ejercicios Matemáticas Nombre: Séptimo grado: Profesora: Urania Zepeda. Objetivo 1: Objetivo 1: Determinar el valor de verdad de proposiciones simples y construir tablas

Más detalles

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n!

n! = 1 2 n 0! = 1 (n+1)! = (n + 1) n! Capítulo 3 Recursión La recursión es un estilo autoreferencial de definición usado tanto en matemática como en informática. Es una herramienta de programación fundamental, particularmente importante para

Más detalles

Abstracción de procedimientos

Abstracción de procedimientos Abstracción de procedimientos 1.- Consideremos ABN (árboles binarios numéricos) sin nodos repetidos. Denimos los siguientes conceptos: Se pide: Dados dos ABN, A y B, decimos que B es SUBARBOL PRINCIPAL

Más detalles

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5)

1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:? (3 > 2) (2 > 5) 1 Informática Haskell Matemáticas Curso 2004-2005 Pepe Gallardo Universidad de Málaga Práctica 1 1.1 Define un operador ( ) que devuelva True si y solo si tan solo uno de sus argumentos es True. Por ejemplo:?

Más detalles

6 CORTE Y ARITMÉTICA. Ejemplo 24 Asumamos el siguiente programa que define que el padre de una persona es su antecesor hombre:

6 CORTE Y ARITMÉTICA. Ejemplo 24 Asumamos el siguiente programa que define que el padre de una persona es su antecesor hombre: 6 CORTE Y ARITMÉTICA La computación de un programa lógico requiere la construcción y recorrido de un árbol-sld. Esto no es necesariamente la forma más eficiente de computación, por lo que en esta clase

Más detalles

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN

Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN Dr. Carlos A. Coello Coello Departamento de Computación CINVESTAV IPN ccoello@cs.cinvestav.mx Estructuras de Control PROLOG permite un control limitado sobre la forma en que se realiza el retroceso, vía

Más detalles

5.3 Tipos de Datos en Prolog

5.3 Tipos de Datos en Prolog 5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos 1 Tipos de Objetos de Datos Objetos de datos Objetos

Más detalles

5.3 Tipos de Datos en Prolog

5.3 Tipos de Datos en Prolog 5.3 Tipos de Datos en Prolog Objetos de Datos en Prolog Objetos de datos simples Objetos estructurados Calce de operaciones fundamentales sobre objetos Tipos de Objetos de Datos Objetos de datos Objetos

Más detalles

Introducción a la Computación

Introducción a la Computación Introducción a la Computación Primer Cuatrimestre de 2012 Corrección de Algoritmos 1 Especificación, algoritmo y programa Especificación de un problema: Qué problema tenemos? Lenguaje formal (ej. lógica

Más detalles

Algoritmos y Estructuras de Datos II

Algoritmos y Estructuras de Datos II 27 de mayo de 2013 Clase de hoy 1 Repaso Divide y vencerás Algoritmos voraces 2 3 Divide y vencerás Algoritmos voraces Repaso cómo vs. qué 3 partes 1 análisis de algoritmos 2 tipos de datos 3 técnicas

Más detalles

Inteligencia Artificial: Prolog

Inteligencia Artificial: Prolog Inteligencia Artificial: Prolog Unificación en Prolog Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) Contenidos Satisfacer objetivos

Más detalles

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación

Modelos de Desarrollo de Programas Y Programación Concurrente Clase N 3: 3 - Paradigmas de Programación 3 - Paradigmas de Programación En los inicios los lenguajes de programación imitaron y abstrajeron las operaciones de una computadora, lo cual trajo aparejado que el tipo de computadora para el cual fueron

Más detalles

Programación n en Prolog

Programación n en Prolog Programación n Declarativa: Lógica y Restricciones Conceptos Básicos B de la Programación n en Prolog Mari Carmen Suárez de Figueroa Baonza mcsuarez@fi.upm.es Contenidos Unificación Estructuras de datos

Más detalles

Teoría de los Lenguajes de Programación Práctica curso

Teoría de los Lenguajes de Programación Práctica curso Teoría de los Lenguajes de Programación Práctica curso 2013-2014 Índice 1. Introducción: Sumas...3 2. Enunciado de la práctica...3 2.1 Método de Resolución...3 Generación de los nodos...4 Función Principal...5

Más detalles

Programación Declarativa Ejercicios de programación con listas

Programación Declarativa Ejercicios de programación con listas Programación Declarativa Ejercicios de programación con listas Ejercicio 1 Define versiones recursivas de los siguientes predicados sobre listas: es lista(xs) Xs es una lista bien formada es lista nat(ss)

Más detalles

10.4 Sistemas de ecuaciones lineales

10.4 Sistemas de ecuaciones lineales Programa Inmersión, Verano 2016 Notas escritas por Dr. M Notas del cursos. Basadas en los prontuarios de MATE 001 y MATE 02 Clase #11: martes, 14 de junio de 2016. 10.4 Sistemas de ecuaciones lineales

Más detalles

Programación en PROLOG(1)

Programación en PROLOG(1) Programación en PROLOG(1) Inteligencia Artificial 2º cuatrimestre de 2008 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Prolog Es el representante más conocido del

Más detalles

Universidad Nacional de Educación a Distancia. Ingeniería Técnica en Informática de Sistemas. Introducción a la Inteligencia Artificial (2º curso)

Universidad Nacional de Educación a Distancia. Ingeniería Técnica en Informática de Sistemas. Introducción a la Inteligencia Artificial (2º curso) Universidad Nacional de Educación a Distancia Ingeniería Técnica en Informática de Sistemas Introducción a la Inteligencia Artificial (2º curso) Soluciones exámenes septiembre 2010 Ejercicio 1. (Valoración:

Más detalles

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática INTRODUCCIÓN BÁSICA AL PROLOG Ingeniería Informática Departamento de Informática PRÓLOGO Esta introducción al Prolog está pensada para las prácticas de la asignatura de Matemática Discreta de la Universitat

Más detalles

Prof. María Alejandra Quintero. Informática Año

Prof. María Alejandra Quintero. Informática Año Prof. María Alejandra Quintero Informática Año 2014-2015 Es la acción de escribir programas de computación con el objetivo de resolver un determinado problema. Implica escribir instrucciones para indicarle

Más detalles

Claúsulas de Horn. Resolución SLD

Claúsulas de Horn. Resolución SLD Claúsulas de Horn. Resolución SLD 1 / 114 Refinando la resolución La resolución general es un mecanismo muy potente de demostración... pero tiene un alto grado de indeterminismo: en la selección de las

Más detalles

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática

INTRODUCCIÓN BÁSICA. Ingeniería Informática AL PROLOG. Departamento de Informática INTRODUCCIÓN BÁSICA AL PROLOG Ingeniería Informática Departamento de Informática PRÓLOGO Esta introducción al Prolog está pensada para las prácticas de la asignatura de Matemática Discreta de la Universitat

Más detalles

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos

Programación imperativa. Algoritmos y Estructuras de Datos I. Ciclos Programación imperativa Algoritmos y Estructuras de Datos I Segundo cuatrimestre de 2014 Departamento de Computación - FCEyN - UBA Programación imperativa - clase 6 Ciclos y arreglos Entidad fundamental:

Más detalles

Inteligencia Artificial 2º cuatrimestre de 2009

Inteligencia Artificial 2º cuatrimestre de 2009 Programación en PROLOG(1) Inteligencia Artificial 2º cuatrimestre de 2009 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Prolog Es el representante más conocido del

Más detalles

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION Capítulo 3 Subprogramas Con lo explicado hasta aquí se pueden escribir programas sencillos y no demasiado largos. Pero varias razones justifican la necesidad de disponer de otro tipo de recursos. Por una

Más detalles

Tema II El Lenguaje Lógico PROLOG

Tema II El Lenguaje Lógico PROLOG Tema II El Lenguaje Lógico PROLOG Programación Declarativa 1 Prolog El paso del modelo teórico de programación lógica a un lenguaje práctico requiere: La mecanización del método de resolución SLD (reglas

Más detalles

Práctica 2. TIPOS DE DATOS SIMPLES

Práctica 2. TIPOS DE DATOS SIMPLES Práctica 2. TIPOS DE DATOS SIMPLES 1 sesión Semana: 15 de octubre OBJETIVOS: Conocer los distintos tipos de datos simples y su correcta utilización en la construcción de algoritmos Formular expresiones

Más detalles

Estratégias generales de análisis y diseño de algorítmos

Estratégias generales de análisis y diseño de algorítmos Estratégias generales de análisis y diseño de algorítmos comp-420 Ayudantes Hugo Eduardo Dueñas heduenas@cimat.mx (ordinaria) Alberto José Ramirez Valadez alberto@cimat.mx (ordinaria) Mandar tareas (programas)

Más detalles

Inteligencia Artificial: Prolog

Inteligencia Artificial: Prolog Inteligencia Artificial: Prolog Aritmética Christopher Expósito-Izquierdo 1, Belén Melián-Batista 2 {cexposit 1, mbmelian 2 }@ull.es Universidad de La Laguna (España) Contenidos Introducción a la Aritmética

Más detalles

Isabelle como un lenguaje funcional

Isabelle como un lenguaje funcional Capítulo 1 Isabelle como un lenguaje funcional 1.1 Introducción Nota 1.1.1. Esta notas son una introducción a la demostración asistida utilizando el sistema Isabelle/HOL/Isar. La versión de Isabelle utilizada

Más detalles

TEMA 2.1 TIPOS DE PRUEBAS DEL SOFTWARE

TEMA 2.1 TIPOS DE PRUEBAS DEL SOFTWARE TEMA 2.1 TIPOS DE PRUEBAS DEL SOFTWARE INTRODUCCIÓN La prueba del software es un elemento crítico para la garantía de la calidad del software y representa una revisión final de las especificaciones, del

Más detalles

Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales

Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales Inteligencia Artificial II Unidad Plan 2010-Ingeniería en Sistemas Computacionales Rafael Vázquez Pérez Unidad II:Técnicas de Búsqueda. 2.1. Solución de problemas con búsqueda. 2.2. Espacios de estados.

Más detalles

Tema 1: Sintaxis y Semántica de la Lógica Proposicional

Tema 1: Sintaxis y Semántica de la Lógica Proposicional Tema 1: Sintaxis y Semántica de la Lógica Proposicional Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Lógica y Computabilidad Curso 2010 11 LC, 2010 11 Lógica Proposicional

Más detalles

Prolog. Sintaxis Informal. Sintaxis Informal. Hechos: ejemplos. Inteligencia Artificial 2º cuatrimestre de Hechos. Hechos. Reglas.

Prolog. Sintaxis Informal. Sintaxis Informal. Hechos: ejemplos. Inteligencia Artificial 2º cuatrimestre de Hechos. Hechos. Reglas. Prolog Programación en PROLOG(1) Inteligencia Artificial 2º cuatrimestre de 2009 Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Es el representante más cocido del

Más detalles

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

TUTORIAL PROLOG. Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato TUTORIAL PROLOG Lenguajes de programación Universidad Nacional de Colombia Santiago Carvajal Castañeda Mario Andrés Moreno Norato Prolog es un lenguaje de programación lógica de propósito general que se

Más detalles

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2.

Índice del capítulo. Capítulo 4. Expresiones. Las expresiones. Indice de la sección. Lenguajes de Programación. Introducción. 2. Índice del capítulo Capítulo 4. Expresiones Lenguajes de Programación Capítulo 4. Expresiones 1. Carlos Ureña Almagro 2. Dpt. Lenguajes y Sistemas Informáticos ETSI Informática y de Telecomunicación Universidad

Más detalles

Programando la aplicación para tomar decisiones: Bloques condicionales

Programando la aplicación para tomar decisiones: Bloques condicionales Fuente: www.appinventor.org Traducción hecha con Google Traductor y mejorada por mi: piatticarlos@gmail.com Programando la aplicación para tomar decisiones: Bloques condicionales Las computadoras, incluso

Más detalles

ETAPA Cómo se llaman los profesionales que escriben el código de los programas? Programadores.

ETAPA Cómo se llaman los profesionales que escriben el código de los programas? Programadores. ETAPA 1 1. A qué se le llama programa? Es un conjunto de instrucciones, comandos, órdenes o procedimientos escritos en un lenguaje de programación para que una computadora pueda realizar una tarea determinada

Más detalles

Introducción a la indecidibilidad

Introducción a la indecidibilidad Introducción a la indecidibilidad José M. empere Departamento de istemas Informáticos y Computación Universidad Politécnica de Valencia Lenguajes y problemas Un problema será considerado cualquier cuestión

Más detalles

Práctica 2 de IA /2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26

Práctica 2 de IA /2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26 Práctica 2 de IA - 2011/2012. LÓGICA Fecha publicación: 26 de octubre de 2011 Duración: 3 sesiones de laboratorio Versión: 2011/10/26 Forward y backward chaining en lógica proposicional En la práctica

Más detalles

Paradigma lógico Lógica proposicional Resolución. Programación Lógica. Eduardo Bonelli. Departamento de Computación FCEyN UBA. 10 de octubre, 2006

Paradigma lógico Lógica proposicional Resolución. Programación Lógica. Eduardo Bonelli. Departamento de Computación FCEyN UBA. 10 de octubre, 2006 Departamento de Computación FCEyN UBA 10 de octubre, 2006 Prolog Se basa en el uso de la lógica como un lenguaje de programación Se especifican ciertos hechos y reglas de inferencia un objetivo ( goal

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Sentencias iterativas

Sentencias iterativas Sentencias iterativas 1. Objetivos Al finalizar esta actividad, serás capaz de: 1. Utilizar adecuadamente la sentencia while para generar la repetición en la ejecución de grupos de sentencias 2. Motivación

Más detalles

Sumador con comprobación (1)

Sumador con comprobación (1) Fundamentos de Informática 2012-2013 Laboratorio 3 Sentencias condicionales Objetivos: Diseñar diagramas de flujo de programas con sentencias condicionales Codificar programas VB con sentencias condicionales

Más detalles

5.3 Tipos de Datos en Prolog

5.3 Tipos de Datos en Prolog 5.3 Tipos de Datos en Prolog Recocimiento de Tipos Se recoce el tipo de un dato por su forma sintáctica; se requiere de declaración de tipos Ejemplo: Variables se definen comienzan con primera en mayúsculas

Más detalles

3. Ecuaciones Diferenciales Lineales Homogéneas de Orden Superior con Coeficientes Constantes. Ecuaciones Diferenciales de Segundo Orden

3. Ecuaciones Diferenciales Lineales Homogéneas de Orden Superior con Coeficientes Constantes. Ecuaciones Diferenciales de Segundo Orden 3. Lineales Homogéneas de de Segundo Orden Sabemos que la solución general de una ecuación diferencial lineal homogénea de segundo orden está dada por por lo que se tiene dos soluciones no triviales, en

Más detalles

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1

Estructura de Datos. Arreglos. Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1 Estructura de Datos Arreglos Experiencia Educativa de Algorítmica ESTRUCTURA DE DATOS - ARREGLOS 1 Introducción Una estructura de datos es una colección de datos que pueden ser caracterizados por su organización

Más detalles

Notas en lógica básica

Notas en lógica básica Notas basadas en el prontuarios de MATE 3325 Notas escritas por Dr. M Notas en lógica básica En estas notas trabajaremos con lógica básica. Empezamos con argumentos. Todos hemos utilizados argumentos en

Más detalles

Metodología de Programación I Tutorial Prolog 2/3

Metodología de Programación I Tutorial Prolog 2/3 Metodología de Programación I Tutorial Prolog 2/3 Dr. Alejandro Guerra-Hernández Departamento de Inteligencia Artificial Facultad de Física e Inteligencia Artificial aguerra@uv.mx http://www.uv.mx/aguerra

Más detalles

LENGUAJES DE PROGRAMACIÓN

LENGUAJES DE PROGRAMACIÓN LENGUAJES DE PROGRAMACIÓN Paradigma Lógico Caso de Estudio : Prolog Lenguajes de Programación 2018 Depto. de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur, Bahía Blanca 1 2 1 1/2

Más detalles

Clases de complejidad computacional: P y NP

Clases de complejidad computacional: P y NP 1er cuatrimestre 2006 La teoría de Se aplica a problemas de decisión, o sea problemas que tienen como respuesta SI o NO (aunque es sencillo ver que sus implicancias pueden extenderse a problemas de optimización).

Más detalles

MATEMÁTICA 1 JRC El futuro pertenece a aquellos que creen en la belleza de sus sueños

MATEMÁTICA 1 JRC El futuro pertenece a aquellos que creen en la belleza de sus sueños MATEMÁTICA 1 JRC LÓGICA Es la ciencia formal que estudia los principios y procedimientos que permiten demostrar la validez o invalidez de una inferencia, es decir, reconocer entre un razonamiento correcto

Más detalles

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica

Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES. Funciones boolenas. Semántica Proposiciones atómicas y compuestas Sintaxis LÓGICA COMPUTACIONAL CÁLCULO DE PROPOSICIONES Francisco Hernández Quiroz Departamento de Matemáticas Facultad de Ciencias, UNAM E-mail: fhq@cienciasunammx Página

Más detalles