viernes, 15 de marzo de 2013

Capitulo 2 resolucion



Sugiera una representación para rectángulos, cuadrados y círculos como objetos Prolog estructurados. Escriba algunos ejemplos que representen objetos físicos concretos utilizando la representación que sugirió.

Antes de dar la solución a este ejercicio mejor vamos a dar una definición de un rectángulo, con ello ayudara a la interpretación de la solución que propongo.

Tomemos esta primer definición:

En geometría plana, un rectángulo es un paralelogramo, cuyos cuatro lados forman ángulos rectos entre sí. Los lados opuestos tienen la misma longitud.
 Una imagen de ello:

Luego de esto doy de la siguiente manera la solucion del ejercicio pedido anteriormente.

rectángulo (punto1(X,Y),punto 2(Z,Y),punto3(Z,W),punto4(X,W)).









Tendría que ser de esta forma, parte de los puntos tienen que coincidir, ya que si no se hace no es un rectángulo sería un cuadrilátero.

cuadrado (punto1(X,Y),punto 2(Z,Y),punto3(Z,W),punto4(X,W)).










El cuadrado es de  la misma manera que el rectángulo, ya que es un caso especial de él.

Una imagen para ilustrar:



circunferencia (puntoori(X,Y), radio(R)).



Sabemos que para construir una circunferencia por lo menos necesitamos el punto de origen y su radio.

1. ¿ Las siguiente operaciones de matching tienen éxito ó fallan ?
Si tienen éxito, ¿cuáles son las instanciaciones resultantes en las variables?
(a). punto( A, B) = punto( 1, 2).
(b). punto( A, B) = punto( X, Y, Z).
(c). +( 2, 2) = 4.
(d). +( 2, D) = +( E, 2).
(c). triangulo(punto(-1,0),P2,P3) = triangulo(P1,punto(1,0),punto(0,Y)).
2. Usando la representación que se definió anteriormente para segmentos de línea,
escriba un término que represente cualquier segmento de línea vertical en x = 5.
3. Asuma que un rectángulo se representa con el término rectángulo( P1, P2, P3, P4)
donde P1,P2,P3,P4 son los vértices del rectángulo ordenado positivamente. Defina la
relación regular( R) que es verdad (true) si R es un rectángulo cuyos lados son vertical y
horizontal.

a) Podemos ver que hay empatambien ya que:
 
A=1 B=2

b) En este caso no hay empatamiento, ya que los argumentos no concuerdan.

c) En este caso si hay empatamiento, ya que la opracion nos lleva al resultado:
 
4=4

d) por lo que vemos si empatan ya que tienen los mismos funtores y por ultimo:
 
D=2 E=2

lunes, 11 de marzo de 2013

Resumen de lo que aprendimos.

Aquí vemos que es PROLOG:

El Prolog, proviene del francés PROgrammation en LOGique, es un lenguaje para programar artefactos electrónicos mediante el paradigma lógico, con técnicas de producción final interpretada . Es muy conocido en el área de la Ingeniería Informática para investigación en Inteligencia Artificial.

En PROLOG, hay dos formas de cláusulas:
  1. Hechos, en los hechos se declaran cosas que son siempre ciertas.
  2. Reglas, en las reglas. se especifican las cosas que se pueden deducir. Si es que cumplen ciertas condiciones que nosotros ponemos.
Ejemplos de HECHOS:
  • hombre(sergio).
  • mujer(maria).
Ejemplos de REGLAS:
  • hijo(X,Y):- padre(Y,X).
  • hija(X;Y):- padre(Y,X).
  •  abuelo(X,Y) :- padre(X,Z), padre(Z,Y).
Existen varias formas de relación en PROLOG.
  • Relación unitaria es aquella en la cual hay un solo argumento. nombrerelacion(argumento).
  • Relación Binaria es aquella en la cual hay dos argumentos. nombrerelacion(argumento1,argumento2).
  • Regla, en ella puede contar con mas de un argumento, por eso lo denomine cuerpo. cabeza(argumentos) :- cuerpo(argumentos).
  • nombrerelacion(argumentos) :- rela1(argumentos) [, rela2(argumentos), ... ].
  • nombrerelacion(argumentos) :- rela1(argumentos) [; rela2(argumentos); ... ]. 
  • nombrerelacion(argumentos) :- rela1(argumentos) [,|; rela2(argumentos),|; ... ].
Ahora veremos algunos ejemplos de las relaciones en PROLOG.
 
padre(carlos, diego). % carlos es padre de diego.
padre(dario, carlos). % dario es padre de carlos.
padre(mario, maría). % mario es padre de maria.
padre(federico,mario). % federico es padre de mario.
 

hijo(A,B) :- padre(B,A). % A es hijo de B si B es padre de A.

abuelo(A,B) :- 
   padre(A,C), 
   padre(C,B).% A es abuelo de B si A es padre de C y C es padre B.
 
Por ultimo existen las preguntas, en ellas podemos hacer algunas preguntas, 
de las cuales el programa nos puede arrogar varios resultados, de los cuales son:
  1. TRUE
  2. FALSE
  3. RESPUESTA A UNA VARIABLE QUE LE PUSIMOS.
Ejemplos:

?-  hombre(sergio).    % respuesta true.
?-  hombre(maría).     % respuesta false.
?-  hijo(mario , X).  % respuesta X=federico.
?-  abuelo(federico, X).    %  X=maría.

domingo, 3 de marzo de 2013

Resolucion de los ejercicios en el libro de Prolog.

1.- Asumiendo las relaciones definidas en el ejemplo, ¿qué contestará Prolog a las
siguientes preguntas?

a). ?- progenitor( jaime, X).

b). ?- progenitor( X, jaime).

c). ?- progenitor( pamela, X), progenitor( X, patricia).


d). ?- progenitor( pamela, X), progenitor( X, Y), progenitor(Y,jaime).



2.- Formule en Prolog las siguientes preguntas acerca de la relación progenitor:
a). ¿ cómo se llama el progenitor de patricia ?



1          progenitor (patricia, X).

b). ¿ tiene elizabeth algún hijo ?
       

       progenitor (elizabeth, X).

c). ¿ cómo se llama el abuelo de patricia ?



       progenitor(X,Y), progenitor(Y,Z),hombre(Z).
 
 Ejercicios

1.3. Traduzca las siguientes sentencias a reglas Prolog.


a). Cualquiera que tiene un hijo es feliz (introduzca la relación unaria llamada 'feliz').


     feliz(X):-
                  progenitor(X,Y).

b). Para todo X, si X tiene un hijo que tiene una hermana, entonces X tiene dos hijos (introduzca la relación tiene-dos-hijos).

      
           doshijos(X):-

                        progenitor(X,Y),
             hermana(Y,Z).

1.4. Defina la relación 'nieto' usando la relación 'progenitor'. Recomendación: Será similar a la relación abuelo.

   
nieto(Z,X):-
               descendiente(Y,X),

               descendiente(Z,Y).

1.5. Defina la relación tia( X, Y) en términos de las relaciones 'progenitor' y 'hermana'. Dibuje primero un diagrama para ésta relación.
 
tia(X,Y):-
               progenitor(Z,Y),

               hermana( X, Z).
 1.7. Trate de entender como Prolog deriva respuestas a las siguientes preguntas,
usando el programa familiar. Dibuje tambien los diagramas de derivación
correspondientes. Identifique los bactrakings que se encuentre:
a). ?- progenitor( pamela, roberto).


b). ?- madre( pamela, roberto).


c). ?- abuelo( pamela, ana).


d). ?- abuela(roberto, jaime).