124.Ejercicios de Programacion Declarativa Con Prolog

download 124.Ejercicios de Programacion Declarativa Con Prolog

of 124

Transcript of 124.Ejercicios de Programacion Declarativa Con Prolog

Ejercicios de programacin declarativa con PrologJos A. Alonso Jimnez

Grupo de Lgica Computacional Dpto. de Ciencias de la Computacin e Inteligencia Articial Universidad de Sevilla Sevilla, 1 de Enero de 2006 (Versin de 20 de septiembre de 2007)

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 especicada por el autor. No comercial. No puede utilizar esta obra para nes 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 generalIntroduccin 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 9 9 10 10 11 12 14 14 15 16 16 17 17 18 18 19 20 20 21 21 21 22 22 23 23 24 24 25

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 . . . . . . . . 3

4 2.10. 2.11. 2.12. 2.13. 2.14. 2.15. Suma parcial de una lista . . . . . . . . . . . . . . . . . . . . . . Lista de veces el nmero . . . . . . . . . . . . . . . . . . . . Generacin de lista de nmeros . . . . . . . . . . . . . . . . . . Intervalo entero . . . . . . . . . . . . . . . . . . . . . . . . . . . Ksimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . Multiplicacin de las ocurrencias de los elementos de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

ndice general . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 26 27 27 28 28 31 31 33 39 44 45 47 49 49 53 53 55 56 56 58 58 60 60 61 62 63 64 64 65 66 67 67 68 69 70 71 72 73

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

4. Retroceso, corte y negacin 4.1. Ejemplos de uso del corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2. rboles de deduccin de 4.3. Diferencia de conjuntos . . . . . . . . . . . . . . . . . . . . . . 4.4. Agregacin de un elemento a un conjunto . . . . . . . . . . . 4.5. Separacin de una lista de nmeros en positivos y negativos 4.6. Suma de los nmeros pares de una lista de nmeros . . . . 4.7. Exponente de dos en la factorizacin de un nmero . . . . . 4.8. Transformacin de lista a conjunto . . . . . . . . . . . . . . . 4.9. Signos de crecimientos de sucesiones numricas . . . . . . . 4.10. Descomposicin en factores primos . . . . . . . . . . . . . . . 4.11. Menor elemento que cumple una propiedad . . . . . . . . . 4.12. Nmeros libres de cuadrados . . . . . . . . . . . . . . . . . . 4.13. Suma de los nmeros libres de cuadrados . . . . . . . . . . . 4.14. Mximo nmero de una lista . . . . . . . . . . . . . . . . . . 4.15. Longitud de las subsucesiones comunes maximales . . . . . 4.16. Elementos repetidos en una lista . . . . . . . . . . . . . . . . 4.17. Subconjunto maximal . . . . . . . . . . . . . . . . . . . . . . . 4.18. Suma de los elementos con posiciones mltiplos de n . . . . 4.19. Compresin de listas . . . . . . . . . . . . . . . . . . . . . . . 4.20. Empaquetamiento de listas . . . . . . . . . . . . . . . . . . . 4.21. Codicacin por longitud . . . . . . . . . . . . . . . . . . . . 4.22. Codicacin reducida por longitud . . . . . . . . . . . . . . . 4.23. Decodicacin de lista . . . . . . . . . . . . . . . . . . . . . . 4.24. Codicacin reducida directa . . . . . . . . . . . . . . . . . . 4.25. Cota superior de una lista de nmeros . . . . . . . . . . . . .

ndice general

5

4.26. Dientes de sierra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5. Programacin lgica de segundo orden 5.1. Determinacin de un nmero por su factorial . . . . . . . 5.2. rbol de resolucin y deniciones equivalentes . . . . . 5.3. Nodos de una generacin en una lista de rboles binarios 5.4. Lista de elementos nicos . . . . . . . . . . . . . . . . . . 5.5. Elementos ms frecuentes de una lista . . . . . . . . . . . 5.6. Problema 3n + 1 . . . . . . . . . . . . . . . . . . . . . . . . 5.7. Nmeros perfectos . . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 77 79 80 83 83 84 86 89 90 90 91 91 92 93 94 96 97 97 101 103

