sábado, 22 de junio de 2013

Ejercicio 2.1 y 2.2

Ejercicio. 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ó.


podemos ver que para construir una circunferencia almenos 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 empatamiento 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

martes, 18 de junio de 2013

Sintaxis y Significado de los Programas

Prolog reconoce el tipo de un objeto por su sintaxis.

Al igual que en Lógica de Primer Orden, los términos en Prolog se clasifican en tres categorías  constantes, variables y términos compuestos.

Constantes

Prolog distingue dos tipos de constantes:

Números. Este tipo de constantes se utilizan para representar tanto números  enteros como

números  reales y poder realizar con ellos operaciones aritméticas.

- La representación mas corriente de los números  enteros es la notación decimal habitual

(por ejemplo 0, 1, -320, 539, etc) aunque también se pueden representar en otras

bases no decimales.

- Los números  reales se pueden representar tanto en notación decimal (por ejemplo

1.0, -3.14) como en notación exponencial (por ejemplo 4.5E6, -0.12e+3, 12.0e-2). En ambos casos deberá haber siempre por lo menos un dígito a cada lado del punto.

Átomos. Los átomos (no confundir con las formulas atómicas de la LPO) se utilizan para

dar nombre a objetos especificos, es decir, representan individuos concretos. Existen tres

clases principales de atomos:

- cadenas formadas por letras, digitos y el simbolo de subrayado, que deben empezar necesariamente por una letra minuscula.

Cadenas validas
: f, pepe1, libro33a, libro_blanco.

Cadenas no validas: 1libro, libro-blanco, _hola, Libro.

- cualquier cadena de caracteres encerrada entre comillas simples.
Ejemplos: 'Juan' 'Pepe_Hernandez' 'Carlos Hernández Lopez'.

Estos átomos son útiles cuando se necesita trabajar con constantes que empiecen por una letra mayúscula  o por un dígito.

- existe además otro tipo de átomos, compuestos por combinaciones especiales de signos, de uso menos común.

1.7

Resumen.
La programación en Prolog consiste en definir relaciones y preguntar acerca de las
relaciones.
Un programa consiste de cláusulas. Estas son de tres tipos: hechos, reglas y preguntas.
Una relación puede especificarse con hechos, estableciendo la lista de objetos que
satisfacen la relación o estableciendo las reglas acerca de la relación.
Un procedimiento es un conjunto de cláusulas acerca de una misma relación.
En Prolog, para establecer si un objeto satisface una pregunta puede ser un proceso
complicado que involucra inferencias lógicas, exploración entre alternativas posibles y
posibles procesos de backtracking (vuelta atrás). Todo esto lo realiza automáticamente
Prolog y es en principio oculto para los usuarios

jueves, 7 de marzo de 2013

ejercicio 1.6

1.6. Considere la siguiente definición alternativa de predecesor:
predecesor( X, Z) :- progenitor( X, Z).
predecesor( X, Z) :- progenitor( Y, Z) , predecesor( X, Y).
¿es apropiada esta definición? Si
 ¿puede usted dibujar un diagrama que corresponda con
esta definición? 
 
 
 
   
Diagrama.-
 

imagenes de los ejercicios 1.3,1.4 y 1.5






Ejercicios

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):- padre (X,Y).
1 ?- feliz(X).
X = pamela ;
X = tomas ;
X = tomas ;
X = roberto ;
X = roberto ;
X = patricia.

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). 
 
tiene_dos_hijos(X):- padre(X,Y), padre(Y,Z).
2 ?- tiene_dos_hijos(X).
X = pamela ;
X = tomas ;
X = tomas ;
X = tomas ;
X = tomas ;
X = roberto ;
X = roberto ;
X = roberto ;
X = roberto ;
X = patricia.
 
 1.4. Defina la relación 'nieto' usando la relación 'progenitor'.
Recomendación: Será similar a la relación abuelo. 
 
es_nieto(X):- padre(Y,Z), padre(Z,X).
3?- es_nieto(X).
X = ana ;
X = patricia ;
X = ana ;
X = patricia ;
X = jaime ;
 
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.
mujer(pamela).
mujer(elizabeth).
mujer(ana).
mujer(patricia).
es_hermana(X):- padre(Z,Y), padre(Z,X), mujer(X).
4 ?- es_hermana(X).
X = elizabeth ;
X = elizabeth ;
X = ana ;
X = patricia ;
X = ana ;
X = patricia ;
es_tia(X):- es_hermana(X), padre(Z,Y), padre(Z,X), mujer(X).
 5 ?- es_tia(X).
X = elizabeth ;
X = elizabeth ;
X = elizabeth ;
X = elizabeth ;
X = ana ;
X = ana ;
X = patricia ;
X = patricia ;
X = ana ;
X = ana ;
X = patricia;

 

 

miércoles, 27 de febrero de 2013

1.2. Conjunciones de cláusulas.


Ejercicios.

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

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

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

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

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

2. Formule en Prolog las siguientes preguntas acerca de la relación progenitor:

a). ¿ cómo se llama el progenitor de patricia ?
X = roberto

b). ¿ tiene elizabeth algún hijo ?
falso

c). ¿ cómo se llama el abuelo de patricia ?
X = tomas
Y =  pamela