Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Programación Lógica y Prolog

No description
by

Luis Angel Almanza Castro

on 21 May 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Programación Lógica y Prolog

Programación Lógica y Prolog
Programación lógica
La programación lógica es aquel tipo de programación que permite al software “razonar”, esto es, hacer razonamientos, por ejemplo, de tipo deductivo o inductivo. Dada una base de datos consistente en un conjunto de entidades, propiedades de esas entidades y relaciones de unas entidades con otras, el sistema es capaz de hacer razonamientos.
Campos donde es aplicada la programación lógica
Sistemas expertos.
Prolog
El primero y más usado de los lenguajes de programación lógica es Prolog (del francés, “PROgrammation en LOGique”) diseñado e implementado alrededor de 1970 por Colmerauer y otros miembros del Grupo de Inteligencia Artificial de Luminy en la Universidad de Aix-Marseille.

La popularidad del lenguaje se debe a su capacidad de deducción y además es un lenguaje fácil de usar por su semántica y sintaxis.
Sintaxis
• Valores de datos (constantes).



• Variables.



• No se aceptan constantes con espacios en blanco.

Los términos en Prolog se clasifican en tres categorías:
Constantes
Luis Angel Almanza Castro
Nuevos teoremas.
Números
Átomos
Existen tres clases principales
de átomos
Cadenas formadas por letras, dígitos y el guión bajo, que deben empezar necesariamente por una letra minúscula.
Cualquier cadena de caracteres encerrada entre comillas simples.
Existe además otro tipo de átomos, compuestos por combinaciones especiales de signos, de uso menos común.

Variables
Términos compuestos
Las variables en Prolog se representan mediante cadenas formadas por letras, dígitos y el guión bajo, pero deben necesariamente empezar por una letra mayúscula o por el guión bajo.
Variables
Términos compuestos
Los términos compuestos o estructuras, se construyen mediante un símbolo de función, denominado functor, que se denota mediante un átomo, seguido, entre paréntesis por una serie de términos separados por comas, denominados argumentos.
Operadores
Los operadores de Prolog están divididos en 2 clases:

Aritméticos


Relacionales:

PRUEBA DE OPERADORES EN SWI-PROLOG
Conjunciones
• Emplea el operador lógico AND.
• Se utiliza la coma ( , ).

Disyunciones
• Emplea el operador lógico OR.
• Se utiliza el punto y coma ( ; ).

Esquema general de trabajo en Prolog
Escribir un programa lógico en Prolog.

Un programa lógico es un conjunto finito de fórmulas lógicas, que reflejan el conocimiento del que se dispone acerca del problema a resolver.

Dentro de un programa es posible que sea necesario incluir comentarios, por ejemplo:

El símbolo % precede los comentarios en una única línea
Los comentarios en varias líneas empiezan con /* y terminan con */
Iniciar el sistema Prolog y cargar un programa
Activar un programa desde el sistema Prolog

Una vez que se ha cargado correctamente un programa, el sistema está preparado para recibir las consultas del usuario relativas al problema que se pretende resolver. Para ello bastará con escribir dichas consultas, siguiendo la sintaxis especifica del lenguaje, en la línea de consultas del sistema.

Salir del sistema Prolog
Ventajas de Prolog
Prolog, y en general los lenguajes de programación lógica, tienen las siguientes ventajas frente a los lenguajes clásicos (procedimentales):

Expresividad.
Ejecución y búsqueda incorporada en el lenguaje.
Modularidad.
Polimorfismo.
Manejo dinámico y automático de memoria.

Algunas aplicaciones
El laboratorio de investigación de la IBM Haifa ha desarrollado un sistema en Prolog para asignar aviones en las líneas aéreas israelíes El-Al. Este proyecto se llevó a cabo para ahorrar costos operativos y para reducir el uso de los espacios de las compuertas del aeropuerto, que tienen un costo elevado por ocupación.
Siemens ha desarrollado en Prolog el sistema CVE, el cual es utilizado para verificar de forma automática el comportamiento de salida de un circuito digital como una función Booleana como una función de la entrada. Las funciones que se obtienen se comparan de manera simbólica con las funciones correspondientes del circuito usando algoritmos especializados que garantizan que se detectan las diferencias encontradas.
Problema para ser resuelto con Prolog
Este es un ejemplo de la gran utilidad que puede tener Prolog. A continuación se describe un juego de lógica y habilidad mental.

Albert Einstein propuso el siguiente acertijo estimó que solo el 2% de la población mundial sería capaz de solucionarlo, pero no es tan difícil de resolver, es solo cuestión de tiempo, planificación y dedicación; mediante un razonamiento lógico a partir de unas pistas o claves debemos de encontrar la alternativa que mejor resuelve el problema.

Acertijo
Tenemos cinco casas de cinco colores diferentes y en cada una de ellas vive una persona de una nacionalidad diferente. Cada uno de sus dueños bebe una bebida diferente, con vestuarios distintos y tiene una mascota diferente.
Contamos con las siguientes pistas:
• El finlandés vive en la casa roja.
• El español tiene perro como mascota.
• El ucraniano bebe té.
• La casa verde está a lado de la casa marfil.
• El dueño de la casa verde bebe café.
• La persona que usa vestuario pieles tiene serpiente como mascota.
• El dueño de la casa amarilla usa jeans como vestuario.
• El dueño que vive en la casa del centro bebe leche.
• El noruego vive en la primera casa.
• El hombre que usa ropa sport vive justo junto al que tiene zorro de mascotas.
• El dueño que tiene caballo vive junto al hombre que usa jeans.
• El dueño que usa vestuario abrigo bebe solo zumo de naranja.
• El japonés usa chaleco.
• El noruego vive junto a la casa azul.
• El hombre que usa ropa sport tiene por vecino a uno que solo bebe vodka.

¿QUIÉN ES EL DUEÑO DE LA CEBRA?
vecino_izq([H|[Ht|T]],Vecino_Izq,Vecino_Der):-(H = Vecino_Izq,Ht = Vecino_Der);
vecino_izq([Ht|T],Vecino_Izq,Vecino_Der).

vecino([H|T],Pista_1,Pista_2):-vecino_izq([H|T],Pista_1,Pista_2);vecino_izq([H|T],Pista_2,Pista_1).

villa(Villa):-
Villa = [
[1,_,noruego,_,_,_],
[2,azul,_,_,_,_],
[3,_,_,leche,_,_],
[4,_,_,_,_,_],
[5,_,_,_,_,_]
],
member([_,roja,finlandes,_,_,_],Villa),
member([_,_,español,_,perro,_],Villa),
member([_,_,ucraniano,te,_,_],Villa),
vecino_izq(Villa,[_,verde,_,_,_,_],[_,marfil,_,_,_,_]),
member([_,verde,_,cafe,_,_],Villa),
member([_,_,_,_,serpientes,pieles],Villa),
member([_,amarilla,_,_,_,jeans],Villa),
vecino(Villa,[_,_,_,_,_,sport],[_,_,_,_,zorro,_]),
vecino(Villa,[_,_,_,_,caballo,_],[_,_,_,_,_,jeans]),
member([_,_,_,zumo,_,abrigo],Villa),
member([_,_,japones,_,_,chaleco],Villa),
vecino(Villa,[_,_,_,_,_,sport],[_,_,_,vodka,_,_]),
member([_,_,_,_,cebra,_],Villa).

mascota(Mascota,Persona):-villa(Villa),member([_,_,Persona,_,Mascota,_],Villa).

Código
HACER CONSULTA EN SWI-PROLOG
Full transcript