6. Estilo y eciencia en programacin lgica 6.1. Nmero de Hardy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2. Subconjuntos de suma dada . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.3. Coloreado de mapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7. Aplicaciones de programacin declarativa 107 7.1. Formacin de grupos minimales de asignaturas compatibles . . . . . . . . 107 7.2. Simulacin de una calculadora bsica . . . . . . . . . . . . . . . . . . . . . 110 7.3. Problema de las subastas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Bibliografa Indice de deniciones 121 122

6

ndice general

IntroduccinEl 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.

7

8

ndice general

Captulo 1 Operaciones con listasUna 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.

1.1. Primer elementoEjercicio 1.1 Denir la relacin la lista . Por ejemplo,

que se verique si es el primer elemento de

Obtener las respuestas a las siguientes preguntas:

Solucin: La denicin de es

Las respuestas a las preguntas son

9

10

Captulo 1. Operaciones con listas

1.2. Resto de una listaEjercicio 1.2 Denir la relacin que se verique si es la lista obtenida a partir de la lista suprimiendo el primer elemento. Por ejemplo,

Obtener las respuestas a las siguientes preguntas:

Solucin: La denicin de es

Las respuestas a las preguntas son

1.3. Construccin de listasEjercicio 1.3 Denir la relacin que se verique si es la lista obtenida aadindole a como primer elemento. Por ejemplo,

Obtener las respuestas correspondientes a las siguientes preguntas:

1.4. Relacin de pertenencia Solucin: La denicin de es

11

Las respuestas a las preguntas son

1.4. Relacin de pertenenciaEjercicio 1.4 Denir la relacin lista . Por ejemplo,

que se verique si

es un elemento de la

Utilizar el programa para responder a las siguientes cuestiones: 1. Es un elemento de

? ? , y ?

2. Cules son los elementos de

3. Cules son los elementos comunes de

Solucin: La denicin de , por recursin en , es

Las respuesta a las preguntas son 1. Es un elemento de

?

12

Captulo 1. Operaciones con listas

?

2. Cules son los elementos de

3. Cules son los elementos comunes de

, y

?

Nota: La relacin se corresponde con la denida

.

1.5. Concatenacin de listasEjercicio 1.5 Denir la relacin que se verique si es la lista obtenida escribiendo los elementos de a continuacin de los elementos de . Por ejemplo,

Utilizar el programa para responder a las siguientes cuestiones: 1. Qu lista hay que aadirle al lista

para obtener ?

?

2. Qu listas hay que concatenar para obtener 3. Pertenece 4. Es 5. Es a la lista

? ? ? ?

una sublista de una sublista de

6. Cul es el ltimo elemento de

Solucin: La denicin de , por recursin en , es

1.5. Concatenacin de listas

13

Las repuestas a las cuestiones son 1. Qu lista hay que aadirle al lista

para obtener

?

?

2. Qu listas hay que concatenar para obtener

3. Pertenece a la lista

?

4. Es

? ? ?

una sublista de

5. Es

una sublista de

6. Cul es el ltimo elemento de

14

Captulo 1. Operaciones con listas Nota: La relacin se corresponde con la denida .

1.6. Lista inversaEjercicio 1.6 Denir la relacin que se verique si es la lista obtenida invirtiendo el orden de los elementos de la lista . Por ejemplo,

Solucin: Vamos a presentar dos deniciones de . Ambas son por recursin en . Primera solucin: Usando la relacin , se dene como

Segunda solucin: Usando un acumulador, se dene como

La relacin se verica si es la lista obtenida aadiendo la inversa de a y se dene por recursin en como sigue

Nota: La relacin se corresponde con la relacin denida .

1.7. PalndromoEjercicio 1.7 Un palndromo es una palabra que se lee igual en los dos sentidos, por ejemplo oso. Denir la relacin que se verique si la lista es un palndromo. Por ejemplo,

1.8. ltimo elemento

15

Solucin: La denicin de es

1.8. ltimo elementoEjercicio 1.8 Denir la relacin la lista . Por ejemplo,

que se verique si

es el ltimo elemento de

Solucin: Presentamos tres deniciones de . Primera solucin: Usando se dene por

Segunda solucin: Usando se dene por

Tercera solucin: Una denicin de por recursin en es

Nota: La relacin se corresponde con la relacin denida .

16

Captulo 1. Operaciones con listas

1.9. Penltimo elementoEjercicio 1.9 Denir lar relacin mento de la lista . Por ejemplo,

