Professional Documents
Culture Documents
Prolog
Jos A. Alonso Jimnez
2
Esta obra est bajo una licencia ReconocimientoNoComercialCompartirIgual 2.5 Spain de Creative Commons.
Se permite:
copiar, distribuir y comunicar pblicamente la obra
hacer obras derivadas
Bajo las condiciones siguientes:
Reconocimiento. Debe reconocer los crditos de la obra de la manera especificada
por el autor.
No comercial. No puede utilizar esta obra para fines comerciales.
Compartir bajo la misma licencia. Si altera o transforma esta obra, o genera una
obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a
sta.
Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia
de esta obra.
Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular
de los derechos de autor.
Esto es un resumen de la licencia completa. Para ver una copia de esta licencia, visite
o envie una carta a
Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
ndice general
Introduccin
1. Operaciones con listas
1.1. Primer elemento . . . . . . . . . . . . .
1.2. Resto de una lista . . . . . . . . . . . .
1.3. Construccin de listas . . . . . . . . .
1.4. Relacin de pertenencia . . . . . . . .
1.5. Concatenacin de listas . . . . . . . . .
1.6. Lista inversa . . . . . . . . . . . . . . .
1.7. Palndromo . . . . . . . . . . . . . . .
1.8. ltimo elemento . . . . . . . . . . . . .
1.9. Penltimo elemento . . . . . . . . . . .
1.10. Seleccin de un elemento . . . . . . . .
1.11. Insercin de un elemento en una lista
1.12. Sublista . . . . . . . . . . . . . . . . . .
1.13. Permutacin . . . . . . . . . . . . . . .
1.14. Lista con todos sus elementos iguales
1.15. Paridad de la longitud de una lista . .
1.16. Rotacin de un elemento . . . . . . . .
1.17. Subconjunto . . . . . . . . . . . . . . .
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2. Aritmtica
2.1. Mximo de dos nmeros . . . . . . . . . .
2.2. Factorial . . . . . . . . . . . . . . . . . . .
2.3. Sucesin de Fibonacci . . . . . . . . . . . .
2.4. Mximo comn divisor . . . . . . . . . . .
2.5. Longitud de una lista . . . . . . . . . . . .
2.6. Lista de nmeros acotada por su longitud
2.7. Mximo de una lista de nmeros . . . . .
2.8. Suma de los elementos de una lista . . . .
2.9. Lista de nmeros ordenada . . . . . . . .
2.10. Suma parcial de una lista . . . . . . . . . .
2.11. Lista de veces el nmero . . . . . . . .
2.12. Generacin de lista de nmeros . . . . . .
2.13. Intervalo entero . . . . . . . . . . . . . . .
2.14. Ksimo elemento . . . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
10
11
12
13
14
14
15
15
16
16
17
17
17
18
18
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
21
22
22
23
23
24
24
24
25
25
26
26
27
ndice general
2.15. Multiplicacin de las ocurrencias de los elementos de una lista . . . . . . . . . . . .
3. Estructuras
3.1. Segmentos como objetos estructurados
3.2. Base de datos familiar . . . . . . . . .
3.3. Autmata nodeterminista . . . . . . .
3.4. El problema del mono y el pltano . .
3.5. Movimientos del caballo del ajedrez .
3.6. Mximo elemento de un rbol binario
27
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
29
29
31
36
40
41
43
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
45
48
48
50
51
51
52
53
54
55
56
57
57
58
58
59
60
60
61
62
62
63
64
64
66
67
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
69
69
71
73
74
74
75
77
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
ndice general
5.8. Determinacin de tringulos equilteros . . . . . . .
5.9. Operacin binaria aplicada a listas . . . . . . . . . .
5.10. Nmeros en un trmino . . . . . . . . . . . . . . . .
5.11. Palabra sin vocales . . . . . . . . . . . . . . . . . . .
5.12. Palabras maximales . . . . . . . . . . . . . . . . . . .
5.13. Clausura transitiva de una relacin . . . . . . . . . .
5.14. Traduccin de cifras a palabras . . . . . . . . . . . .
5.15. Transformacin de lista dependiente de la posicin
5.16. Aplanamiento de listas . . . . . . . . . . . . . . . . .
5
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
80
80
80
81
82
82
83
84
85
87
87
90
92
107
Indice de definiciones
107
ndice general
Introduccin
El objetivo del presente trabajo es presentar una coleccin de ejercicios para la asignatura
Programacin declarativa de tercer curso de la Ingeniera Informtica.
Estos ejercicios complementa los apuntes de introduccin a la programacin declarativa con
Prolog ([1]) y a las transparencias de clase ([2]).
Todos los ejercicios se han comprobado usando la versin 5.6.18 de SWI Prolog.
ndice general
Captulo 1
Operaciones con listas
Una lista es la lista vaca o se compone de un primer elemento y un resto, que es una lista. En
Prolog, la lista vaca se representa por
y las listas no vaca son de la forma
donde es la
cabeza y es el resto.
que se verifique si
Solucin: La definicin de
es
10
Solucin: La definicin de
es
que se verifique si
Solucin: La definicin de
es
11
un elemento de
?
?
,y
Solucin: La definicin de
, por recursin en , es
un elemento de
Nota: La relacin
,y
12
para obtener
3. Pertenece
4. Es
una sublista de
5. Es
una sublista de
?
?
, por recursin en
, es
para obtener
3. Pertenece
a la lista
13
4. Es
una sublista de
5. Es
una sublista de
Nota: La relacin
que se verifique si
. Por ejemplo,
La relacin
inversa de
a
Nota: La relacin
se verifica si
como sigue
como
14
1.7. Palndromo
Ejercicio 1.7 Un palndromo es una palabra que se lee igual en los dos sentidos, por ejemplo oso. Definir
la relacin
que se verifique si la lista es un palndromo. Por ejemplo,
Solucin: La definicin de
es
que se verifique si
Nota: La relacin
se define
.
por
por
por recursin en
es
15
que se verifique si
se define
es el penltimo elemento de la
.
por
por
por recursin en
es
que se verifique si
. Por ejemplo,
es la lista obtenida
16
Nota: La relacin
, por recursin en
, es
Solucin: La definicin de
que se verifique si
es
1.12. Sublista
Ejercicio 1.12 Definir la relacin
ejemplo,
Solucin: La definicin de
que se verifique si
es
es una sublista de
. Por
1.13. Permutacin
17
1.13. Permutacin
Ejercicio 1.13 Definir la relacin
. Por ejemplo,
que se verifique si
Solucin: La definicin de
Nota: La relacin
, por recursin en
es una permutacin de
es
es equivalente a la definida
Solucin: La definicin de
es
es par.
18
Solucin: La definicin de
es
La relacin
La definicin de
es
Solucin: La definicin de
es
1.17. Subconjunto
Ejercicio 1.17 Definir la relacin
. Por ejemplo,
que se verifique si
es un subconjunto de
1.17. Subconjunto
Solucin: La definicin de
19
, por recursin en
, es
20
Captulo 2
Aritmtica
2.1. Mximo de dos nmeros
Ejercicio 2.1 Definir la relacin
ejemplo,
Solucin: La definicin de
que se verifique si
es el mximo de
e . Por
e . Por
es
2.2. Factorial
Ejercicio 2.2 Definir la relacin
Solucin: La definicin de
22
Captulo 2. Aritmtica
Solucin: La definicin de
, por induccin en , es
Solucin: La definicin de
que se verifique si
es
23
Solucin: La definicin de
Nota: La relacin
que se verifique si
es
Solucin: La definicin de
donde
menores que . Por ejemplo,
es
son
24
Captulo 2. Aritmtica
Solucin: La definicin de
que se verifique si
es el mximo de la lista de
es
que se verifique si
Solucin: La definicin de
Nota: La relacin
es
Solucin: La definicin de
es
est ordenada de
25
que se verifique si
.
(p. 19) y
es un subconjunto
(p. 24), es
es
Solucin: La definicin de
donde
ejemplo,
que se verifique si
es la lista de longitud
cuyos ele-
es
se verifica si
es la lista de longitud
26
Captulo 2. Aritmtica
y se define por
Solucin: La definicin de
es
Nota: La relacin
Solucin: La definicin de
que se verifique si
es
27
Nota: La relacin
Solucin: La definicin de
Nota: La relacin
que se verifique si
es el simo elemento
es
Solucin: La definicin de
donde
el primer elemento de
que se verifica si
es la lista obtenida
. Por ejemplo,
es
se verifica si
es la lista obtenida repitiendo
veces los restantes elementos. Por ejemplo,
veces
28
Su definicin es
Captulo 2. Aritmtica
Captulo 3
Estructuras
3.1. Segmentos como objetos estructurados
Ejercicio 3.1 Supongamos que representamos los puntos del plano mediante trminos de la forma
donde
donde
3. Hay algn
sea vertical?
4. Hay algn
sea vertical?
5. Hay algn
sea horizontal?
es vertical?
son
29
30
Captulo 3. Estructuras
3. Hay algn
sea vertical?
4. Hay algn
sea vertical?
5. Hay algn
sea horizontal?
es vertical?
31
que se verifique si
es un hombre casado.
que se verifique si
que se verifique si
que se verifique si
32
Captulo 3. Estructuras
12. Preguntar por los nombres y apellidos de todas las personas existentes en la base de datos.
13. Determinar todos los estudiantes nacidos antes de 1993.
de forma que si
es su
es .
17. Buscar todas las personas nacidas antes de 1964 cuyo sueldo sea superior a 72 euros diarios.
de forma que si
18. Definir la relacin
los sueldos de las personas de la lista .
es la suma de
33
34
Captulo 3. Estructuras
Solucin del apartado 8:
35
36
Captulo 3. Estructuras
37
a
a
e1
e2
e4
e3
b
siendo
el estado final.
es el estado final.
al estado
al estado
usando la letra .
mediante un movi-
miento nulo.
2. Definir la relacin
. Por ejemplo,
5. Determinar las palabras de longitud 3 aceptadas por el autmata a partir del estado
6. Definir la relacin
acepta la lista y la longitud de
con longitud 3.
38
Captulo 3. Estructuras
Solucin: Solucin del apartado 1:
39
y la segunda modificando
40
Captulo 3. Estructuras
41
donde
significa que el mono se encuentra en la posicin (puerta, centro o ventana)
encima de (suelo o silla), la silla se encuentra en la posicin (puerta, centro o ventana) y el mono tiene
) o no ( =
) el pltano.
( =
Solucin:
La relacin
el
al
se verifica si en
se puede aplicar la accin y como resultado de su aplicacin se pasa
.
2. Definir la relacin
que se verifique si es una lista de cuadrados representando el camino
recorrido por un caballo sobre un tablero vaco. Por ejemplo,
42
Captulo 3. Estructuras
3. Usando la relacin
, escribir una pregunta para determinar los caminos de longitud 4 por los
que puede desplazarse un caballo desde cuadro
hasta el otro extremo del tablero ( = ) de forma
.
que en el segundo movimiento pase por el cuadro
4. Calcular el menor nmero de movimientos necesarios para desplazar el caballo del cuadro
. Cuntos caminos de dicha longitud hay de [1,1] a [2,2]?
Solucin: Solucin del apartado 1:
La relacin
verticales.
La relacin
se verifica si
est entre 1 y 8.
espacios horizontales e
al
43
Definir la relacin
y subrbol derecho .
representa el rbol
44
Captulo 3. Estructuras
Solucin: La definicin de
es
Captulo 4
Retroceso, corte y negacin
4.1. Ejemplos de uso del corte
Ejercicio 4.1
1. Definir la relacin
si
< , entonces = ;
si
si
de forma que:
< , entonces = ;
, entonces = .
3. Definir la relacin
las dos primeras clusulas.
a partir de la definicin de
6. En el rbol anterior se observa que se efectan comparaciones innecesarias (por ejemplo, despus de
, efecta la comparacin
). Definir la relacin
suprimiendo
fallar la comparacin
en la definicin de
las comparaciones innecesarias.
7. Construir el rbol de deduccin correspondiente a la cuestin
9. Definir la relacin
a partir de la definicin de
45
46
es
Solucin del apartado 2: El rbol de deduccin se muestra en la figura 4.1 (pgina 46).
f(1,Y), 2<Y
{X/1, Y/4}
{X/1, Y/0}
{X/1, Y/2}
1<3, 2<0
6 =< 1, 2<4
Fallo
2<0
Fallo
es
Solucin del apartado 4: El rbol de deduccin se muestra en la figura 4.2 (pgina 47).
Solucin del apartado 5: El rbol de deduccin se muestra en la figura 4.3 (pgina 47).
Solucin del apartado 6: La definicin de
es
Solucin del apartado 7: El rbol de deduccin se muestra en la figura 4.4 (pgina 47).
Solucin del apartado 8: El rbol de deduccin se muestra en la figura 4.5 (pgina 48).
es
Solucin del apartado 9: La definicin de
47
f_1(1,Y), 2<Y
{X/1, Y/0}
1<3, !, 2<0
!, 2<0
2<0
Fallo
f_1(7,Y)
{X/7, Y/4}
{X/7, Y/0}
{X/7, Y/2}
7<3, !
3 =< 7, 7<6, !
6 =< 7
Fallo
7<6, !
Fallo
Exito
{Y/4}
f_1(7,Y)
{X/7, Y/4}
{X/7, Y/0}
{X/7, Y/2}
7<3, !
7<6, !
Fallo
Fallo
Exito
{Y/4}
48
1<3, !, 2<0
!, 2<0
2<0
Fallo
que se verifique si
es la diferencia de los
49
memberchk(X,[a,b,c]), X=b.
{X/a}
{X/a}
X=b, memberchk(X,[a,b,c]).
{X/b}
!, a=a.
!, a=b.
memberchk(b,[a,b,c]).
a=a
a=b
memberchk(b,[b,c]).
Fallo
!
Resp.: X=a
Resp.: X=b
Nota: La relacin
) y comparar la eficien-
50
Comparaciones:
que se verifique si
en caso contrario. Por ejemplo,
51
4.6.
52
es el exponente de 2 en
53
Nota: La relacin
Solucin: La definicin de
54
Comparaciones:
55
usando corte es
es el menor divisor de
Por ejemplo,
que se verifique si es la lista correspondiente a la descomposicin del nmero en factores primos (se considera los que elementos de estn ordenados de manera creciente).
Por ejemplo,
Solucin: La definicin de
La definicin de
es
es
56
Solucin: La definicin de
La relacin
La relacin
ejemplo,
es el menor mltiplo de
tal
es
se verifica si
se verifica si
57
Solucin: La definicin de
es
que se verifique si
Nota: Dar dos definiciones, una con negacin y otra con corte.
Solucin: La definicin de
usando la negacin es
es la suma
58
Solucin: La definicin de
que se verifique si
es
que se verifique si
. Por ejemplo,
es la longitud de las
ya que
es una subsucesin de las dos listas y no poseen ninguna otra subsucesin comn de
mayor longitud. Obsrvese que los elementos de la subsucesin no son necesariamente elementos adyacentes
en las listas.
Solucin: La definicin de
es
59
Solucin: La definicin de
Solucin: La definicin de
es
que se verifique si
. Por ejemplo,
es
que se verifique si
es
60
Solucin: La definicin de
Nota: La relacin
la pgina 53.
que se verifica si
es un subcontal que slo existe un elemento de
que
es
definida en
Solucin: La definicin de
es
es la suma de los
61
donde
se verifica si
lista
a partir del elemento . Por ejemplo,
La definicin de
es el elemento simo de
es la
es
que se verifique si
por dicho elemento. Por ejemplo,
es
62
que se verifique si
es la lista obtenida suspor la lista formada por dicha sucesin. Por ejemplo,
Solucin: La definicin de
es
La relacin
todas las ocurrencias iniciales de y
en ; por ejemplo,
La definicin de
es
(4.20)).
Solucin: La definicin de
es
La relacin
forma
de
. Por ejemplo.
La definicin de
63
),
es
(4.21)).
Solucin: La definicin de
es
La relacin
se verifica si es la lista obtenida transformando los elementos de
de la forma
por y dejando los restantes elementos de la misma
forma (se supone que
es una lista de la forma
). Por ejemplo,
La definicin de
es
64
Solucin: La definicin de
, devuelve la lista
. Por ejemplo,
es
de
65
donde es la longitud de la sucesin cuando es mayor que 1 y por cuando es igual a 1), pero en su
definicin no se crean listas de elementos repetidos como en la definicin de
. Por
ejemplo,
Solucin: La definicin de
es
La relacin
se verifica si es el nmero de veces que apay
es el resto de la lista
cuando se le quita la sucesin de
rece en la cabeza de la lista
elementos de su cabeza. Por ejemplo,
La definicin de
es
La relacin
elemento (es decir,
La definicin de
es
si
es
66
La definicin no recursiva de
es
es
67
La relacin
La relacin
es
es estrictamente creciente.
es estrictamente decreciente.
Ejercicio 4.29 Una sierra es una lista numrica compuesta por la yuxtaposicin de dientes. Ntese que
dos dientes consecutivos deben compartir un elemento. Por ejemplo [1,2,1,3,1] es una sierra compuesta por
los dientes [1,2,1] y [1,3,1], pero [1,2,1,1,3,1] no es una sierra.
que se verifique si es una sierra y
es la lista
Definir la relacin
de los dientes de . Por ejemplo,
68
Solucin: La definicin de
es
El corte aumenta la eficiencia como se aprecia en el siguiente ejemplo con la definicin con corte
Captulo 5
Programacin lgica de segundo orden
5.1. Determinacin de un nmero por su factorial
Ejercicio 5.1 Definir la relacin
Por ejemplo,
que se verifique si
es el factorial de .
La relacin
igual que cuyo factorial es .
La relacin
se verifica si
se verifica si
es el factorial de .
69
70
La relacin
igual que cuyo factorial (con memoria) es .
se verifica si
La relacin
se verifica si
en la base de datos internas los factoriales calculados.
La relacin
forma que si A = 1 entonces X = N!).
se verifica si X = A ( A + 1) N (de
71
y al objetivo
cuando se verifica
Solucin:
1. El rbol de resolucin est en la figura 5.1 (pgina 72).
2. la relacin
4.
se verifica si
72
p([5,1,6],B0)
2 {X1/5,
A1/[1,6],
B0/[5|B1]}
5 > 4, !,
p([1,6],B1)
!,
p([1,6],B1)
2 {X3/1,
A3/[6],
B1/[1|B3]}
3 {X3/1,
A3/[6],
B3/B1}
1 > 4, !,
p([6],B3)
Fallo
p([6],B1)
2 {X4/6,
A4/[],
B1/[6|B4]}
6 > 4, !,
p([],B4)
!,
p([],B4)
p([],B4)
1 {B4/[]}
B = B0 = [5|B1] = [5,6|B4] = [5,6]
73
es
Definir la relacin
de la lista de rboles
representa el rbol
que se verifique si
. Por ejemplo,
Solucin: La definicin de
donde
rboles
y subrbol derecho .
es
se verifica si
eliminando sus raices. Por ejemplo,
74
La definicin de
es
Solucin: La definicin de
donde la relacin
en la lista . Por ejemplo,
que se verifique si
. Por ejemplo,
es
se verifica si
Solucin: La definicin de
es
5.6. Problema 3n + 1
75
La relacin
la lista . Por ejemplo,
La definicin de
se verifica si
en
es
5.6. Problema 3n + 1
Ejercicio 5.6 Consideremos la funcin siguiente definida sobre los nmeros naturales:
!
3x + 1, si x es impar;
f (x) =
x/2,
si x es par
se pide:
1. Definir la relacin
que se verifique si
n
n
f ( f (X )), . . . , f (X ) tal que f (X ) = 1. Por ejemplo,
donde es un nmero
76
4. Definir
la longitud de la sucesin generada por
Solucin: La relacin
se verifica si
es
La segunda definicin de
, usando
, es
77
es
es
Solucin: La definicin de
es
que se verifique si
es la suma de
78
La relacin
es
se verifica si
es de tipo b si
es de tipo c si
Definir la relacin
) que se verifique si
Solucin: La definicin de
es
Solucin: La definicin de
es
79
Solucin: La definicin de
es
Solucin: La definicin de
es
80
Solucin: La definicin de
La relacin
es
a los elementos de
que se verifica si
es la lista
que ocupan la misma posicin. Por
Solucin: La definicin de
es
81
Solucin: La definicin de
es
La relacin
trminos . Por ejemplo,
La definicin de
se verifica si
es
Solucin: La definicin de
La relacin
que se verifique si
es la palabra que se
. Por ejemplo,
es
se verifica si
82
Solucin: La definicin de
que se verifique si
es la longitud de la palabra .
es
Solucin: La definicin de
Solucin: La definicin de
es
que se verifique si
es la lista de las
. Por ejemplo,
es
83
se tiene
Solucin: La definicin de
es
que se verifique si
es la lista de palabras
. Por ejemplo,
que se verifica si
es
84
, por recursin en
usando
usando
, es
es
es
que se verifique si
su posicin en la lista. Por ejemplo,
donde
mento numrico de
la suma de
es
se verifica si
es la lista obtenida aadindole a cada eley su posicin en la lista. Por ejemplo,
85
La definicin no recursiva de
donde
a la lista
es
se verifica si
. Por ejemplo,
y
se verifica si es la suma de y el nmero , cuando es un nmero y es igual
a , en caso contrario. Por ejemplo,
que se verifique si
por sus elementos. Por ejemplo,
no es
86
Captulo 6
Estilo y eficiencia en programacin lgica
6.1. Nmero de Hardy
En cierta ocasin, el matemtico Ramanujan estaba en un hospital en Inglaterra y su amigo
Hardy fue a visitarlo. Hardy coment que haba llegado al hospital en un taxi de matrcula N y
esperaba que ste no fuese un mal presagio, ya que N era un nmero poco interesante. Ramanujan
no estuvo de acuerdo ya que inmediatamente dijo que N tiene una propiedad muy especial: N es
el menor entero positivo que puede descomponerse de dos maneras distintas como suma de dos
cubos.
El objetivo de esta seccin es averiguar la matrcula del taxi que llev a Hardy a visitar a
Ramanujan.
Ejercicio 6.1 Definir la relacin
que se verifique si
N.
88
y determina .
89
90
es
es
La matrcula del taxi que llev a Hardy a visitar a Ramanujan se calcula mediante la siguiente
consulta
que se verifique si
es un subcon-
es . Por ejemplo,
91
teniendo en cuenta la suma
La cuarta definicin es una variacin de la anterior de forma que se intercambian los dos
primeros argumentos de
a fin de que el argumento sobre el que
se indexa sea .
92
93
b
e
c
f
a
e
b c d
f
k
h
g
g
Qu nmero de colores se necesitan para colorear el segundo mapa? De cuntas formas distintas puede
colorearse con dicho nmero?
Solucin: Presentamos dos definiciones y comparamos su eficiencia.
La primera definicin de
es por generacin y prueba.
En la segunda definicin de
94
Captulo 7
Aplicaciones de programacin declarativa
7.1. Formacin de grupos minimales de asignaturas compatibles
se representa la informacin de los alumnos
Mediante la relacin
segn los cursos y asignaturas, de forma que es el curso, es la asignatura y es la lista de
los alumnos de dicha asignatura. A lo largo del ejercicio vamos a usar como ejemplo la siguiente
informacin.
Solucin: La definicin de
que se verifique si
es
95
96
Solucin: La definicin de
es
Solucin: La definicin de
es
Solucin: La definicin de
es
que se verifique si
es la lista obtenida aaes la lista obtenida aadiendo
a . Por
97
Solucin: La definicin de
es
Solucin: La definicin de
es
que se verifique si
.
es
98
Las acciones posibles son pulsar un dgito, una operacin aritmtica o la de resultado y estn
definidas por
99
es un dgito, entonces
si
es un dgito,
en otro caso,
Si
que se verifique si
, entonces
es
es
es
no es un dgito, entonces
si
es una operacin,
en otro caso,
Por ejemplo,
es
es
.
es el estado obtenido
100
La segunda definicin de
La tercera definicin de
es
es
101
que se verifique si
es el estado obtenido
. Por ejemplo,
Solucin: La definicin de
es
que se verifique si
El nmero
es
Ejercicio 7.11 Para realizar una operacin en la calculadora no todas las combinaciones de teclas (acciones)
son vlidas. Por ejemplo, no podemos teclear dos operaciones consecutivas o dividir por cero. La siguiente
relacin define las acciones vlidas
102
2. Definir la relacin
dos operaciones consecutivas.
3. Definir la relacin
bolo en una posicin que no es la ltima.
4. Definir la relacin
secutiva el smbolo
es
contiene
y un cero.
5. Definir la relacin
mos elementos son un dgito y el smbolo .
Solucin:
los lti-
103
acciones
Solucin:
que se verifique si
104
entonces,
Solucin: La definicin de
es
La relacin
se verifica si es una lista de ofertas aceptable; es decir, una lista
de ofertas que no contienen objetos comunes en sus lotes. Por ejemplo, con la definicin anterior
,
de
La relacin
con la definicin anterior de
La relacin
105
se verifica si
es un subconjunto de
. Por ejemplo,
La relacin
se verifica si la lista de ofertas es aceptable; es decir, no
contiene ofertas con objetos comunes en sus lotes. Por ejemplo, con la definicin anterior de
,
La relacin
se verifica si es una lista de ofertas inaceptable; es decir, contiene ofertas con objetos comunes en sus lotes. Por ejemplo, con la definicin anterior de
,
106
La relacin
comunes. Por ejemplo,
La relacin
con la definicin anterior de
se verifica si
Bibliografa
[1] J. A. Alonso.
En
[2] J. A. Alonso.
En
2 edition, 2000.
En
107