107
Ejercicios de programación declarativa con Prolog José A. Alonso Jiménez Grupo de Lógica Computacional Dpto. de Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Sevilla, 1 de Enero de 2006 (Versión de 7 de noviembre de 2006)

Ejercicios de Programación Declarativa con Prolog

Embed Size (px)

DESCRIPTION

El objetivo del presente trabajo es presentar una colección de ejercicios para la asignatura “Programación declarativa” de tercer curso de la Ingeniería Informática.

Citation preview

Ejercicios de programacin declarativa conPrologJos A. Alonso JimnezGrupo de Lgica ComputacionalDpto. de Ciencias de la Computacin e Inteligencia ArticialUniversidad de SevillaSevilla, 1 de Enero de 2006 (Versin de 7 de noviembre de 2006)2Esta obra est bajo una licencia ReconocimientoNoComercialCompartirIgual 2.5 Spain de Crea-tive Commons.Se permite:copiar, distribuir y comunicar pblicamente la obrahacer obras derivadasBajo las condiciones siguientes:Reconocimiento. Debe reconocer los crditos de la obra de la manera especicadapor 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 unaobra derivada, slo puede distribuir la obra generada bajo una licencia idntica asta.Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licenciade esta obra.Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titularde los derechos de autor.Esto es un resumen de la licencia completa. Para ver una copia de esta licencia, visiteo envie una carta aCreative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.ndice generalIntroduccin 61. Operaciones con listas 91.1. Primer elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.2. Resto de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.3. Construccin de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4. Relacin de pertenencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5. Concatenacin de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.6. Lista inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.7. Palndromo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.8. ltimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141.9. Penltimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.10. Seleccin de un elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151.11. Insercin de un elemento en una lista . . . . . . . . . . . . . . . . . . . . . . . . . . 161.12. Sublista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.13. Permutacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.14. Lista con todos sus elementos iguales . . . . . . . . . . . . . . . . . . . . . . . . . . 171.15. Paridad de la longitud de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.16. Rotacin de un elemento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181.17. Subconjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182. Aritmtica 212.1. Mximo de dos nmeros. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2. Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.3. Sucesin de Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.4. Mximo comn divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.5. Longitud de una lista. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.6. Lista de nmeros acotada por su longitud. . . . . . . . . . . . . . . . . . . . . . . . 232.7. Mximo de una lista de nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.8. Suma de los elementos de una lista. . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.9. Lista de nmeros ordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.10. Suma parcial de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.11. Lista de veces el nmero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.12. Generacin de lista de nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.13. Intervalo entero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.14. Ksimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2734 ndice general2.15. Multiplicacin de las ocurrencias de los elementos de una lista. . . . . . . . . . . . 273. Estructuras 293.1. Segmentos como objetos estructurados . . . . . . . . . . . . . . . . . . . . . . . . . . 293.2. Base de datos familiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3. Autmata nodeterminista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363.4. El problema del mono y el pltano . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.5. Movimientos del caballo del ajedrez . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.6. Mximo elemento de un rbol binario . . . . . . . . . . . . . . . . . . . . . . . . . . 434. Retroceso, corte y negacin 454.1. Ejemplos de uso del corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 454.2. rboles de deduccin de . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.3. Diferencia de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484.4. Agregacin de un elemento a un conjunto. . . . . . . . . . . . . . . . . . . . . . . . 504.5. Separacin de una lista de nmeros en positivos y negativos . . . . . . . . . . . . . 514.6. Suma de los nmeros pares de una lista de nmeros . . . . . . . . . . . . . . . . . 514.7. Exponente de dos en la factorizacin de un nmero . . . . . . . . . . . . . . . . . . 524.8. Transformacin de lista a conjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534.9. Signos de crecimientos de sucesiones numricas . . . . . . . . . . . . . . . . . . . . 544.10. Descomposicin en factores primos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.11. Menor elemento que cumple una propiedad . . . . . . . . . . . . . . . . . . . . . . 564.12. Nmeros libres de cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.13. Suma de los nmeros libres de cuadrados . . . . . . . . . . . . . . . . . . . . . . . . 574.14. Mximo nmero de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.15. Longitud de las subsucesiones comunes maximales . . . . . . . . . . . . . . . . . . 584.16. Elementos repetidos en una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.17. Subconjunto maximal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604.18. Suma de los elementos con posiciones mltiplos de n . . . . . . . . . . . . . . . . . 604.19. Compresin de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.20. Empaquetamiento de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.21. Codicacin por longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.22. Codicacin reducida por longitud. . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.23. Decodicacin de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.24. Codicacin reducida directa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.25. Cota superior de una lista de nmeros . . . . . . . . . . . . . . . . . . . . . . . . . . 664.26. Dientes de sierra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675. Programacin lgica de segundo orden 695.1. Determinacin de un nmero por su factorial . . . . . . . . . . . . . . . . . . . . . . 695.2. rbol de resolucin y deniciones equivalentes . . . . . . . . . . . . . . . . . . . . 715.3. Nodos de una generacin en una lista de rboles binarios. . . . . . . . . . . . . . . 735.4. Lista de elementos nicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745.5. Elementos ms frecuentes de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . 745.6. Problema 3n +1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.7. Nmeros perfectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77ndice general 55.8. Determinacin de tringulos equilteros. . . . . . . . . . . . . . . . . . . . . . . . . 805.9. Operacin binaria aplicada a listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.10. Nmeros en un trmino . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.11. Palabra sin vocales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.12. Palabras maximales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.13. Clausura transitiva de una relacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . 825.14. Traduccin de cifras a palabras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835.15. Transformacin de lista dependiente de la posicin . . . . . . . . . . . . . . . . . . 845.16. Aplanamiento de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856. Estilo y eciencia en programacin lgica 876.1. Nmero de Hardy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876.2. Subconjuntos de suma dada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 906.3. Coloreado de mapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927. Aplicaciones de programacin declarativa 957.1. Formacin de grupos minimales de asignaturas compatibles . . . . . . . . . . . . . 957.2. Simulacin de una calculadora bsica . . . . . . . . . . . . . . . . . . . . . . . . . . 987.3. Problema de las subastas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103Bibliografa 107Indice de deniciones 1076 ndice generalIntroduccinEl objetivodel presente trabajoes presentar una coleccin de ejercicios para la asignaturaProgramacin declarativa de tercer curso de la Ingeniera Informtica.Estos ejercicios complementa los apuntes de introduccin a la programacin declarativa conProlog ([1]) y a las transparencias de clase ([2]).Todos los ejercicios se han comprobado usando la versin 5.6.18 de SWI Prolog.78 ndice generalCaptulo 1Operaciones con listasUna lista es la lista vaca o se compone de un primer elemento y un resto, que es una lista. EnProlog, la lista vaca se representa por y las listas no vaca son de la forma donde es lacabeza y es el resto.1.1. Primer elementoEjercicio 1.1Denir la relacin que se verique si es el primer elemento de la lista .Por ejemplo,Obtener las respuestas a las siguientes preguntas:Solucin: La denicin de esLas respuestas a las preguntas son910 Captulo 1. Operaciones con listas1.2. Resto de una listaEjercicio 1.2Denir la relacin que se verique si es la lista obtenida a partir de lalista suprimiendo el primer elemento. Por ejemplo,Obtener las respuestas a las siguientes preguntas:Solucin: La denicin de esLas respuestas a las preguntas son1.3. Construccin de listasEjercicio 1.3Denir la relacin que se verique si es la lista obtenida aadindolea como primer elemento. Por ejemplo,Obtener las respuestas correspondientes a las siguientes preguntas:Solucin: La denicin de esLas respuestas a las preguntas son1.4. Relacin de pertenencia 111.4. Relacin de pertenenciaEjercicio 1.4Denir la relacin que se verique si es un elemento de la lista . Porejemplo,Utilizar el programa para responder a las siguientes cuestiones:1. Es un elemento de ?2. Cules son los elementos de ?3. Cules son los elementos comunes de , y ?Solucin: La denicin de , por recursin en , esLas respuesta a las preguntas son1. Es un elemento de ?2. Cules son los elementos de ?3. Cules son los elementos comunes de , y ?Nota: La relacin se corresponde con la denida .12 Captulo 1. Operaciones con listas1.5. Concatenacin de listasEjercicio 1.5Denir la relacin que se verique si es la lista obtenida escribiendolos 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 a la lista ?4. Es una sublista de ?5. Es una sublista de ?6. Cul es el ltimo elemento de ?Solucin: La denicin de , por recursin en , esLas repuestas a las cuestiones son1. Qu lista hay que aadirle al lista para obtener ?2. Qu listas hay que concatenar para obtener ?3. Pertenece a la lista ?1.6. Lista inversa 134. Es una sublista de ?5. Es una sublista de ?6. Cul es el ltimo elemento de ?Nota: La relacin se corresponde con la denida .1.6. Lista inversaEjercicio 1.6Denir la relacin que se verique si es la lista obtenida invirtiendoel orden de los elementos de la lista . Por ejemplo,Solucin: Vamos a presentar dos deniciones de . Ambas son por recursinen .Primera solucin: Usando la relacin , se dene comoSegunda solucin: Usando un acumulador, se dene comoLa relacin se verica si es la lista obtenida aadiendo lainversa de a y se dene por recursin en como sigueNota: La relacin se corresponde con la relacin denida .14 Captulo 1. Operaciones con listas1.7. PalndromoEjercicio 1.7Un palndromo es una palabra que se lee igual en los dos sentidos, por ejemplo oso. Denirla relacin que se verique si la lista es un palndromo. Por ejemplo,Solucin: La denicin de es1.8. ltimo elementoEjercicio 1.8Denir la relacin que se verique si es el ltimo elemento de la lista .Por ejemplo,Solucin: Presentamos tres deniciones de .Primera solucin: Usando se dene porSegunda solucin: Usando se dene porTercera solucin: Una denicin de por recursin en esNota: La relacin se corresponde con la relacin denida .1.9. Penltimo elemento 151.9. Penltimo elementoEjercicio 1.9Denir lar relacin que se verique si es el penltimo elemento de lalista . Por ejemplo,Solucin: Se presentan tres deniciones de .Primera solucin: Usando se dene porSegunda solucin: Usando se dene porTercera solucin: Una denicin de por recursin en es1.10. Seleccin de un elementoEjercicio 1.10Denirlarelacin queseveriquesi eslalistaobtenidaeliminando una ocurrencia de en . Por ejemplo,16 Captulo 1. Operaciones con listasSolucin: La denicin de , por recursin en , esNota: La relacin se corresponde con la denida .1.11. Insercin de un elemento en una listaEjercicio 1.11Denir la relacin que se verique si es una lista obtenida in-sertando en . Por ejemplo,Solucin: La denicin de es1.12. SublistaEjercicio 1.12Denir la relacin que se verique si es una sublista de . Porejemplo,Solucin: La denicin de es1.13. Permutacin 171.13. PermutacinEjercicio 1.13Denir la relacin que se verique si es una permutacin de. Por ejemplo,Solucin: La denicin de , por recursin en esNota: La relacin es equivalente a la denida .1.14. Lista con todos sus elementos igualesEjercicio 1.14Denir la relacin que se verique si todos los elementos de la listason iguales entre s. Por ejemplo,Solucin: La denicin de es1.15. Paridad de la longitud de una listaEjercicio 1.15Denir la relacin que se verique si la longitud de la lista es par.Por ejemplo,18 Captulo 1. Operaciones con listasSolucin: La denicin de , por recursin cruzada con la relacin ,esLa relacin se verica si la longitud de la lista es impar. Por ejemplo,La denicin de es1.16. Rotacin de un elementoEjercicio 1.16Denir la relacin que se verique si es la lista obtenida a partir decolocando su primer elemento al nal. Por ejemplo,Solucin: La denicin de es1.17. SubconjuntoEjercicio 1.17Denirlarelacin queseveriquesi esunsubconjuntode. Por ejemplo,1.17. Subconjunto 19Solucin: La denicin de , por recursin en , es20 Captulo 1. Operaciones con listasCaptulo 2Aritmtica2.1. Mximo de dos nmerosEjercicio 2.1Denirlarelacin queseveriquesi esel mximode e . Porejemplo,Solucin: La denicin de esNota:En Prologestdenida lafuncin quedevuelve el mximode e .Porejemplo,2.2. FactorialEjercicio 2.2Denir la relacin que se verique si es el factorial de . Por ejemplo,Solucin: La denicin de , por recursin sobre , es2122 Captulo 2. Aritmtica2.3. Sucesin de FibonacciEjercicio 2.3La sucesin de Fibonacci es 0,1,1,2,3,5,8,13,21,. . . en la que cada trmino, salvo los dos pri-meros, es la suma de los dos anteriores. Denir la relacin que se verique si es elsimo trmino de la sucesin de Fibonacci. Por ejemplo,Solucin: La denicin de , por induccin en , es2.4. Mximo comn divisorEjercicio 2.4Denir la relacin que se verique si es el mximo comn divisor de e. Por ejemplo,Solucin: La denicin de es2.5. Longitud de una lista 232.5. Longitud de una listaEjercicio 2.5Denir la relacin que se verique si es la longitud de la lista . PorejemploSolucin: La denicin de esNota: La relacin se corresponde con la relacin denida .2.6. Lista de nmeros acotada por su longitudEjercicio 2.6Una lista est acotada si todos sus elementos son menores que su longitud. Denir la relacinquese verique si todoslos elementos de lalista de nmeros sonmenores que lalongitud de . Por ejemplo,Solucin: La denicin de esdonde se verica si todos los elementos de la lista de nmeros sonmenores que . Por ejemplo,y est denida por24 Captulo 2. Aritmtica2.7. Mximo de una lista de nmerosEjercicio 2.7Denirlarelacin queseveriquesi esel mximodelalistadenmeros . Por ejemplo,Solucin: La denicin de es2.8. Suma de los elementos de una listaEjercicio 2.8Denir la relacin que se verique si es la suma de los elementos dela lista de nmeros . Por ejemplo,Solucin: La denicin de esNota: La relacin se corresponde con la relacin denida .2.9. Lista de nmeros ordenadaEjercicio 2.9Denir la relacin que se verique si la lista de nmeros est ordenada demanera creciente. Por ejemplo,Solucin: La denicin de es2.10. Suma parcial de una lista 252.10. Suma parcial de una listaEjercicio 2.10Denir la relacin que se verique si es un subconjuntode tal que la suma de sus elementos es . Por ejemplo,Solucin: Se presentan dos deniciones de .Primera solucin: Una denicin, usando (p. 19) y (p. 24), esSegunda solucin: Una denicin recursiva de es2.11. Lista de veces el nmeroEjercicio 2.11Denir la relacin que se verique si es la lista de longitud cuyos ele-mentos son . Por ejemplo,Solucin: La denicin de esdonde se verica si es la lista de longitud cuyos elementos son . Porejemplo,26 Captulo 2. Aritmticay se dene por2.12. Generacin de lista de nmerosEjercicio 2.12Denirlarelacin quesevericasiLeslalistadelosnmeros desde N hasta M, ambos inclusive. Por ejemplo,Solucin: La denicin de esNota: La relacin se corresponde con la denida .2.13. Intervalo enteroEjercicio 2.13Denir la relacin que se verique si es un nmero entero tal que . Por ejemplo,Solucin: La denicin de es2.14. Ksimo elemento 27Nota: La relacin se corresponde con la denida .2.14. Ksimo elementoEjercicio 2.14Denir la relacin que se verique si es el simo elementode la lista (se empieza a numerar en 1). Por ejemplo,Solucin: La denicin de esNota: La relacin se corresponde con la relacin denida .2.15. Multiplicacin de las ocurrencias de los elementos de unalistaEjercicio 2.15Denir la relacin que se verica si es la lista obtenidarepitiendo veces los elementos de la lista . Por ejemplo,Solucin: La denicin de esdonde se verica si es la lista obtenida repitiendo vecesel primer elemento de y veces los restantes elementos. Por ejemplo,28 Captulo 2. AritmticaSu denicin esCaptulo 3Estructuras3.1. Segmentos como objetos estructuradosEjercicio 3.1Supongamos que representamos los puntos del plano mediante trminos de la formadonde e son nmeros, y los segmentos del plano mediante trminos de la formadonde y son los puntos extremos del segmento. Denir las relacionesyque 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 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?Solucin: Las deniciones de y son2930 Captulo 3. EstructurasLas respuestas a las preguntas son1. 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 313.2. Base de datos familiarEjercicio 3.2En 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 60euros diarios;la madre es Ana Lpez Ruiz, nacida el 10 de marzo de 1962, trabaja de mdica y gana 90euros 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,elpadreesJosPrezRuiz,nacidoel6deMarzode1963,trabajadepintorygana120euros diarios;la madre es Luisa Glvez Prez, nacida el 12 de Mayo de 1964, trabaja de mdica y gana 90euros 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.5. Preguntar por los hombres casados.6. Denir la relacin 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.32 Captulo 3. Estructuras12. 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 de forma que si es una persona, entonces es sufecha de nacimiento.15. Buscar todos los hijos nacidos en 1992.16. Denir la relacin que se verique si el sueldo de la persona es .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 delos 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 fami-lias es3.2. Base de datos familiar 33Solucin del apartado 2: Las consultas, y sus respuestas son,Solucin del apartado 3:Solucin del apartado 4:Solucin del apartado 5:Solucin del apartado 6:Solucin del apartado 7:34 Captulo 3. EstructurasSolucin del apartado 8:Solucin del apartado 9:Solucin del apartado 10:Solucin del apartado 11:Solucin del apartado 12:Solucin del apartado 13:3.2. Base de datos familiar 35Solucin del apartado 14:Solucin del apartado 15:Solucin del apartado 16:Solucin del apartado 17:Solucin del apartado 18:36 Captulo 3. EstructurasSolucin del apartado 19:3.3. Autmata nodeterministaEjercicio 3.3Consideremos el autmata representado por3.3. Autmata nodeterminista 37be1aae2be3 e4bsiendo el estado nal.1. Representar el autmata utilizando las siguientes relacionesque se verica si es el estado nal.que se verica si se puede pasar del estado al estado usando la letra .quesevericasisepuedepasardelestado alestado medianteunmovi-miento 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 .7. Buscar las cadenas aceptadas a partir de con longitud 3.8. Denir la relacin que se verique si el autmata, a partir 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.38 Captulo 3. EstructurasSolucin: Solucin del apartado 1:Solucin del apartado 2:Solucin del apartado 3:Solucin del apartado 4:Solucin del apartado 5:Solucin del apartado 6: Presentamos dos deniciones. La primera usando3.3. Autmata nodeterminista 39La 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 elsiguiente ejemploA partir de ahora, adoptaremos la denicinSolucin del apartado 7:Solucin del apartado 8: Presentamos dos deniciones. La primera usandoy la segunda modicando40 Captulo 3. EstructurasNota: La primera denicin es ms simple y eciente que la segunda como se observa en elsiguiente ejemploA partir de ahora, adoptaremos la denicinSolucin del apartado 9:3.4. El problema del mono y el pltanoEjercicio 3.4Un mono se encuentra en la puerta de una habitacin. En el centro de la habitacin hay unpltanocolgadodeltecho.Elmonoesthambrientoydeseacogerelpltano,peronoloalcanzadesdeelsuelo. Enlaventanadelahabitacinhayunasillaqueelmonopuedeusar. Elmonopuederealizarlassiguientesacciones:paseardeunlugaraotrodelahabitacin,empujarlasilladeunlugaraotrodelahabitacin (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 alestado permiten al mono coger el pltano. Por ejemplo,3.5. Movimientos del caballo del ajedrez 41donde 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 enel se puede aplicar la accin y como resultado de su aplicacin se pasaal .3.5. Movimientos del caballo del ajedrezEjercicio 3.5Supongamos que los cuadros del tablero de ajedrez los representamos por pares de nmeroscon e entre y .1. Denir la relacin que se verica si el caballo puede pasar en un movimiento delcuadrado al cuadrado . Por ejemplo,2. Denir la relacin que se verique si es una lista de cuadrados representando el caminorecorrido por un caballo sobre un tablero vaco. Por ejemplo,42 Captulo 3. Estructuras3. Usando la relacin , escribir una pregunta para determinar los caminos de longitud 4 por losque puede desplazarse un caballo desde cuadro hasta el otro extremo del tablero ( =) de formaque 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 se verica si un caballo puede moverse espacios horizontales everticales.La relacin se verica si est entre 1 y 8.Solucin del apartado 2:Solucin del apartado 3:3.6. Mximo elemento de un rbol binario 43Solucin del apartado 4:3.6. Mximo elemento de un rbol binarioEjercicio 3.6Un 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 representacinrepresenta el rbol vacorepresenta el rbol de la raz , subrbol izquierdo y subrbol derecho .Por ejemplo, representa el rbolDenir la relacin que se verique si es el mximo de los nodos del rbol . Por ejemplo,44 Captulo 3. EstructurasSolucin: La denicin de esCaptulo 4Retroceso, corte y negacin4.1. Ejemplos de uso del corteEjercicio 4.1 1. Denir la relacin de forma que:si < , entonces = ;si < , entonces = ;si , entonces = .2. Construir el rbol de deduccin correspondiente a la cuestin3. Denir la relacin a partir de la denicin de , introduciendo un corte al nal delas dos primeras clusulas.4. Construir el rbol de deduccin correspondiente a la cuestin5. Construir el rbol de deduccin correspondiente a la cuestin6. En el rbol anterior se observa que se efectan comparaciones innecesarias (por ejemplo, despus defallar la comparacin , efecta la comparacin ). Denir la relacin suprimiendoen la denicin de las comparaciones innecesarias.7. Construir el rbol de deduccin correspondiente a la cuestin8. Construir el rbol de deduccin correspondiente a la cuestin9. Denir la relacin a partir de la denicin de , suprimiendo los cortes.4546 Captulo 4. Retroceso, corte y negacin10. Obtener las respuestas correspondientes a la cuestinSolucin: Solucin del apartado 1: La denicin de esSolucin del apartado 2: El rbol de deduccin se muestra en la gura 4.1 (pgina 46).1