que se verique si

es el penltimo ele-

Solucin: Se presentan tres deniciones de . Primera solucin: Usando se dene por

Segunda solucin: Usando se dene por

Tercera solucin: Una denicin de por recursin en es

1.10. Seleccin de un elementoEjercicio 1.10 Denir la relacin

que se verique si es la lista obtenida eliminando una ocurrencia de en . Por ejemplo,

1.11. Insercin de un elemento en una lista

17

Solucin: La denicin de

, por recursin en , es

Nota: La relacin

se corresponde con la denida .

1.11. Insercin de un elemento en una listaEjercicio 1.11 Denir la relacin obtenida insertando en . Por ejemplo,

que se verique si es una lista

Solucin: La denicin de es

1.12. SublistaEjercicio 1.12 Denir la relacin que se verique si es una sublista de . Por ejemplo,

18

Captulo 1. Operaciones con listas

Solucin: La denicin de es

1.13. PermutacinEjercicio 1.13 Denir la relacin mutacin de . Por ejemplo,

que se verique si es una per-

Solucin: La denicin de

, por recursin en es

Nota: La relacin

es equivalente a la denida .

1.14. Lista con todos sus elementos igualesEjercicio 1.14 Denir la relacin que se verique si todos los elementos de la lista son iguales entre s. Por ejemplo,

1.15. Paridad de la longitud de una lista

19

es

Solucin: La denicin de

1.15. Paridad de la longitud de una listaEjercicio 1.15 Denir la relacin es par. Por ejemplo,

que se verique si la longitud de la lista

, por recursin cruzada con la relacin

Solucin: La denicin de , es

se verica si la longitud de la lista es impar. Por es

La relacin ejemplo,

La denicin de

20

Captulo 1. Operaciones con listas

1.16. Rotacin de un elementoEjercicio 1.16 Denir la relacin que se verique si es la lista obtenida a partir de colocando su primer elemento al nal. Por ejemplo,

Solucin: La denicin de es

1.17. SubconjuntoEjercicio 1.17 Denir la relacin que se verique si es un subconjunto de . Por ejemplo,

Solucin: La denicin de , por recursin en , es

Captulo 2 Aritmtica2.1. Mximo de dos nmerosEjercicio 2.1 Denir la relacin . Por ejemplo,

que se verique si

es el mximo de

e

Solucin: La denicin de es

Nota: En Prolog est denida la funcin que devuelve el mximo de . Por ejemplo,

e

2.2. FactorialEjercicio 2.2 Denir la relacin Por ejemplo,

que se verique si

es el factorial de .

21

22 Solucin: La denicin de

Captulo 2. Aritmtica

, por recursin sobre , es

2.3. Sucesin de FibonacciEjercicio 2.3 La sucesin de Fibonacci es 0,1,1,2,3,5,8,13,21,. . . en la que cada trmino, salvo

que se los dos primeros, es la suma de los dos anteriores. Denir la relacin verique si es el simo trmino de la sucesin de Fibonacci. Por ejemplo,

Solucin: La denicin de

, por induccin en , es

2.4. Mximo comn divisorEjercicio 2.4 Denir la relacin divisor de e . Por ejemplo,

que se verique si

es el mximo comn

Solucin: La denicin de es

2.5. Longitud de una lista

23

2.5. Longitud de una listaEjercicio 2.5 Denir la relacin lista . Por ejemplo

que se verique si es la longitud de la

Solucin: La denicin de

es

se corresponde con la relacin denida .

Nota: La relacin

2.6. Lista de nmeros acotada por su longitudEjercicio 2.6 Una lista est acotada si todos sus elementos son menores que su longitud. Denir que se verique si todos los elementos de la lista de nmeros la relacin son menores que la longitud de . Por ejemplo,

es

Solucin: La denicin de

24

Captulo 2. Aritmtica

donde se verica si todos los elementos de la lista de nmeros son menores que . Por ejemplo,

y est denida por

2.7. Mximo de una lista de nmerosEjercicio 2.7 Denir la relacin lista de nmeros . Por ejemplo,

que se verique si

es el mximo de la

Solucin: La denicin de es

2.8. Suma de los elementos de una listaEjercicio 2.8 Denir la relacin elementos de la lista de nmeros . Por ejemplo,

que se verique si

