domingo, 23 de junio de 2013

Actividad C4: Ejemplos utilizando estructuras


En esta actividad estudiaremos tres ejemplos de Prolog orientados al desarrollo de aplicaciones prácticas: bases de datos, matemáticas e inteligencia artificial.

4.1  Recuperación de la información estructurada de una base de datos

(A). Estudiar el Programa: la base de datos inicial y los procedimientos que se van adicionando al programa.

 Este ejemplo muestra cómo representar y manipular objetos de datos estructurados y también sirve para ejemplificar el uso de Prolog como un lenguaje natural de consulta a bases de datos. Una base de datos se puede representar en Prolog como un conjunto de hechos. Por ejemplo, una base de datos acerca de familias: cada familia se representa con una sola cláusula y tiene tres componentes: Esposo, Esposa e Hijos. El número de hijos es variable y se debe representar con una lista. A su vez cada persona (esposo, esposa ó hijo) tienecuatro componentes: nombre, apellido, fecha de nacimiento y trabajo :

En Prolog

familia(
persona(juan,perez,fecha(7,mayo,1950),trabaja(uag,2000)),
persona(ana,flores,fecha(9,mayo,1951),no_trabaja),
[persona(jose,perez,fecha(5,mayo,1973),no_trabaja),
persona(susana,perez,fecha(5,junio,1975),no_trabaja)
]).
familia(
persona(jorge,flores,fecha(21,abril,1953),trabaja(uag,2500)),
persona(edith,juarez,fecha(5,enero,1960),no_trabaja),
[persona(pedro,flores,fecha(1,julio,1980),no_trabaja)
]).
% X es esposo.
esposo(X) :- familia(X,_,_).
% X es esposa.
esposa(X) :- familia(_,X,_).
% X es hijo.
hijo(X) :- familia(_,_,Hijos), miembro(X,Hijos).
miembro(X, [X|L]).
miembro(X, [Y|L]) :- miembro(X, L).
% Existencia de una persona en la base de datos.
existe(Persona) :- esposo(Persona); esposa(Persona); hijo(Persona).
% Fecha de nacimiento
fecha_de_nacimiento(persona(_,_,Fecha,_), Fecha).
% Salario de una persona.
salario(persona(_,_,_,trabaja(_,S)),S).
salario(persona(_,_,_,no_trabaja),0).
% Ingreso total de una familia.
total([],0).
total([Persona|Lista],Suma) :- salario(Persona,S),
total(Lista,Resto), Suma is S + Resto.

(B). Cargar el programa en Swi-Prolog y estudiar y probar las preguntas de ejemplo.

1). Encontrar Nombre y Apellido de todas las personas que existen en la
Base de Datos:



 2). Encontrar Nombre y Apellido de todas las esposas que no trabajan:





3). Encontrar todos los hijos que hayan nacido en 1975:



4). Hallar los nombres de todas las madres que tienen al menos dos hijos:


5). Encontrar todos los nombres de las personas desempleadas que nacieron después de
1970:



6). Hallar todas las personas nacidas antes de 1955 cuyo salario sea menor a 2500:



7). El ingreso total por familia:

8). Todas las familias que tengan un ingreso por miembro de familia menor a 1000.




(C). Resuelva usted solo los 5 ejercicios.

a). Nombres de las familias que no tienen hijos.

 familia(Esposo,Esposa,[]).

 
b). Nombres de todos los hijos que no trabajan.


hijo(X), salario(X,0).




c). Nombres de las familias con esposas que trabajan y esposos que no trabajan.




familia(Y,Esposa,_), salario(Y,0).





Ayuda Fuente: http://cocolibre.blogspot.mx/2013/04/ia-con-prolog-actividad-c41-usando.html 


d). Todos los hijos cuyos padres difieren en edad con al menos 10 años.

familia(Espo,Espa,Hijos), fecha_nacimiento(Espo,fecha(_,_,A1)), fecha_nacimiento(Espa,fecha(_,_,A2)), A2-A1 > 9, Hijos \= [].



e). Definir la relación: gemelos(Hijo1, Hijo2) que sirva para encontrar geme-los en la
base de datos.

gemelos(H1,H2).




4.2 Simulación de un autómata no determinístico.

(A). Investigue (Internet, libros, publicaciones,…) y escriba una entrada en su blog explicando con sus propias palabras y ejemplos qué es un autómata no determinístico. Recuerde que al incluir texto o imágenes o video o audio de otras fuentes debe entrecomillar y escribir la referencia documental de lo que incluye.

 AUTÓMATA FINITO DETERMINÍSTICO (AFD).
Es un modelo matemático que consiste de : 
  • Un conjunto de estados, denominado S
  • Un conjunto ( alfabeto) de símbolos de entrada, denominado ∑.
  • Una función de transición move que mapea un par P ( s , a ) a un estado t.
    • s y t son estados contenidos en S, a es un símbolo de entrada.
  • Un estado de inicio, denotado por s(sub)0.
  • Un conjunto de estados de aceptación (finales), denotado por F.
.
Además, un autómata finito determinístico AFD debe cumplir con las siguientes características: 
a) No hay transiciones etiquetadas por ∈.
b) Para cada estado s y un símbolo de entrada a, existe a lo más un arco etiquetado por a
saliendo de s
http://www.monografias.com/trabajos-pdf/automatas-finitos/automatas-finitos.pdf
(B). Estudiar el programa de ejemplo (cómo un autómata se puede representar en Prolog).
 
(C). Probar el Programa en Swi-Prolog y los ejemplos de ejecución.

a). La cadena de entrada aaab a partir de s1:





b). A partir de qué estados acepta la cadena ab:




c). Cuáles son todas las cadenas de longitud tres que pueden ser aceptadas a partir del
estado s1 ?


d). Si la salida se desea escrita en forma de lista.


4.3 El problema de las ocho reinas (ajedrez)


Implementación del problema de las N-Reinas en Prolog (programación lógica)



Una implementación sencilla del problema de las n-reinas en Prolog consiste en tres simples pasos:
  1. Generar un tablero de dimensión n.
  2. Generar una permutación sobre ese tablero.
  3. Comprobar si ese tablero cumple la condición de que todas las reinas colocadas no se amenacen entre sí. ...
http://programacionilogica.wordpress.com/2008/02/07/implementacion-del-problema-de-las-n-reinas-en-prolog/
Muy buena explicacion...

No hay comentarios:

Publicar un comentario

DEBEN DE DEJAR SUS COMENTARIOS Y CRITICAS SOBRE LOS TRABAJOS

Seguidores