es la suma de los

2.9. Lista de nmeros ordenada

25

es

Solucin: La denicin de

Nota: La relacin

se corresponde con la relacin denida .

2.9. Lista de nmeros ordenadaEjercicio 2.9 Denir la relacin que se verique si la lista de nmeros est ordenada de manera creciente. Por ejemplo,

es

Solucin: La denicin de

2.10. Suma parcial de una listaEjercicio 2.10 Denir la relacin que se verique si es un subconjunto de tal que la suma de sus elementos es . Por ejemplo,

26

Captulo 2. Aritmtica Solucin: Se presentan dos deniciones de . Primera solucin: Una denicin, usando (p. 20) y

es

(p. 25),

Segunda solucin: Una denicin recursiva de

es

2.11. Lista de veces el nmero Ejercicio 2.11 Denir la relacin que se verique si es la lista de longitud cuyos elementos son . Por ejemplo,

Solucin: La denicin de es

donde se verica si es la lista de longitud cuyos elementos son . Por ejemplo,

y se dene por

2.12. Generacin de lista de nmeros

27

2.12. Generacin de lista de nmeros que se verica si L es la lista Ejercicio 2.12 Denir la relacin de los nmeros desde N hasta M, ambos inclusive. Por ejemplo, es

Solucin: La denicin de

Nota: La relacin

se corresponde con la denida .

2.13. Intervalo enteroEjercicio 2.13 Denir la relacin tero tal que . Por ejemplo,

que se verique si

es un nmero en-

Solucin: La denicin de es

Nota: La relacin se corresponde con la denida

.

28

Captulo 2. Aritmtica

2.14. Ksimo elementoEjercicio 2.14 Denir la relacin que se verique si elemento de la lista (se empieza a numerar en 1). Por ejemplo, es el simo

Solucin: La denicin de

es

Nota: La relacin

se corresponde con la relacin denida .

2.15. Multiplicacin de las ocurrencias de los elementos de una lista que se verica si es la lista Ejercicio 2.15 Denir la relacin obtenida repitiendo veces los elementos de la lista . Por ejemplo, Solucin: La denicin de es

donde se verica si es la lista obtenida repitiendo veces el primer elemento de y veces los restantes elementos. Por ejemplo,

Su denicin es

2.15. Multiplicacin de las ocurrencias de los elementos de una lista

29

30

Captulo 2. Aritmtica

Captulo 3 Estructuras3.1. Segmentos como objetos estructuradosEjercicio 3.1 Supongamos que representamos los puntos del plano mediante trminos de la forma donde e son nmeros, y los segmentos del plano mediante trminos de la forma donde y son los puntos extremos del segmento. Denir las relaciones y que se veriquen si el segmento es vertical (resp. horizontal). Por ejemplo,

Usar el programa para responder a las siguientes cuestiones: 1. Es vertical el segmento que une los puntos y ? 2. Es vertical el segmento que une los puntos y ? 3. Hay algn 4. Hay algn 5. Hay algn tal que el segmento que une los puntos y sea vertical? tal que el segmento que une los puntos y sea vertical? tal que el segmento que une los puntos y sea horizontal? 31

32

Captulo 3. Estructuras 6. Para qu puntos el segmento que comienza en es vertical? 7. Hay algn segmento que sea horizontal y vertical? Solucin: Las deniciones de y son

Las respuestas a las preguntas son 1. Es vertical el segmento que une los puntos y ?

2. Es vertical el segmento que une los puntos y ?

3. Hay algn

tal que el segmento que une los puntos y sea vertical?

4. Hay algn

tal que el segmento que une los puntos y sea vertical?

5. Hay algn tal que el segmento que une los puntos y sea horizontal?

6. Para qu puntos el segmento que comienza en es vertical?

7. Hay algn segmento que sea horizontal y vertical?

3.2. Base de datos familiar

33

3.2. Base de datos familiarEjercicio 3.2 En este ejercicio vamos a trabajar con una base de datos familiar. 1. Representar la informacin relativa a las siguientes familias: En la primera familia, el padre es Toms Garca Prez, nacido el 7 de Mayo de 1960, trabaja de profesor y gana 60 euros diarios; la madre es Ana Lpez Ruiz, nacida el 10 de marzo de 1962, trabaja de mdica y gana 90 euros diarios; el hijo es Juan Garca Lpez, nacido el 5 de Enero de 1980, estudiante; la hija es Mara Garca Lpez, nacida el 12 de Abril de 1992, estudiante.

En la segunda familia,

el padre es Jos Prez Ruiz, nacido el 6 de Marzo de 1963, trabaja de pintor y gana 120 euros diarios; la madre es Luisa Glvez Prez, nacida el 12 de Mayo de 1964, trabaja de mdica y gana 90 euros diarios; un hijo es Juan Luis Prez Prez, nacido el 5 de Febrero de 1990, estudiante; una hija es Mara Jos Prez Prez, nacida el 12 de Junio de 1992, estudiante; otro hijo es Jos Mara Prez Prez, nacido el 12 de Julio de 1994, estudiante. 2. Realizar las siguientes consultas: existe familia sin hijos? existe familia con un hijo? existe familia con dos hijos? existe familia con tres hijos? existe familia con cuatro hijos.? 3. Buscar los nombres de los padres de familia con tres hijos. 4. Denir la relacin

que se verique si es un hombre casado.

34 5. Preguntar por los hombres casados. 6. Denir la relacin

Captulo 3. Estructuras

que se verique si es una mujer casada.

7. Preguntar por las mujeres casadas. 8. Determinar el nombre de todas las mujeres casadas que trabajan. 9. Denir la relacin

que se verique si gura en alguna lista de hijos.

10. Preguntar por los hijos. 11. Denir la relacin que se verique si es una persona existente en la base de datos. 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. 14. Denir la relacin ces es su fecha de nacimiento. 15. Buscar todos los hijos nacidos en 1992. 16. Denir la relacin que se verique si el sueldo de la persona es .

de forma que si es una persona, enton-

17. Buscar todas las personas nacidas antes de 1964 cuyo sueldo sea superior a 72 euros diarios. 18. Denir la relacin de forma que si es una lista de personas, entonces es la suma de los sueldos de las personas de la lista . 19. Calcular los ingresos totales de cada familia. Solucin: Solucin del apartado 1: La representacin de la informacin sobre las dos familias es

3.2. Base de datos familiar

35

Solucin del apartado 2: Las consultas, y sus respuestas son,

Solucin del apartado 3:

Solucin del apartado 4:

36 Solucin del apartado 5:

Captulo 3. Estructuras

Solucin del apartado 6:

Solucin del apartado 7:

Solucin del apartado 8:

Solucin del apartado 9:

Solucin del apartado 10:

3.2. Base de datos familiar

37

Solucin del apartado 11:

Solucin del apartado 12:

Solucin del apartado 13:

Solucin del apartado 14:

38

Captulo 3. Estructuras

Solucin del apartado 15:

Solucin del apartado 16:

Solucin del apartado 17:

Solucin del apartado 18:

Solucin del apartado 19:

3.3. Autmata nodeterminista

39

3.3. Autmata nodeterminista

Ejercicio 3.3 Consideremos el autmata representado por

40a

Captulo 3. Estructuras

a e1 e2

b

b

e4 b

e3

siendo el estado nal. 1. Representar el autmata utilizando las siguientes relaciones

que se verica si es el estado nal. que se verica si se puede pasar del estado al estado usando la letra . que se verica si se puede pasar del estado al estado mediante un movimiento nulo.2. Denir la relacin que se verique si el autmata, a partir del estado , acepta la lista . Por ejemplo,

. .

3. Determinar si el autmata acepta la lista

4. Determinar los estados a partir de los cuales el autmata acepta la lista

5. Determinar las palabras de longitud 3 aceptadas por el autmata a partir del estado . 6. Denir la relacin que se verique si el autmata, a partir del estado , acepta la lista y la longitud de es .

3.3. Autmata nodeterminista 7. Buscar las cadenas aceptadas a partir de con longitud 3.

41

que se verique si el autmata, a partir 8. Denir la relacin del estado , acepta la lista y la longitud de es menor o igual que .9. Buscar las cadenas aceptadas a partir de con longitud menor o igual 3. Solucin: Solucin del apartado 1:

Solucin del apartado 2:

Solucin del apartado 3:

Solucin del apartado 4:

Solucin del apartado 5:

42

Captulo 3. Estructuras

Solucin del apartado 6: Presentamos dos deniciones. La primera usando

La segunda denicin es una variacin de la denicin de acepta:

Nota: La primera denicin es ms simple y eciente que la segunda como se observa en el siguiente ejemplo

A partir de ahora, adoptaremos la denicin

Solucin del apartado 7:

3.3. Autmata nodeterminista

43

Solucin del apartado 8: Presentamos dos deniciones. La primera usando

y la segunda modicando

Nota: La primera denicin es ms simple y eciente que la segunda como se observa en el siguiente ejemplo

Solucin del apartado 9:

A partir de ahora, adoptaremos la denicin

44

Captulo 3. Estructuras

3.4. El problema del mono y el pltanoEjercicio 3.4 Un mono se encuentra en la puerta de una habitacin. En el centro de la habitacin hay un pltano colgado del techo. El mono est hambriento y desea coger el pltano, pero no lo alcanza desde el suelo. En la ventana de la habitacin hay una silla que el mono puede usar. El mono puede realizar las siguientes acciones: pasear de un lugar a otro de la habitacin, empujar la silla de un lugar a otro de la habitacin (si est en el mismo lugar que la silla), subirse en la silla (si est en el mismo lugar que la silla) y coger el pltano (si est encima de la silla en el centro de la habitacin). Denir la relacin que se verique si es una sucesin de acciones que aplicadas al estado permiten al mono coger el pltano. Por ejemplo,

donde signica 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 se verica si en el se puede aplicar la accin y como resultado de su aplicacin se pasa al .

3.5. Movimientos del caballo del ajedrez

45

3.5. Movimientos del caballo del ajedrezEjercicio 3.5 Supongamos que los cuadros del tablero de ajedrez los representamos por pares de nmeros con e entre y . 1. Denir la relacin que se verica si el caballo puede pasar en un movimiento del cuadrado al cuadrado . Por ejemplo,

2. Denir la relacin que se verique si es una lista de cuadrados representando el camino recorrido por un caballo sobre un tablero vaco. Por ejemplo,

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 al . Cuntos caminos de dicha longitud hay de [1,1] a [2,2]? Solucin: Solucin del apartado 1:

La relacin tales e verticales.

se verica si un caballo puede moverse espacios horizon-

46

Captulo 3. Estructuras

La relacin se verica si est entre 1 y 8.

Solucin del apartado 2:

Solucin del apartado 3:

Solucin del apartado 4:

3.6. Mximo elemento de un rbol binario

47

3.6. Mximo elemento de un rbol binarioEjercicio 3.6 Un rbol binario es vaco o consta de tres partes: la raz (que debe de ser un nmero positivo), el subrbol izquierdo (que debe ser un rbol binario) y el subrbol derecho (que debe ser un rbol binario). Usaremos la siguiente representacin

representa el rbol vaco representa el rbol de la raz , subrbol izquierdo y subrbol derecho .Por ejemplo, representa el rbol

Denir la relacin que se verique si Por ejemplo,

es el mximo de los nodos del rbol .

Solucin: La denicin de es

48

Captulo 3. Estructuras

Captulo 4 Retroceso, corte y negacin4.1. Ejemplos de uso del corteEjercicio 4.1 si si 1. Denir la relacin de forma que:

< , entonces = ; < , entonces = ; , entonces = .

si

2. Construir el rbol de deduccin correspondiente a la cuestin 3. Denir la relacin a partir de la denicin de , introduciendo un corte al nal de las dos primeras clusulas. 4. Construir el rbol de deduccin correspondiente a la cuestin 5. Construir el rbol de deduccin correspondiente a la cuestin 6. En el rbol anterior se observa que se efectan comparaciones innecesarias (por ejemplo, ). Denir la relacin despus de fallar la comparacin , efecta la comparacin suprimiendo en la denicin de las comparaciones innecesarias. 7. Construir el rbol de deduccin correspondiente a la cuestin

49

50

Captulo 4. Retroceso, corte y negacin 8. Construir el rbol de deduccin correspondiente a la cuestin 9. Denir la relacin

a partir de la denicin de

, suprimiendo los cortes.

10. Obtener las respuestas correspondientes a la cuestin Solucin: Solucin del apartado 1: La denicin de es

Solucin del apartado 2: El rbol de deduccin se muestra en la gura 4.1 (pgina 50).f(1,Y), 2