Ejercicios programacion prolog

601 views

Published on

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
601
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
44
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Ejercicios programacion prolog

  1. 1. 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 20 de septiembre de 2007)
  2. 2. 2 Esta obra está bajo una licencia Reconocimiento–NoComercial–CompartirIgual 2.5 Spain de Creative Commons. Se permite: copiar, distribuir y comunicar públicamente la obra hacer obras derivadas Bajo las condiciones siguientes: Reconocimiento. Debe reconocer los créditos 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, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos 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.
  3. 3. Índice general Introducción 6 1. Operaciones con listas 9 1.1. Primer elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.2. Resto de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3. Construcción de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.4. Relación de pertenencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.5. Concatenación de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.6. Lista inversa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.7. Palíndromo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 1.8. Último elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.9. Penúltimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.10. Selección de un elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.11. Inserción de un elemento en una lista . . . . . . . . . . . . . . . . . . . . . 17 1.12. Sublista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.13. Permutación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.14. Lista con todos sus elementos iguales . . . . . . . . . . . . . . . . . . . . . 18 1.15. Paridad de la longitud de una lista . . . . . . . . . . . . . . . . . . . . . . . 19 1.16. Rotación de un elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.17. Subconjunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2. Aritmética 21 2.1. Máximo de dos números . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.2. Factorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 2.3. Sucesión de Fibonacci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.4. Máximo común divisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.5. Longitud de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.6. Lista de números acotada por su longitud . . . . . . . . . . . . . . . . . . . 23 2.7. Máximo de una lista de números . . . . . . . . . . . . . . . . . . . . . . . . 24 2.8. Suma de los elementos de una lista . . . . . . . . . . . . . . . . . . . . . . . 24 2.9. Lista de números ordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3
  4. 4. 4 Índice general 2.10. Suma parcial de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 2.11. Lista de Æ veces el número Æ . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 2.12. Generación de lista de números . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.13. Intervalo entero . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.14. K–ésimo elemento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.15. Multiplicación de las ocurrencias de los elementos de una lista . . . . . . . 28 3. Estructuras 31 3.1. Segmentos como objetos estructurados . . . . . . . . . . . . . . . . . . . . . 31 3.2. Base de datos familiar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 3.3. Autómata no–determinista . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4. El problema del mono y el plátano . . . . . . . . . . . . . . . . . . . . . . . 44 3.5. Movimientos del caballo del ajedrez . . . . . . . . . . . . . . . . . . . . . . 45 3.6. Máximo elemento de un árbol binario . . . . . . . . . . . . . . . . . . . . . 47 4. Retroceso, corte y negación 49 4.1. Ejemplos de uso del corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.2. Árboles de deducción de Ñ Ñ Ö . . . . . . . . . . . . . . . . . . . . . . 53 4.3. Diferencia de conjuntos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4. Agregación de un elemento a un conjunto . . . . . . . . . . . . . . . . . . . 55 4.5. Separación de una lista de números en positivos y negativos . . . . . . . . 56 4.6. Suma de los números pares de una lista de números . . . . . . . . . . . . 56 4.7. Exponente de dos en la factorización de un número . . . . . . . . . . . . . 58 4.8. Transformación de lista a conjunto . . . . . . . . . . . . . . . . . . . . . . . 58 4.9. Signos de crecimientos de sucesiones numéricas . . . . . . . . . . . . . . . 60 4.10. Descomposición en factores primos . . . . . . . . . . . . . . . . . . . . . . . 60 4.11. Menor elemento que cumple una propiedad . . . . . . . . . . . . . . . . . 61 4.12. Números libres de cuadrados . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4.13. Suma de los números libres de cuadrados . . . . . . . . . . . . . . . . . . . 63 4.14. Máximo número de una lista . . . . . . . . . . . . . . . . . . . . . . . . . . 64 4.15. Longitud de las subsucesiones comunes maximales . . . . . . . . . . . . . 64 4.16. Elementos repetidos en una lista . . . . . . . . . . . . . . . . . . . . . . . . 65 4.17. Subconjunto maximal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 4.18. Suma de los elementos con posiciones múltiplos de n . . . . . . . . . . . . 67 4.19. Compresión de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 4.20. Empaquetamiento de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4.21. Codificación por longitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.22. Codificación reducida por longitud . . . . . . . . . . . . . . . . . . . . . . . 70 4.23. Decodificación de lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.24. Codificación reducida directa . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.25. Cota superior de una lista de números . . . . . . . . . . . . . . . . . . . . . 73
  5. 5. Índice general 5 4.26. Dientes de sierra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5. Programación lógica de segundo orden 77 5.1. Determinación de un número por su factorial . . . . . . . . . . . . . . . . . 77 5.2. Árbol de resolución y definiciones equivalentes . . . . . . . . . . . . . . . 79 5.3. Nodos de una generación en una lista de árboles binarios . . . . . . . . . . 80 5.4. Lista de elementos únicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 5.5. Elementos más frecuentes de una lista . . . . . . . . . . . . . . . . . . . . . 83 5.6. Problema 3n + 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 5.7. Números perfectos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 5.8. Determinación de triángulos equiláteros . . . . . . . . . . . . . . . . . . . . 89 5.9. Operación binaria aplicada a listas . . . . . . . . . . . . . . . . . . . . . . . 90 5.10. Números en un término . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5.11. Palabra sin vocales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.12. Palabras maximales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.13. Clausura transitiva de una relación . . . . . . . . . . . . . . . . . . . . . . . 92 5.14. Traducción de cifras a palabras . . . . . . . . . . . . . . . . . . . . . . . . . 93 5.15. Transformación de lista dependiente de la posición . . . . . . . . . . . . . 94 5.16. Aplanamiento de listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 6. Estilo y eficiencia en programación lógica 97 6.1. Número de Hardy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 6.2. Subconjuntos de suma dada . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 6.3. Coloreado de mapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7. Aplicaciones de programación declarativa 107 7.1. Formación de grupos minimales de asignaturas compatibles . . . . . . . . 107 7.2. Simulación de una calculadora básica . . . . . . . . . . . . . . . . . . . . . 110 7.3. Problema de las subastas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Bibliografía 121 Indice de definiciones 122
  6. 6. 6 Índice general
  7. 7. Introducción El objetivo del presente trabajo es presentar una colección de ejercicios para la asig- natura “Programación declarativa” de tercer curso de la Ingeniería Informática. Estos ejercicios complementa los apuntes de introducción a la programación decla- rativa con Prolog ([1]) y a las transparencias de clase ([2]). Todos los ejercicios se han comprobado usando la versión 5.6.18 de SWI Prolog. 7
  8. 8. 8 Índice general
  9. 9. Capítulo 1 Operaciones con listas Una lista es la lista vacía o se compone de un primer elemento y un resto, que es una lista. En Prolog, la lista vacía se representa por ℄ y las listas no vacía son de la forma Ä℄ donde es la cabeza y Ä es el resto. 1.1. Primer elemento Ejercicio 1.1 Definir la relación ÔÖ Ñ ÖÓ´ ĸ µ que se verifique si es el primer elemento de la lista Ä. Por ejemplo, ¹ ÔÖ Ñ ÖÓ´ ¸ ¸ ℄¸ µº Obtener las respuestas a las siguientes preguntas: ¹ ÔÖ Ñ ÖÓ´ ¸ ¸ ℄¸ µº ¹ ÔÖ Ñ ÖÓ´ ¸ ℄¸ µº ¹ ÔÖ Ñ ÖÓ´ ¸ µº Solución: La definición de ÔÖ Ñ ÖÓ es ÔÖ Ñ ÖÓ´ ℄¸ µº Las respuestas a las preguntas son ¹ ÔÖ Ñ ÖÓ´ ¸ ¸ ℄¸ µº ¹ ÔÖ Ñ ÖÓ´ ¸ ¸ ℄¸ µº ¹ ÔÖ Ñ ÖÓ´ ¸ ℄¸ µº 9
  10. 10. 10 Capítulo 1. Operaciones con listas ¹ ÔÖ Ñ ÖÓ´ ¸ µº ℄ 1.2. Resto de una lista Ejercicio 1.2 Definir la relación Ö ×ØÓ´ Ľ¸ ľµ que se verifique si ľ es la lista obtenida a partir de la lista Ľ suprimiendo el primer elemento. Por ejemplo, ¹ Ö ×ØÓ´ ¸ ¸ ℄¸Äµº Ä ¸ ℄ Obtener las respuestas a las siguientes preguntas: ¹ Ö ×ØÓ´ Ä℄¸ ¸ ℄µº ¹ Ö ×ØӴĸ ¸ ℄µº Solución: La definición de Ö ×ØÓ es Ö ×ØÓ´ Ä℄¸Äµº Las respuestas a las preguntas son ¹ Ö ×ØÓ´ Ä℄¸ ¸ ℄µº Ä ¸ ℄ ¹ Ö ×ØӴĸ ¸ ℄µº Ä ¸ ¸ ℄ 1.3. Construcción de listas Ejercicio 1.3 Definir la relación ÓÒ×´ ¸ Ľ¸ ľµ que se verifique si ľ es la lista obtenida añadiéndole a Ľ como primer elemento. Por ejemplo, ¹ ÓÒ×´ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ℄ Obtener las respuestas correspondientes a las siguientes preguntas: ¹ ÓÒ×´ ¸ ¸ ℄¸ ¸ ¸ ℄µº ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº
  11. 11. 1.4. Relación de pertenencia 11 Solución: La definición de ÓÒ× es ÓÒ×´ ¸Ä¸ Ä℄µº Las respuestas a las preguntas son ¹ ÓÒ×´ ¸ ¸ ℄¸ ¸ ¸ ℄µº ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº Ä ¸ ℄ ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº ÆÓ ¹ ÓÒ×´ ¸Ä¸ ¸ ¸ ℄µº Ä ¸ ℄ 1.4. Relación de pertenencia Ejercicio 1.4 Definir la relación Ô ÖØ Ò ´ ¸ ĵ que se verifique si es un elemento de la lista Ä. Por ejemplo, ¹ Ô ÖØ Ò ´ ¸ ¸ ¸ ℄µº × ¹ Ô ÖØ Ò ´ ¸ ¸ ¸ ℄µº ÆÓ Utilizar el programa para responder a las siguientes cuestiones: 1. ¿Es un elemento de ¸ ¸ ¸ ℄? 2. ¿Cuáles son los elementos de ¸ ¸ ℄? 3. ¿Cuáles son los elementos comunes de ¸ ¸ ℄, y ¸ ¸ ℄? Solución: La definición de Ô ÖØ Ò ´ ¸Äµ, por recursión en Ä, es Ô ÖØ Ò ´ ¸ ℄µº Ô ÖØ Ò ´ ¸ Ä℄µ ¹ Ô ÖØ Ò ´ ¸Äµº Las respuesta a las preguntas son 1. ¿Es un elemento de ¸ ¸ ¸ ℄?
  12. 12. 12 Capítulo 1. Operaciones con listas ¹ Ô ÖØ Ò ´ ¸ ¸ ¸ ¸ ℄µº × 2. ¿Cuáles son los elementos de ¸ ¸ ℄? ¹ Ô ÖØ Ò ´ ¸ ¸ ¸ ℄µº ÆÓ 3. ¿Cuáles son los elementos comunes de ¸ ¸ ℄, y ¸ ¸ ℄? ¹ Ô ÖØ Ò ´ ¸ ¸ ¸ ℄µ¸ Ô ÖØ Ò ´ ¸ ¸ ¸ ℄µº ÆÓ Nota: La relación Ô ÖØ Ò se corresponde con la definida Ñ Ñ Ö. 1.5. Concatenación de listas Ejercicio 1.5 Definir la relación ÓÒ ´ Ľ¸ ľ¸ Ä¿µ que se verifique si Ä¿ es la lista obtenida escribiendo los elementos de ľ a continuación de los elementos de Ľ. Por ejemplo, ¹ ÓÒ ´ ¸ ℄¸ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ¸ ¸ ℄ Utilizar el programa para responder a las siguientes cuestiones: 1. ¿Qué lista hay que añadirle 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. ¿Cuál es el último elemento de ¸ ¸ ¸ ℄? Solución: La definición de ÓÒ ´Ä½¸Ä¾¸Ä¿µ, por recursión en Ľ, es
  13. 13. 1.5. Concatenación de listas 13 ÓÒ ´ ℄¸Ä¸Äµº ÓÒ ´ Ľ℄¸Ä¾¸ Ä¿℄µ ¹ ÓÒ ´Ä½¸Ä¾¸Ä¿µº Las repuestas a las cuestiones son 1. ¿Qué lista hay que añadirle 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. ¿Cuál es el último elemento de ¸ ¸ ¸ ℄? ¹ ÓÒ ´ ¸ ℄¸ ¸ ¸ ¸ ℄µº
  14. 14. 14 Capítulo 1. Operaciones con listas Nota: La relación ÓÒ se corresponde con la definida ÔÔ Ò . 1.6. Lista inversa Ejercicio 1.6 Definir la relación ÒÚ Ö× ´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista obtenida invirtiendo el orden de los elementos de la lista Ľ. Por ejemplo, ¹ ÒÚ Ö× ´ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ℄ Solución: Vamos a presentar dos definiciones de ÒÚ Ö× ´Ä½¸Ä¾µ. Ambas son por recursión en Ľ. Primera solución: Usando la relación ÔÔ Ò , se define ÒÚ Ö× como ÒÚ Ö× ½´ ℄¸ ℄µº ÒÚ Ö× ½´ Ľ℄¸Ä¾µ ¹ ÒÚ Ö× ½´Ä½¸Ä¿µ¸ ÔÔ Ò ´Ä¿¸ ℄¸Ä¾µº Segunda solución: Usando un acumulador, se define ÒÚ Ö× como ÒÚ Ö× ¾´Ä½¸Ä¾µ ¹ ÒÚ Ö× ¾ ÙܴĽ¸Ä¾¸ ℄µº La relación ÒÚ Ö× ¾ ÙÜ´·Ä½¸¹Ä¾¸·Ä¿µ se verifica si ľ es la lista obtenida aña- diendo la inversa de Ľ a Ä¿ y se define por recursión en Ľ como sigue ÒÚ Ö× ¾ ÙÜ´ ℄¸Ä¾¸Ä¾µº ÒÚ Ö× ¾ ÙÜ´ Ľ℄¸Ä¾¸Ä¿µ ¹ ÒÚ Ö× ¾ ÙܴĽ¸Ä¾¸ Ä¿℄µº Nota: La relación ÒÚ Ö× se corresponde con la relación definida Ö Ú Ö× . 1.7. Palíndromo Ejercicio 1.7 Un palíndromo es una palabra que se lee igual en los dos sentidos, por ejemplo “oso”. Definir la relación Ô Ð Ò ÖÓÑÓ´·Äµ que se verifique si la lista Ä es un palíndromo. Por ejemplo,
  15. 15. 1.8. Último elemento 15 ¹ Ô Ð Ò ÖÓÑÓ´ Ӹ׸Ó℄µº × ¹ Ô Ð Ò ÖÓÑÓ´ Ӹ׸ ℄µº ÆÓ Solución: La definición de Ô Ð Ò ÖÓÑÓ es Ô Ð Ò ÖÓÑӴĵ ¹ Ö Ú Ö× ´Ä¸Äµº 1.8. Último elemento Ejercicio 1.8 Definir la relación ÐØ ÑÓ´ ¸ ĵ que se verifique si es el último elemento de la lista Ä. Por ejemplo, ¹ ÐØ ÑÓ´ ¸ ¸ ¸ ¸ ℄µº ¹ ÐØ ÑÓ´ ¸Äµº Ä ℄ Ä ¸ ℄ Ä ¸ ¸ ℄ × Solución: Presentamos tres definiciones de ÐØ ÑÓ. Primera solución: Usando ÔÔ Ò se define ÐØ ÑÓ por ÐØ ÑÓ ½´ ¸Äµ ¹ ÔÔ Ò ´ ¸ ℄¸Äµº Segunda solución: Usando Ö Ú Ö× se define ÐØ ÑÓ por ÐØ ÑÓ ¾´ ¸Äµ ¹ Ö Ú Ö× ´Ä¸ ℄µº Tercera solución: Una definición de ÐØ ÑÓ´ ¸Äµ por recursión en Ä es ÐØ ÑÓ ¿´ ¸ ℄µº ÐØ ÑÓ ¿´ ¸ Ä℄µ ¹ ÐØ ÑÓ ¿´ ¸Äµº Nota: La relación ÐØ ÑÓ se corresponde con la relación definida Ð ×Ø.
  16. 16. 16 Capítulo 1. Operaciones con listas 1.9. Penúltimo elemento Ejercicio 1.9 Definir lar relación Ô Ò ÐØ ÑÓ´ ¸ ĵ que se verifique si es el penúltimo ele- mento de la lista Ä. Por ejemplo, ¹ Ô Ò ÐØ ÑÓ´ ¸ ¸ ¸ ¸ ℄µº ¹ Ô Ò ÐØ ÑÓ´ ¸Äµº Ä ¸ ℄ Ä ¸ ¸ ℄ × Solución: Se presentan tres definiciones de Ô Ò ÐØ ÑÓ. Primera solución: Usando ÔÔ Ò se define Ô Ò ÐØ ÑÓ por Ô Ò ÐØ ÑÓ ½´ ¸Äµ ¹ ÔÔ Ò ´ ¸ ¸ ℄¸Äµº Segunda solución: Usando Ö Ú Ö× se define Ô Ò ÐØ ÑÓ por Ô Ò ÐØ ÑÓ ¾´ ¸Äµ ¹ Ö Ú Ö× ´Ä¸ ¸ ℄µº Tercera solución: Una definición de Ô Ò ÐØ ÑÓ´ ¸Äµ por recursión en Ä es Ô Ò ÐØ ÑÓ ¿´ ¸ ¸ ℄µº Ô Ò ÐØ ÑÓ ¿´ ¸ ¸ Ä℄µ ¹ Ô Ò ÐØ ÑÓ ¿´ ¸ Ä℄µº 1.10. Selección de un elemento Ejercicio 1.10 Definir la relación × Ð ÓÒ ´ ¸ Ľ¸ ľµ que se verifique si ľ es la lista obtenida eliminando una ocurrencia de en Ľ. Por ejemplo, ¹ × Ð ÓÒ ´ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ℄ Ä ¸ ℄ ÆÓ ¹ × Ð ÓÒ ´ ¸ ¸ ¸ ℄¸Äµº ÆÓ ¹ × Ð ÓÒ ´ ¸Ä¸ ½¸¾℄µº
  17. 17. 1.11. Inserción de un elemento en una lista 17 Ä ¸ ½¸ ¾℄ Ä ½¸ ¸ ¾℄ Ä ½¸ ¾¸ ℄ ÆÓ ¹ × Ð ÓÒ ´ ¸ ½¸¾¸¿℄¸ ½¸¿℄µº ¾ ÆÓ Solución: La definición de × Ð ÓÒ ´ ¸Ä½¸Ä¾µ, por recursión en Ľ, es × Ð ÓÒ ´ ¸ Ä℄¸Äµº × Ð ÓÒ ´ ¸ Ľ℄¸ ľ℄µ ¹ × Ð ÓÒ ´ ¸Ä½¸Ä¾µº Nota: La relación × Ð ÓÒ se corresponde con la definida × Ð Ø. 1.11. Inserción de un elemento en una lista Ejercicio 1.11 Definir la relación Ò× ÖØ ´ ¸ Ľ¸ ľµ que se verifique si ľ es una lista obtenida insertando en Ľ. Por ejemplo, ¹ Ò× ÖØ ´ ¸ ½¸¾℄¸Äµº Ä ¸ ½¸ ¾℄ Ä ½¸ ¸ ¾℄ Ä ½¸ ¾¸ ℄ ÆÓ Solución: La definición de Ò× ÖØ es Ò× ÖØ ´ ¸Ä½¸Ä¾µ ¹ × Ð Ø´ ¸Ä¾¸Ä½µº 1.12. Sublista Ejercicio 1.12 Definir la relación ×Ù Ð ×Ø ´ Ľ¸ ľµ que se verifique si Ľ es una sublista de ľ. Por ejemplo, ¹ ×Ù Ð ×Ø ´ ¸ ℄¸ ¸ ¸ ¸ ℄µº × ¹ ×Ù Ð ×Ø ´ ¸ ℄¸ ¸ ¸ ¸ ℄µº ÆÓ
  18. 18. 18 Capítulo 1. Operaciones con listas ¹ ×Ù Ð ×Ø ´ ¸ ℄¸Äµº Ä ¸ ℄ Ä ¸ ¸ ℄ Ä ¸ ¸ ¸ ℄ × Solución: La definición de ×Ù Ð ×Ø es ×Ù Ð ×Ø ´Ä½¸Ä¾µ ¹ ÔÔ Ò ´ Ä¿¸Ä ¸Ä¾µ¸ ÔÔ Ò ´Ä½¸ Ä ¸Ä µº 1.13. Permutación Ejercicio 1.13 Definir la relación Ô ÖÑÙØ Ò´·Ä½¸ ľµ que se verifique si ľ es una per- mutación de Ľ. Por ejemplo, ¹ Ô ÖÑÙØ Ò´ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ ÆÓ Solución: La definición de Ô ÖÑÙØ Ò´Ä½¸Ä¾µ, por recursión en Ľ es Ô ÖÑÙØ Ò´ ℄¸ ℄µº Ô ÖÑÙØ Ò´Ä½¸ ľ℄µ ¹ × Ð Ø´ ¸Ä½¸Ä¿µ¸ Ô ÖÑÙØ Ò´Ä¿¸Ä¾µº Nota: La relación Ô ÖÑÙØ Ò´Ä½¸Ä¾µ es equivalente a la definida Ô ÖÑÙØ Ø ÓҴľ¸Ä½µ. 1.14. Lista con todos sus elementos iguales Ejercicio 1.14 Definir la relación ØÓ Ó× Ù Ð ×´·Äµ que se verifique si todos los elementos de la lista Ä son iguales entre sí. Por ejemplo,
  19. 19. 1.15. Paridad de la longitud de una lista 19 ¹ ØÓ Ó× Ù Ð ×´ ¸ ¸ ℄µº × ¹ ØÓ Ó× Ù Ð ×´ ¸ ¸ ℄µº ÆÓ ¹ ØÓ Ó× Ù Ð ×´ ℄µº × Solución: La definición de ØÓ Ó× Ù Ð × es ØÓ Ó× Ù Ð ×´ ℄µº ØÓ Ó× Ù Ð ×´ ℄µº ØÓ Ó× Ù Ð ×´ ¸ Ä℄µ ¹ ØÓ Ó× Ù Ð ×´ Ä℄µº 1.15. Paridad de la longitud de una lista Ejercicio 1.15 Definir la relación ÐÓÒ ØÙ Ô Ö´·Äµ que se verifique si la longitud de la lista Ä es par. Por ejemplo, ¹ ÐÓÒ ØÙ Ô Ö´ ¸ ℄µº × ¹ ÐÓÒ ØÙ Ô Ö´ ¸ ¸ ℄µº ÆÓ Solución: La definición de ÐÓÒ ØÙ Ô Ö, por recursión cruzada con la relación ÐÓÒ ØÙ ÑÔ Ö, es ÐÓÒ ØÙ Ô Ö´ ℄µº ÐÓÒ ØÙ Ô Ö´ Ä℄µ ¹ ÐÓÒ ØÙ ÑÔ Ö´Äµº La relación ÐÓÒ ØÙ ÑÔ Ö´·Äµ se verifica si la longitud de la lista Ä es impar. Por ejemplo, ¹ ÐÓÒ ØÙ ÑÔ Ö´ ¸ ℄µº ÆÓ ¹ ÐÓÒ ØÙ ÑÔ Ö´ ¸ ¸ ℄µº × La definición de ÐÓÒ ØÙ ÑÔ Ö es ÐÓÒ ØÙ ÑÔ Ö´ ℄µº ÐÓÒ ØÙ ÑÔ Ö´ Ä℄µ ¹ ÐÓÒ ØÙ Ô Ö´Äµº
  20. 20. 20 Capítulo 1. Operaciones con listas 1.16. Rotación de un elemento Ejercicio 1.16 Definir la relación ÖÓØ ´ Ľ¸ ľµ que se verifique si ľ es la lista obtenida a partir de Ľ colocando su primer elemento al final. Por ejemplo, ¹ ÖÓØ ´ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ¸ ℄ ¹ ÖÓØ ´Ä¸ ¸ ¸ ¸ ℄µº Ä ¸ ¸ ¸ ℄ Solución: La definición de ÖÓØ es ÖÓØ ´ Ľ℄¸Äµ ¹ ÔÔ Ò ´Ä½¸ ℄¸Äµº 1.17. Subconjunto Ejercicio 1.17 Definir la relación ×Ù ÓÒ ÙÒØÓ´·Ä½¸ ľµ que se verifique si ľ es un subcon- junto de Ľ. Por ejemplo, ¹ ×Ù ÓÒ ÙÒØÓ´ ¸ ¸ ¸ ℄¸ ¸ ℄µº × ¹ ×Ù ÓÒ ÙÒØÓ´ ¸ ¸ ¸ ℄¸ ¸ ℄µº ÆÓ ¹ ×Ù ÓÒ ÙÒØÓ´ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ℄ Ä ¸ ℄ Ä ¸ ℄ Ä ℄ Ä ¸ ℄ Ä ℄ Ä ℄ Ä ℄ ÆÓ Solución: La definición de ×Ù ÓÒ ÙÒØӴĽ¸Ä¾µ, por recursión en Ľ, es ×Ù ÓÒ ÙÒØÓ´ ℄¸ ℄µº ×Ù ÓÒ ÙÒØÓ´ Ľ℄¸ ľ℄µ ¹ ×Ù ÓÒ ÙÒØӴĽ¸Ä¾µº ×Ù ÓÒ ÙÒØÓ´ Ľ℄¸Ä¾µ ¹ ×Ù ÓÒ ÙÒØӴĽ¸Ä¾µº
  21. 21. Capítulo 2 Aritmética 2.1. Máximo de dos números Ejercicio 2.1 Definir la relación Ñ Ü ÑÓ´· ¸· ¸ µ que se verifique si es el máximo de e . Por ejemplo, ¹ Ñ Ü ÑÓ´¾¸¿¸ µº ¿ ¹ Ñ Ü ÑÓ´¿¸¾¸ µº ¿ Solución: La definición de Ñ Ü ÑÓ es Ñ Ü ÑÓ´ ¸ ¸ µ ¹ º Ñ Ü ÑÓ´ ¸ ¸ µ ¹ º Nota: En Prolog está definida la función Ñ Ü´ ¸ µ que devuelve el máximo de e . Por ejemplo, ¹ × Ñ Ü´ ¸½¼µº ½¼ 2.2. Factorial Ejercicio 2.2 Definir la relación ØÓÖ Ð´· ¸ µ que se verifique si es el factorial de . Por ejemplo, ¹ ØÓÖ Ð´¿¸ µº 21
  22. 22. 22 Capítulo 2. Aritmética Solución: La definición de ØÓÖ Ð´ ¸ µ, por recursión sobre , es ØÓÖ Ð´½¸½µº ØÓÖ Ð´ ¸ µ ¹ ½¸ ½ × ¹½¸ ØÓÖ Ð´ ½¸ ½µ¸ × ¶ ½º 2.3. Sucesión de Fibonacci Ejercicio 2.3 La sucesión de Fibonacci es 0,1,1,2,3,5,8,13,21,. . . en la que cada término, salvo los dos primeros, es la suma de los dos anteriores. Definir la relación ÓÒ ´·Æ¸¹ µ que se verifique si es el Æ–ésimo término de la sucesión de Fibonacci. Por ejemplo, ¹ ÓÒ ´ ¸ µº Solución: La definición de ÓÒ ´Æ¸ µ, por inducción en Æ, es ÓÒ ´¼¸¼µº ÓÒ ´½¸½µº ÓÒ ´Æ¸ µ ¹ Æ ½¸ ƽ × Æ¹½¸ ÓÒ ´Æ½¸ ½µ¸ ƾ × Æ¹¾¸ ÓÒ ´Æ¾¸ ¾µ¸ × ½· ¾º 2.4. Máximo común divisor Ejercicio 2.4 Definir la relación Ñ ´· ¸· ¸ µ que se verifique si es el máximo común divisor de e . Por ejemplo, ¹ Ñ ´½¼¸½ ¸ µº Solución: La definición de Ñ es
  23. 23. 2.5. Longitud de una lista 23 Ñ ´ ¸ ¸ µº Ñ ´ ¸ ¸ µ ¹ ¸ ½ × ¹ ¸ Ñ ´ ¸ ½¸ µº Ñ ´ ¸ ¸ µ ¹ ¸ Ñ ´ ¸ ¸ µº 2.5. Longitud de una lista Ejercicio 2.5 Definir la relación ÐÓÒ ØÙ ´ ĸ Ƶ que se verifique si Æ es la longitud de la lista Ä. Por ejemplo ¹ ÐÓÒ ØÙ ´ ¸ ¸ ℄¸Æµº Æ ¿ ¹ ÐÓÒ ØÙ ´Ä¸¿µº Ä ¸ ¸ ℄ Solución: La definición de ÐÓÒ ØÙ es ÐÓÒ ØÙ ´ ℄¸¼µº ÐÓÒ ØÙ ´ Ä℄¸Æµ ¹ ÐÓÒ ØÙ ´Ä¸Æ½µ¸ Æ × Æ½ · ½º Nota: La relación ÐÓÒ ØÙ se corresponde con la relación definida Ð Ò Ø . 2.6. Lista de números acotada por su longitud Ejercicio 2.6 Una lista está acotada si todos sus elementos son menores que su longitud. Definir la relación Ð ×Ø ÓØ ´·Äµ que se verifique si todos los elementos de la lista de números Ä son menores que la longitud de Ä. Por ejemplo, ¹ Ð ×Ø ÓØ ´ ½¸¼¸¾℄µº × ¹ Ð ×Ø ÓØ ´ ½¸¿¸¾℄µº ÆÓ Solución: La definición de Ð ×Ø ÓØ es
  24. 24. 24 Capítulo 2. Aritmética Ð ×Ø ÓØ ´Äµ ¹ Ð Ò Ø ´Ä¸Æµ¸ Ð ×Ø ÓØ ÙܴĸƵº donde Ð ×Ø ÓØ ÙÜ´·Ä¸·Æµ se verifica si todos los elementos de la lista de nú- meros Ä son menores que Æ. Por ejemplo, ¹ Ð ×Ø ÓØ ÙÜ´ ½¸ ¸¿℄¸ µº × ¹ Ð ×Ø ÓØ ÙÜ´ ½¸ ¸¿℄¸ µº ÆÓ y está definida por Ð ×Ø ÓØ ÙÜ´ ℄¸ µº Ð ×Ø ÓØ ÙÜ´ Ä℄¸Æµ ¹ Ƹ Ð ×Ø ÓØ ÙܴĸƵº 2.7. Máximo de una lista de números Ejercicio 2.7 Definir la relación Ñ Ü Ð ×Ø ´·Ä¸ µ que se verifique si es el máximo de la lista de números Ä. Por ejemplo, ¹ Ñ Ü Ð ×Ø ´ ½¸¿¸ ¸ ℄¸ µº Solución: La definición de Ñ Ü Ð ×Ø es Ñ Ü Ð ×Ø ´ ℄¸ µº Ñ Ü Ð ×Ø ´ ½¸ ¾ Ä℄¸ µ ¹ ¿ × Ñ Ü´ ½¸ ¾µ¸ Ñ Ü Ð ×Ø ´ ¿ Ä℄¸ µº 2.8. Suma de los elementos de una lista Ejercicio 2.8 Definir la relación ×ÙÑ Ð ×Ø ´·Ä¸ µ que se verifique si es la suma de los elementos de la lista de números Ä. Por ejemplo,
  25. 25. 2.9. Lista de números ordenada 25 ¹ ×ÙÑ Ð ×Ø ´ ½¸¿¸ ℄¸ µº Solución: La definición de ×ÙÑ Ð ×Ø es ×ÙÑ Ð ×Ø ´ ℄¸¼µº ×ÙÑ Ð ×Ø ´ Ä℄¸ µ ¹ ×ÙÑ Ð ×Ø ´Ä¸ ½µ¸ × · ½º Nota: La relación ×ÙÑ Ð ×Ø se corresponde con la relación definida ×ÙÑÐ ×Ø. 2.9. Lista de números ordenada Ejercicio 2.9 Definir la relación ÓÖ Ò ´·Äµ que se verifique si la lista de números Ä está ordenada de manera creciente. Por ejemplo, ¹ ÓÖ Ò ´ ½¸¿¸¿¸ ℄µº × ¹ ÓÖ Ò ´ ½¸¿¸ ¸¾℄µº ÆÓ Solución: La definición de ÓÖ Ò es ÓÖ Ò ´ ℄µº ÓÖ Ò ´ ¸ Ä℄µ ¹ ¸ ÓÖ Ò ´ Ä℄µº 2.10. Suma parcial de una lista Ejercicio 2.10 Definir la relación ×ÙÑ Ô Ö Ð´·Ä½¸· ¸ ľµ que se verifique si ľ es un subconjunto de Ľ tal que la suma de sus elementos es . Por ejemplo, ¹ ×ÙÑ Ô Ö Ð´ ½¸¾¸ ¸¿¸¾℄¸ ¸Äµº Ä ½¸ ¾¸ ¾℄ Ä ¾¸ ¿℄ Ä ℄ Ä ¿¸ ¾℄ ÆÓ
  26. 26. 26 Capítulo 2. Aritmética Solución: Se presentan dos definiciones de ×ÙÑ Ô Ö Ð. Primera solución: Una definición, usando ×Ù ÓÒ ÙÒØÓ (p. 20) y ×ÙÑ Ð ×Ø (p. 25), es ×ÙÑ Ô Ö Ð ½´Ä½¸ ¸Ä¾µ ¹ ×Ù ÓÒ ÙÒØӴĽ¸Ä¾µ¸ ×ÙÑ Ð ×Ø ´Ä¾¸ µº Segunda solución: Una definición recursiva de ×ÙÑ Ô Ö Ð es ×ÙÑ Ô Ö Ð ¾´ ℄¸¼¸ ℄µº ×ÙÑ Ô Ö Ð ¾´ Ľ℄¸ ¸ ľ℄µ ¹ ¸ × ¹ ¸ ×ÙÑ Ô Ö Ð ¾´Ä½¸ ¸Ä¾µº ×ÙÑ Ô Ö Ð ¾´ Ľ℄¸ ¸Ä¾µ ¹ ×ÙÑ Ô Ö Ð ¾´Ä½¸ ¸Ä¾µº 2.11. Lista de Æ veces el número Æ Ejercicio 2.11 Definir la relación Ð ×Ø ´·Æ¸¹Äµ que se verifique si Ä es la lista de longitud Æ cuyos elementos son Æ. Por ejemplo, ¹ Ð ×Ø ´¿¸Äµº Ä ¿¸ ¿¸ ¿℄ Solución: La definición de Ð ×Ø es Ð ×Ø ´Æ¸Äµ ¹ Ð ×Ø ÙܴƸƸĵº donde Ð ×Ø ÙÜ´·Æ¸·Å¸¹Äµ se verifica si Ä es la lista de longitud Å cuyos elementos son Æ. Por ejemplo, ¹ Ð ×Ø ÙÜ´ ¸ ¸Äµº Ä ¸ ¸ ¸ ℄ y se define por Ð ×Ø ÙÜ´ ¸¼¸ ℄µº Ð ×Ø ÙܴƸŸ Æ Ä℄µ ¹ Å ¼¸ Ž × Å¹½¸ Ð ×Ø ÙܴƸŽ¸Äµº
  27. 27. 2.12. Generación de lista de números 27 2.12. Generación de lista de números Ejercicio 2.12 Definir la relación Ð ×Ø Ò Ñ ÖÓ×´·Æ¸·Å¸¹Äµ que se verifica si L es la lista de los números desde N hasta M, ambos inclusive. Por ejemplo, ¹ Ð ×Ø Ò Ñ ÖÓ×´¿¸ ¸Äµº Ä ¿¸ ¸ ℄ ¹ Ð ×Ø Ò Ñ ÖÓ×´¿¸¾¸Äµº ÆÓ Solución: La definición de Ð ×Ø Ò Ñ ÖÓ× es Ð ×Ø Ò Ñ ÖÓ״ƸƸ Æ℄µº Ð ×Ø Ò Ñ ÖÓ״ƸŸ Æ Ä℄µ ¹ Æ Å¸ ƽ × Æ·½¸ Ð ×Ø Ò Ñ ÖÓ״ƽ¸Å¸Äµº Nota: La relación Ð ×Ø Ò Ñ ÖÓ× se corresponde con la definida ÒÙÑÐ ×Ø. 2.13. Intervalo entero Ejercicio 2.13 Definir la relación ÒØÖ ´·Æ½¸·Æ¾¸ µ que se verifique si es un número en- tero tal que ƽ ≤ ≤ ƾ. Por ejemplo, ¹ ÒØÖ ´¾¸ ¸ µº ¾ ¿ ÆÓ Solución: La definición de ÒØÖ es ÒØÖ ´Æ½¸Æ¾¸Æ½µ ¹ ƽ ƾº ÒØÖ ´Æ½¸Æ¾¸ µ ¹ ƽ ƾ¸ Æ¿ × Æ½·½¸ ÒØÖ ´Æ¿¸Æ¾¸ µº Nota: La relación ÒØÖ se corresponde con la definida ØÛ Ò.
  28. 28. 28 Capítulo 2. Aritmética 2.14. K–ésimo elemento Ejercicio 2.14 Definir la relación Ð Ñ ÒØÓ Ò´·Ã¸ ĸ µ que se verifique si es el Öésimo elemento de la lista Ä (se empieza a numerar en 1). Por ejemplo, ¹ Ð Ñ ÒØÓ Ò´¾¸ ¸ ¸ ¸ ℄¸ µº ¹ Ð Ñ ÒØÓ Ò´¾¸Ä¸ µº Ä ¸ ℄ Solución: La definición de Ð Ñ ÒØÓ Ò es Ð Ñ ÒØÓ Ò´½¸ ℄¸ µº Ð Ñ ÒØÓ Ò´Ã¸ Ä℄¸ µ ¹ à ½¸ ý × Ã¹½¸ Ð Ñ ÒØÓ Ò´Ã½¸Ä¸ µº Nota: La relación Ð Ñ ÒØÓ Ò se corresponde con la relación definida ÒØ ½. 2.15. Multiplicación de las ocurrencias de los elementos de una lista Ejercicio 2.15 Definir la relación ÑÙÐØ ÔÐ ´·Ä½¸·Æ¸¹Ä¾µ que se verifica si ľ es la lista obtenida repitiendo Æ veces los elementos de la lista Ľ. Por ejemplo, ¹ ÑÙÐØ ÔÐ ´ ¸ ¸ ℄¸¿¸Äµº Ä ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄ Solución: La definición de ÑÙÐØ ÔÐ es ÑÙÐØ ÔÐ ´Ä½¸Æ¸Ä¾µ ¹ ÑÙÐØ ÔÐ ÙܴĽ¸Æ¸Æ¸Ä¾µº donde ÑÙÐØ ÔÐ ÙÜ´·Ä½¸·Ã¸·Æ¸¹Ä¾µ se verifica si ľ es la lista obtenida repitien- do à veces el primer elemento de Ľ y Æ veces los restantes elementos. Por ejemplo, ¹ ÑÙÐØ ÔÐ ÙÜ´ ¸ ¸ ℄¸¾¸¿¸Äµº Ä ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄ Su definición es
  29. 29. 2.15. Multiplicación de las ocurrencias de los elementos de una lista 29 ÑÙÐØ ÔÐ ÙÜ´ ℄¸ ¸ ¸ ℄µº ÑÙÐØ ÔÐ ÙÜ´ Ľ℄¸¼¸Æ¸Ä¾µ ¹ ÑÙÐØ ÔÐ ÙܴĽ¸Æ¸Æ¸Ä¾µº ÑÙÐØ ÔÐ ÙÜ´ Ľ℄¸Ã¸Æ¸ ľ℄µ ¹ à ¼¸ ý × Ã¹½¸ ÑÙÐØ ÔÐ ÙÜ´ Ľ℄¸Ã½¸Æ¸Ä¾µº
  30. 30. 30 Capítulo 2. Aritmética
  31. 31. Capítulo 3 Estructuras 3.1. Segmentos como objetos estructurados Ejercicio 3.1 Supongamos que representamos los puntos del plano mediante términos de la for- ma ÔÙÒØÓ´ ¸ µ donde e son números, y los segmentos del plano mediante términos de la forma × Ñ ÒØӴȽ¸È¾µ donde Ƚ y Ⱦ son los puntos extremos del segmento. Definir las relaciones Ú ÖØ Ð´ ˵ y ÓÖ ÞÓÒØ Ð´ ˵ que se verifiquen 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 algún tal que el segmento que une los puntos ´½¸½µ y ´¾¸ µ sea vertical? 4. ¿Hay algún tal que el segmento que une los puntos ´½¸¾µ y ´ ¸¿µ sea vertical? 5. ¿Hay algún tal que el segmento que une los puntos ´½¸½µ y ´¾¸ µ sea horizontal? 31
  32. 32. 32 Capítulo 3. Estructuras 6. ¿Para qué puntos el segmento que comienza en ´¾¸¿µ es vertical? 7. ¿Hay algún segmento que sea horizontal y vertical? Solución: Las definiciones 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 algún tal que el segmento que une los puntos ´½¸½µ y ´¾¸ µ sea vertical? ¹ Ú ÖØ Ð´× ´ÔÙÒØÓ´½¸½µ¸ÔÙÒØÓ´¾¸ µµµº ÆÓ 4. ¿Hay algún tal que el segmento que une los puntos ´½¸¾µ y ´ ¸¿µ sea vertical? ¹ Ú ÖØ Ð´× ´ÔÙÒØÓ´½¸¾µ¸ÔÙÒØÓ´ ¸¿µµµº ½ ÆÓ 5. ¿Hay algún tal que el segmento que une los puntos ´½¸½µ y ´¾¸ µ sea horizontal? ¹ ÓÖ ÞÓÒØ Ð´× ´ÔÙÒØÓ´½¸½µ¸ÔÙÒØÓ´¾¸ µµµº ½ ÆÓ 6. ¿Para qué puntos el segmento que comienza en ´¾¸¿µ es vertical? ¹ Ú ÖØ Ð´× ´ÔÙÒØÓ´¾¸¿µ¸Èµµº È ÔÙÒØÓ´¾¸ µ ÆÓ 7. ¿Hay algún segmento que sea horizontal y vertical?
  33. 33. 3.2. Base de datos familiar 33 ¹ Ú ÖØ Ð´Ëµ¸ ÓÖ ÞÓÒØ Ð´Ëµº Ë × ´ÔÙÒØÓ´ ¸ µ¸ ÔÙÒØÓ´ ¸ µµ ÆÓ ¹ Ú ÖØ Ð´ µ¸ ÓÖ ÞÓÒØ Ð´ µº × 3.2. Base de datos familiar Ejercicio 3.2 En este ejercicio vamos a trabajar con una base de datos familiar. 1. Representar la información relativa a las siguientes familias: En la primera familia, • el padre es Tomás García Pérez, nacido el 7 de Mayo de 1960, trabaja de profesor y gana 60 euros diarios; • la madre es Ana López Ruiz, nacida el 10 de marzo de 1962, trabaja de médica y gana 90 euros diarios; • el hijo es Juan García López, nacido el 5 de Enero de 1980, estudiante; • la hija es María García López, nacida el 12 de Abril de 1992, estudiante. En la segunda familia, • el padre es José Pérez Ruiz, nacido el 6 de Marzo de 1963, trabaja de pintor y gana 120 euros diarios; • la madre es Luisa Gálvez Pérez, nacida el 12 de Mayo de 1964, trabaja de médica y gana 90 euros diarios; • un hijo es Juan Luis Pérez Pérez, nacido el 5 de Febrero de 1990, estudiante; • una hija es María José Pérez Pérez, nacida el 12 de Junio de 1992, estudiante; • otro hijo es José María Pérez Pérez, 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. Definir la relación × Ó´ µ que se verifique si es un hombre casado.
  34. 34. 34 Capítulo 3. Estructuras 5. Preguntar por los hombres casados. 6. Definir la relación × ´ µ que se verifique si es una mujer casada. 7. Preguntar por las mujeres casadas. 8. Determinar el nombre de todas las mujeres casadas que trabajan. 9. Definir la relación Ó´ µ que se verifique si figura en alguna lista de hijos. 10. Preguntar por los hijos. 11. Definir la relación Ô Ö×ÓÒ ´ µ que se verifique 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. Definir la relación Ò Ñ ÒØÓ´ ¸ µ de forma que si es una persona, enton- ces es su fecha de nacimiento. 15. Buscar todos los hijos nacidos en 1992. 16. Definir la relación ×Ù Ð Ó´ ¸ µ que se verifique si el sueldo de la persona es . 17. Buscar todas las personas nacidas antes de 1964 cuyo sueldo sea superior a 72 euros dia- rios. 18. Definir la relación ØÓØ Ð´Ä¸ µ 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. Solución: Solución del apartado 1: La representación de la información sobre las dos familias es Ñ Ð ´Ô Ö×ÓÒ ´ ØÓÑ ×¸ Ö ¸Ô Ö Þ℄¸ ´ ¸Ñ ÝÓ¸½ ¼µ¸ ØÖ Ó´ÔÖÓ ×ÓÖ¸ ¼µµ¸ Ô Ö×ÓÒ ´ Ò ¸ÐÓÔ Þ¸ÖÙ Þ℄¸ ´½¼¸Ñ ÖÞÓ¸½ ¾µ¸ ØÖ Ó´Ñ ¸ ¼µµ¸ Ô Ö×ÓÒ ´ Ù Ò¸ Ö ¸ÐÓÔ Þ℄¸ ´ ¸ Ò ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ¸
  35. 35. 3.2. Base de datos familiar 35 Ô Ö×ÓÒ ´ Ñ Ö ¸ Ö ¸ÐÓÔ Þ℄¸ ´½¾¸ Ö Ð¸½ ¾µ¸ ×ØÙ ÒØ µ ℄µº Ñ Ð ´Ô Ö×ÓÒ ´ Ó× ¸Ô Ö Þ¸ÖÙ Þ℄¸ ´ ¸Ñ ÖÞÓ¸½ ¿µ¸ ØÖ Ó´Ô ÒØÓÖ¸½¾¼µµ¸ Ô Ö×ÓÒ ´ ÐÙ × ¸ ÐÚ Þ¸Ô Ö Þ℄¸ ´½¾¸Ñ ÝÓ¸½ µ¸ ØÖ Ó´Ñ ¸ ¼µµ¸ Ô Ö×ÓÒ ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸ ´ ¸ Ö ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ¸ Ô Ö×ÓÒ ´ Ñ Ö Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÒ Ó¸½ ¾µ¸ ×ØÙ ÒØ µ¸ Ô Ö×ÓÒ ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÐ Ó¸½ µ¸ ×ØÙ ÒØ µ ℄µº Solución del apartado 2: Las consultas, y sus respuestas son, ¹ Ñ Ð ´ ¸ ¸ ℄µº ÆÓ ¹ Ñ Ð ´ ¸ ¸ ℄µº ÆÓ ¹ Ñ Ð ´ ¸ ¸ ¸ ℄µº × ¹ Ñ Ð ´ ¸ ¸ ¸ ¸ ℄µº × ¹ Ñ Ð ´ ¸ ¸ ¸ ¸ ¸ ℄µº ÆÓ Solución del apartado 3: ¹ Ñ Ð ´Ô Ö×ÓÒ ´Æȸ ¸ µ¸ ¸ ¸ ¸ ℄µº ÆÈ Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄ ÆÓ Solución del apartado 4: × Ó´ µ ¹ Ñ Ð ´ ¸ ¸ µº
  36. 36. 36 Capítulo 3. Estructuras Solución del apartado 5: ¹ × Ó´ µº Ô Ö×ÓÒ ´ ØÓÑ ×¸ Ö ¸ Ô Ö Þ℄¸ ´ ¸ Ñ ÝÓ¸ ½ ¼µ¸ ØÖ Ó´ÔÖÓ ×ÓÖ¸ ¼µµ Ô Ö×ÓÒ ´ Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄¸ ´ ¸ Ñ ÖÞÓ¸ ½ ¿µ¸ ØÖ Ó´Ô ÒØÓÖ¸ ½¾¼µµ ÆÓ Solución del apartado 6: × ´ µ ¹ Ñ Ð ´ ¸ ¸ µº Solución del apartado 7: ¹ × ´ µº Ô Ö×ÓÒ ´ Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄¸ ´½¼¸ Ñ ÖÞÓ¸ ½ ¾µ¸ ØÖ Ó´Ñ ¸ ¼µµ Ô Ö×ÓÒ ´ ÐÙ × ¸ ÐÚ Þ¸ Ô Ö Þ℄¸ ´½¾¸ Ñ ÝÓ¸ ½ µ¸ ØÖ Ó´Ñ ¸ ¼µµ ÆÓ Solución del apartado 8: ¹ × ´Ô Ö×ÓÒ ´ Ƹ ¸ ℄¸ ¸ØÖ Ó´ ¸ µµµº Æ Ò Æ ÐÙ × ÆÓ Solución del apartado 9: Ó´ µ ¹ Ñ Ð ´ ¸ ¸Äµ¸ Ñ Ñ Ö´ ¸Äµº Solución del apartado 10:
  37. 37. 3.2. Base de datos familiar 37 ¹ Ó´ µº Ô Ö×ÓÒ ´ Ù Ò¸ Ö ¸ÐÓÔ Þ℄¸ ´ ¸ Ò ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ Ô Ö×ÓÒ ´ Ñ Ö ¸ Ö ¸ÐÓÔ Þ℄¸ ´½¾¸ Ö Ð¸½ ¾µ¸ ×ØÙ ÒØ µ Ô Ö×ÓÒ ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸ ´ ¸ Ö ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ Ô Ö×ÓÒ ´ Ñ Ö Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÒ Ó¸½ ¾µ¸ ×ØÙ ÒØ µ Ô Ö×ÓÒ ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÐ Ó¸½ µ¸ ×ØÙ ÒØ µ ÆÓ Solución del apartado 11: Ô Ö×ÓÒ ´ µ ¹ × Ó´ µ × ´ µ Ó´ µº Solución del apartado 12: ¹ Ô Ö×ÓÒ ´Ô Ö×ÓÒ ´ ¸ ¸ µµº ØÓÑ ×¸ Ö ¸ Ô Ö Þ℄ Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄ Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄ ÐÙ × ¸ ÐÚ Þ¸ Ô Ö Þ℄ Ù Ò¸ Ö ¸ ÐÓÔ Þ℄ Ñ Ö ¸ Ö ¸ ÐÓÔ Þ℄ Ù Ò Ð٠׸ Ô Ö Þ¸ Ô Ö Þ℄ Ñ Ö Ó× ¸ Ô Ö Þ¸ Ô Ö Þ℄ Ó× Ñ Ö ¸ Ô Ö Þ¸ Ô Ö Þ℄ ÆÓ Solución del apartado 13: ¹ Ô Ö×ÓÒ ´Ô Ö×ÓÒ ´ ¸ ´ ¸ ¸ Óµ¸ ×ØÙ ÒØ µµ¸ Ó ½ ¿º Ù Ò¸ Ö ¸ ÐÓÔ Þ℄ Ó ½ ¼ Ñ Ö ¸ Ö ¸ ÐÓÔ Þ℄ Ó ½ ¾ Ù Ò Ð٠׸ Ô Ö Þ¸ Ô Ö Þ℄ Ó ½ ¼ Ñ Ö Ó× ¸ Ô Ö Þ¸ Ô Ö Þ℄ Ó ½ ¾ ÆÓ Solución del apartado 14:
  38. 38. 38 Capítulo 3. Estructuras Ò Ñ ÒØÓ´Ô Ö×ÓÒ ´ ¸ ¸ µ¸ µº Solución del apartado 15: ¹ Ó´ µ¸ Ò Ñ ÒØÓ´ ¸ ´ ¸ ¸½ ¾µµº Ô Ö×ÓÒ ´ Ñ Ö Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÒ Ó¸½ ¾µ¸ ×ØÙ ÒØ µ ÆÓ Solución del apartado 16: ×Ù Ð Ó´Ô Ö×ÓÒ ´ ¸ ¸ØÖ Ó´ ¸ µµ¸ µº ×Ù Ð Ó´Ô Ö×ÓÒ ´ ¸ ¸ ×ØÙ ÒØ µ¸¼µº Solución del apartado 17: ¹ Ô Ö×ÓÒ ´ µ¸ Ò Ñ ÒØÓ´ ¸ ´ ¸ ¸ Óµµ¸ Ó ½ ¸ ×Ù Ð Ó´ ¸ µ¸ ¾º Ô Ö×ÓÒ ´ Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄¸ ´ ¸ Ñ ÖÞÓ¸ ½ ¿µ¸ ØÖ Ó´Ô ÒØÓÖ¸ ½¾¼µµ Ó ½ ¿ ½¾¼ Ô Ö×ÓÒ ´ Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄¸ ´½¼¸ Ñ ÖÞÓ¸ ½ ¾µ¸ ØÖ Ó´Ñ ¸ ¼µµ Ó ½ ¾ ¼ ÆÓ Solución del apartado 18: ØÓØ Ð´ ℄¸¼µº ØÓØ Ð´ Ä℄¸ µ ¹ ×Ù Ð Ó´ ¸ ½µ¸ ØÓØ Ð´Ä¸ ¾µ¸ × ½ · ¾º Solución del apartado 19:
  39. 39. 3.3. Autómata no–determinista 39 ¹ Ñ Ð ´ ¸ ¸ µ¸ØÓØ Ð´ ¸ ℄¸ÌÓØ Ðµº Ô Ö×ÓÒ ´ ØÓÑ ×¸ Ö ¸Ô Ö Þ℄¸ ´ ¸Ñ ÝÓ¸½ ¼µ¸ ØÖ Ó´ÔÖÓ ×ÓÖ¸ ¼µµ Ô Ö×ÓÒ ´ Ò ¸ÐÓÔ Þ¸ÖÙ Þ℄¸ ´½¼¸Ñ ÖÞÓ¸½ ¾µ¸ ØÖ Ó´Ñ ¸ ¼µµ Ô Ö×ÓÒ ´ Ù Ò¸ Ö ¸ÐÓÔ Þ℄¸ ´ ¸ Ò ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ¸ Ô Ö×ÓÒ ´ Ñ Ö ¸ Ö ¸ÐÓÔ Þ℄¸ ´½¾¸ Ö Ð¸½ ¾µ¸ ×ØÙ ÒØ µ℄ ÌÓØ Ð ½ ¼ Ô Ö×ÓÒ ´ Ó× ¸Ô Ö Þ¸ÖÙ Þ℄¸ ´ ¸Ñ ÖÞÓ¸½ ¿µ¸ ØÖ Ó´Ô ÒØÓÖ¸½¾¼µµ Ô Ö×ÓÒ ´ ÐÙ × ¸ ÐÚ Þ¸Ô Ö Þ℄¸ ´½¾¸Ñ ÝÓ¸½ µ¸ ØÖ Ó´Ñ ¸ ¼µµ Ô Ö×ÓÒ ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸ ´ ¸ Ö ÖÓ¸½ ¼µ¸ ×ØÙ ÒØ µ¸ Ô Ö×ÓÒ ´ Ñ Ö Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÒ Ó¸½ ¾µ¸ ×ØÙ ÒØ µ Ô Ö×ÓÒ ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸ ´½¾¸ ÙÐ Ó¸½ µ¸ ×ØÙ ÒØ µ℄ ÌÓØ Ð ¾½¼ ÆÓ 3.3. Autómata no–determinista Ejercicio 3.3 Consideremos el autómata representado por
  40. 40. 40 Capítulo 3. Estructuras b e1 a a e2 b e3e4 b siendo ¿ el estado final. 1. Representar el autómata utilizando las siguientes relaciones Ò Ð´ µ que se verifica si es el estado final. ØÖ Ò×´ ½¸ ¸ ¾µ que se verifica si se puede pasar del estado ½ al estado ¾ usando la letra . ÒÙÐÓ´ ½¸ ¾µ que se verifica si se puede pasar del estado ½ al estado ¾ mediante un movimiento nulo. 2. Definir la relación ÔØ ´ ¸Äµ que se verifique si el autómata, a partir del estado , acepta la lista Ä. Por ejemplo, ¹ ÔØ ´ ½¸ ¸ ¸ ¸ ℄µº × ¹ ÔØ ´ ¾¸ ¸ ¸ ¸ ℄µº ÆÓ 3. Determinar si el autómata acepta la lista ¸ ¸ ¸ ℄. 4. Determinar los estados a partir de los cuales el autómata acepta la lista ¸ ℄. 5. Determinar las palabras de longitud 3 aceptadas por el autómata a partir del estado ½. 6. Definir la relación ÔØ ÓØ ½´ ¸Ä¸Æµ que se verifique si el autómata, a partir del estado , acepta la lista Ä y la longitud de Ä es Æ.
  41. 41. 3.3. Autómata no–determinista 41 7. Buscar las cadenas aceptadas a partir de ½ con longitud 3. 8. Definir la relación ÔØ ÓØ ¾´ ¸Ä¸Æµ que se verifique si el autómata, 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. Solución: Solución del apartado 1: Ò Ð´ ¿µº ØÖ Ò×´ ½¸ ¸ ½µº ØÖ Ò×´ ½¸ ¸ ¾µº ØÖ Ò×´ ½¸ ¸ ½µº ØÖ Ò×´ ¾¸ ¸ ¿µº ØÖ Ò×´ ¿¸ ¸ µº ÒÙÐÓ´ ¾¸ µº ÒÙÐÓ´ ¿¸ ½µº Solución del apartado 2: ÔØ ´ ¸ ℄µ ¹ Ò Ð´ µº ÔØ ´ ¸ Ä℄µ ¹ ØÖ Ò×´ ¸ ¸ ½µ¸ ÔØ ´ ½¸Äµº ÔØ ´ ¸Äµ ¹ ÒÙÐÓ´ ¸ ½µ¸ ÔØ ´ ½¸Äµº Solución del apartado 3: ¹ ÔØ ´ ½¸ ¸ ¸ ¸ ℄µº × Solución del apartado 4: ¹ ÔØ ´ ¸ ¸ ℄µº ½ ¿ ÆÓ Solución del apartado 5:
  42. 42. 42 Capítulo 3. Estructuras ¹ ÔØ ´ ½¸ ¸ ¸ ℄µº ÆÓ Solución del apartado 6: Presentamos dos definiciones. La primera usando ÔØ ÔØ ÓØ ½ ´ ¸Ä¸Æµ ¹ Ð Ò Ø ´Ä¸Æµ¸ ÔØ ´ ¸Äµº La segunda definición es una variación de la definición de acepta: ÔØ ÓØ ½ ´ ¸ ℄¸¼µ ¹ Ò Ð´ µº ÔØ ÓØ ½ ´ ¸ Ä℄¸Æµ ¹ Æ ¼¸ ØÖ Ò×´ ¸ ¸ ½µ¸ Å × Æ ¹ ½¸ ÔØ ÓØ ½ ´ ½¸Ä¸Åµº ÔØ ÓØ ½ ´ ¸Ä¸Æµ ¹ ÒÙÐÓ´ ¸ ½µ¸ ÔØ ÓØ ½ ´ ½¸Ä¸Æµº Nota: La primera definición es más simple y eficiente que la segunda como se ob- serva en el siguiente ejemplo ¹ Ø Ñ ´ ÔØ ÓØ ½ ´ ¾¸ ĸ ¼¼¼µµº ± ½¼¸¼¾ Ò Ö Ò ×¸ ¼º¼½ ÈÍ Ò ¼º¼½ × ÓÒ × ´½¾ ± È͸ ½¼¼¾ ¼¼ Ä Ô×µ ¹ Ø Ñ ´ ÔØ ÓØ ½ ´ ¾¸ ĸ ¼¼¼µµº ± ¾¼¸¼¿ Ò Ö Ò ×¸ ¼º¼¾ ÈÍ Ò ¼º¼¾ × ÓÒ × ´½¾ ± È͸ ½¼¼½ ¼ Ä Ô×µ A partir de ahora, adoptaremos la definición ÔØ ÓØ ½ ÔØ ÓØ ½´ ¸Ä¸Åµ ¹ ÔØ ÓØ ½ ´ ¸Ä¸Åµº Solución del apartado 7:
  43. 43. 3.3. Autómata no–determinista 43 ¹ ÔØ ÓØ ½´ ½¸Ä¸¿µº Ä ¸ ¸ ℄ Ä ¸ ¸ ℄ ÆÓ Solución del apartado 8: Presentamos dos definiciones. La primera usando ÔØ ÔØ ÓØ ¾ ´ ¸Ä¸Æµ ¹ ØÛ Ò´¼¸Æ¸Åµ¸ Ð Ò Ø ´Ä¸Åµ¸ ÔØ ´ ¸Äµº y la segunda modificando ÔØ ÔØ ÓØ ¾ ´ ¸ ℄¸ Ƶ ¹ Ò Ð´ µº ÔØ ÓØ ¾ ´ ¸ Ä℄¸Æµ ¹ Æ ¼¸ ØÖ Ò×´ ¸ ¸ ½µ¸ Å × Æ¹½¸ ÔØ ÓØ ¾ ´ ½¸Ä¸Åµº ÔØ ÓØ ¾ ´ ¸Ä¸Æµ ¹ Æ ¼¸ ÒÙÐÓ´ ¸ ½µ¸ ÔØ ÓØ ¾ ´ ½¸Ä¸Æµº Nota: La primera definición es más simple y eficiente que la segunda como se ob- serva en el siguiente ejemplo ¹ Ø Ñ ´ ÔØ ÓØ ¾ ´ ½¸ ĸ½¼¼¼¼µµº ± Ò Ö Ò ×¸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ ¹ Ø Ñ ´ ÔØ ÓØ ¾ ´ ½¸ ĸ½¼¼¼¼µµº ± ¼¸¼¾ Ò Ö Ò ×¸ ¼º¼ ÈÍ Ò ¼º¼ × ÓÒ × ´½½¿± È͸ ½ ½ Ä Ô×µ A partir de ahora, adoptaremos la definición ÔØ ÓØ ¾ ÔØ ÓØ ¾´ ¸Ä¸Åµ ¹ ÔØ ÓØ ¾ ´ ¸Ä¸Åµº Solución del apartado 9: ¹ ÔØ ÓØ ¾´ ½¸Ä¸¿µº Ä ¸ ¸ ℄ Ä ¸ ℄ Ä ¸ ¸ ℄ ÆÓ
  44. 44. 44 Capítulo 3. Estructuras 3.4. El problema del mono y el plátano Ejercicio 3.4 Un mono se encuentra en la puerta de una habitación. En el centro de la habitación hay un plátano colgado del techo. El mono está hambriento y desea coger el plátano, pero no lo alcanza desde el suelo. En la ventana de la habitación hay una silla que el mono puede usar. El mono puede realizar las siguientes acciones: pasear de un lugar a otro de la habitación, empujar la silla de un lugar a otro de la habitación (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 plátano (si está encima de la silla en el centro de la habitación). Definir la relación ×ÓÐÙ Ò´ ¸Ëµ que se verifique si Ë es una sucesión de acciones que aplicadas al estado permiten al mono coger el plátano. Por ejemplo, ¹ ×ÓÐÙ Ò´ ×Ø Ó´ÔÙ ÖØ ¸×Ù ÐÓ¸Ú ÒØ Ò ¸× Òµ¸Äµº Ä Ô × Ö´ÔÙ ÖØ ¸Ú ÒØ Ò µ¸ ÑÔÙ Ö´Ú ÒØ Ò ¸ ÒØÖÓµ¸×Ù Ö¸ Ó Ö℄ donde ×Ø Ó´ÈŸ ŸÈ˸ µ significa que el mono se encuentra en la posición ÈÅ (puerta, centro o ventana) encima de Å (suelo o silla), la silla se encuentra en la posición ÈË (puerta, centro o ventana) y el mono tiene ( = ÓÒ) o no ( = × Ò) el plátano. Solución: ×ÓÐÙ Ò´ ×Ø Ó´ ¸ ¸ ¸ ÓÒµ¸ ℄µº ×ÓÐÙ Ò´ ½¸ Ä℄µ ¹ ÑÓÚ Ñ ÒØÓ´ ½¸ ¸ ¾µ¸ ×ÓÐÙ Ò´ ¾¸Äµº La relación ÑÓÚ Ñ ÒØÓ´ ×Ø Ó´ÈŽ¸ Ž¸È˽¸ ½µ¸ ¸ ×Ø Ó´Èž¸ ž¸È˾¸ ¾µµ se ve- rifica si en el ×Ø Ó´ÈŽ¸ Ž¸È˽¸ ½µ se puede aplicar la acción y como resultado de su aplicación se pasa al ×Ø Ó´Èž¸ ž¸È˾¸ ¾µ. ÑÓÚ Ñ ÒØÓ´ ×Ø Ó´ ÒØÖÓ¸× ÐÐ ¸ ÒØÖÓ¸× Òµ¸ Ó Ö¸ ×Ø Ó´ ÒØÖÓ¸× ÐÐ ¸ ÒØÖÓ¸ ÓÒµµº ÑÓÚ Ñ ÒØÓ´ ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµ¸ ×Ù Ö¸ ×Ø Ó´ ¸× ÐÐ ¸ ¸Íµµº ÑÓÚ Ñ ÒØÓ´ ×Ø Ó´ ½¸×Ù ÐÓ¸ ½¸Íµ¸ ÑÔÙ Ö´ ½¸ ¾µ¸ ×Ø Ó´ ¾¸×Ù ÐÓ¸ ¾¸Íµµº ÑÓÚ Ñ ÒØÓ´ ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµ¸ Ô × Ö´ ¸ µ¸ ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµµº
  45. 45. 3.5. Movimientos del caballo del ajedrez 45 3.5. Movimientos del caballo del ajedrez Ejercicio 3.5 Supongamos que los cuadros del tablero de ajedrez los representamos por pares de números ¸ ℄ con e entre ½ y . 1. Definir la relación × ÐØ ´· ½¸ ¾µ que se verifica si el caballo puede pasar en un movi- miento del cuadrado ½ al cuadrado ¾. Por ejemplo, ¹ × ÐØ ´ ½¸½℄¸Ëµº Ë ¿¸¾℄ Ë ¾¸¿℄ ÆÓ 2. Definir la relación Ñ ÒӴĵ que se verifique si Ä es una lista de cuadrados representando el camino recorrido por un caballo sobre un tablero vacío. Por ejemplo, ¹ Ñ ÒÓ´ ½¸½℄¸ ℄µº ¿¸¾℄ ¾¸¿℄ ÆÓ 3. Usando la relación Ñ ÒÓ, 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 número de movimientos necesarios para desplazar el caballo del cuadro ½¸½℄ al ¾¸¾℄. ¿Cuántos caminos de dicha longitud hay de [1,1] a [2,2]? Solución: Solución del apartado 1: × ÐØ ´ ¸ ℄¸ ½¸ ½℄µ ¹ ÜÝ´ ܸ ݵ¸ ½ × · ܸ ÓÖÖ ØÓ´ ½µ¸ ½ × · ݸ ÓÖÖ ØÓ´ ½µº La relación ÜÝ´ ¸ µ se verifica si un caballo puede moverse espacios horizon- tales e verticales. ÜÝ´¾¸½µº ÜÝ´¾¸¹½µº ÜÝ´¹¾¸½µº ÜÝ´¹¾¸¹½µº
  46. 46. 46 Capítulo 3. Estructuras ÜÝ´½¸¾µº ÜÝ´½¸¹¾µº ÜÝ´¹½¸¾µº ÜÝ´¹½¸¹¾µº La relación ÓÖÖ ØÓ´· µ se verifica si está entre 1 y 8. ÓÖÖ ØÓ´ µ ¹ ½ ¸ º Solución del apartado 2: Ñ ÒÓ´ ℄µº Ñ ÒÓ´ ½¸ ¾ Ä℄µ ¹ × ÐØ ´ ½¸ ¾µ¸ Ñ ÒÓ´ ¾ Ä℄µº Solución del apartado 3: ¹ Ñ ÒÓ´ ¾¸½℄¸ ½¸ ¸ ℄¸ ¾¸ ¸ ℄℄µº ½ ¸ ¾℄ ¾ ¸ ℄ ½ ¸ ¾℄ ¾ ¸ ℄ ½ ¸ ¾℄ ¾ ¸ ℄ ½ ¸ ¾℄ ¾ ¸ ℄ ¿ ½ ¿¸ ¿℄ ¾ ¸ ℄ ½ ¿¸ ¿℄ ¾ ¸ ℄ ½ ¿¸ ¿℄ ¾ ¸ ℄ ½ ¿¸ ¿℄ ¾ ¸ ℄ ¿ ÆÓ Solución del apartado 4: ¹ Ñ ÒÓ´ ½¸½℄¸ ¸ ¾¸¾℄℄µº ÆÓ ¹ Ñ ÒÓ´ ½¸½℄¸ ¸ ¸ ¾¸¾℄℄µº ÆÓ ¹ Ñ ÒÓ´ ½¸½℄¸ ¸ ¸ ¸ ¾¸¾℄℄µº × ¹ Ñ ÒÓ´ ½¸½℄¸ ¾¸ ¿¸ ¸ ¾¸¾℄℄µº ¾ ¿¸ ¾℄ ¿ ¸ ¿℄ ¿¸ ℄ ¾ ¿¸ ¾℄ ¿ ¸ ¿℄ ¸ ½℄
  47. 47. 3.6. Máximo elemento de un árbol binario 47 ¾ ¿¸ ¾℄ ¿ ¸ ½℄ ¸ ¿℄ ¾ ¿¸ ¾℄ ¿ ½¸ ¿℄ ¿¸ ℄ ¾ ¿¸ ¾℄ ¿ ¾¸ ℄ ¸ ¿℄ ¾ ¾¸ ¿℄ ¿ ¸ ¾℄ ¿¸ ℄ ¾ ¾¸ ¿℄ ¿ ¿¸ ℄ ½¸ ℄ ¾ ¾¸ ¿℄ ¿ ¿¸ ℄ ¸ ¿℄ ¾ ¾¸ ¿℄ ¿ ¿¸ ½℄ ¸ ¿℄ ¾ ¾¸ ¿℄ ¿ ½¸ ℄ ¿¸ ℄ ÆÓ 3.6. Máximo elemento de un árbol binario Ejercicio 3.6 Un árbol binario es vacío o consta de tres partes: la raíz (que debe de ser un número positivo), el subárbol izquierdo (que debe ser un árbol binario) y el subárbol derecho (que debe ser un árbol binario). Usaremos la siguiente representación Ò Ð representa el árbol vacío Ø´Á¸Ê¸ µ representa el árbol de la raíz Ê, subárbol izquierdo Á y subárbol derecho . Por ejemplo, Ø´Ø´Ò Ð¸¾¸Ò е¸½¸Ø´Ø´Ò и ¸Ò е¸¿¸Ò еµ representa el árbol ½ » ¾ ¿ » Definir la relación Ñ Ü ÑÓ´·Ì¸¹ µ que se verifique si es el máximo de los nodos del árbol Ì. Por ejemplo, ¹ Ñ Ü ÑÓ´Ò Ð¸Æµº Æ ¼ ¹ Ñ Ü ÑÓ´Ø´Ò Ð¸¾¸Ò е¸Æµº Æ ¾ ¹ Ñ Ü ÑÓ´Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Æµº Æ ¿ Solución: La definición de Ñ Ü ÑÓ es Ñ Ü ÑÓ´Ò Ð¸¼µº Ñ Ü ÑÓ´Ø´Á¸Ê¸ µ¸Åµ ¹ Ñ Ü ÑÓ´Á¸ÅÁµ¸
  48. 48. 48 Capítulo 3. Estructuras Ñ Ü ÑÓ´ ¸Å µ¸ Ž × Ñ Ü´ÅÁ¸Å µ¸ Å × Ñ Ü´Ê¸Å½µº
  49. 49. Capítulo 4 Retroceso, corte y negación 4.1. Ejemplos de uso del corte Ejercicio 4.1 1. Definir la relación ´ ¸ µ de forma que: si < ¿, entonces = ¼; si ¿ ≤ < , entonces = ¾; si ≤ , entonces = . 2. Construir el árbol de deducción correspondiente a la cuestión ¹ ´½¸ µ¸ ¾ º 3. Definir la relación ½´ ¸ µ a partir de la definición de ´ ¸ µ, introduciendo un corte al final de las dos primeras cláusulas. 4. Construir el árbol de deducción correspondiente a la cuestión ¹ ½´½¸ µ¸ ¾ º 5. Construir el árbol de deducción correspondiente a la cuestión ¹ ½´ ¸ µº 6. En el árbol anterior se observa que se efectúan comparaciones innecesarias (por ejemplo, después de fallar la comparación ¿, efectúa la comparación ¿ ). Definir la relación ¾´ ¸ µ suprimiendo en la definición de ½´ ¸ µ las comparaciones innecesarias. 7. Construir el árbol de deducción correspondiente a la cuestión ¹ ¾´ ¸ µº 49
  50. 50. 50 Capítulo 4. Retroceso, corte y negación 8. Construir el árbol de deducción correspondiente a la cuestión ¹ ¾´½¸ µ¸ ¾ º 9. Definir la relación ¿´ ¸ µ a partir de la definición de ¾´ ¸ µ, suprimiendo los cortes. 10. Obtener las respuestas correspondientes a la cuestión ¹ ¿´½¸ µº Solución: Solución del apartado 1: La definición de es ´ ¸¼µ ¹ ¿º ´ ¸¾µ ¹ ¿ ¸ º ´ ¸ µ ¹ º Solución del apartado 2: El árbol de deducción se muestra en la figura 4.1 (página 50). 1<3, 2<0 3 =< 1, 1<6, 2<2 6 =< 1, 2<4 f(1,Y), 2<Y {X/1, Y/2} {X/1, Y/0} {X/1, Y/4} 2<0 Fallo Fallo Fallo Figura 4.1: Árbol de resolución del apartado 2 Solución del apartado 3: La definición de ½ es ½´ ¸¼µ ¹ ¿¸ º ½´ ¸¾µ ¹ ¿ ¸ ¸ º ½´ ¸ µ ¹ º Solución del apartado 4: El árbol de deducción se muestra en la figura 4.2 (página 51). Solución del apartado 5: El árbol de deducción se muestra en la figura 4.3 (página 51). Solución del apartado 6: La definición de ¾ es
  51. 51. 4.1. Ejemplos de uso del corte 51 {X/1, Y/0} 1<3, !, 2<0 !, 2<0 2<0 Fallo f_1(1,Y), 2<Y Figura 4.2: Árbol de resolución del apartado 4 3 =< 7, 7<6, ! 6 =< 77<3, ! Exito {Y/4} f_1(7,Y) {X/7, Y/2} {X/7, Y/0} {X/7, Y/4} Fallo 7<6, ! Fallo Figura 4.3: Árbol de resolución del apartado 5
  52. 52. 52 Capítulo 4. Retroceso, corte y negación ¾´ ¸¼µ ¹ ¿¸ º ¾´ ¸¾µ ¹ ¸ º ¾´ ¸ µº Solución del apartado 7: El árbol de deducción se muestra en la figura 4.4 (página 52). 7<3, ! Exito {Y/4} f_1(7,Y) {X/7, Y/2} {X/7, Y/0} {X/7, Y/4} Fallo 7<6, ! Fallo Figura 4.4: Árbol de resolución del apartado 7 Solución del apartado 8: El árbol de deducción se muestra en la figura 4.5 (página 52). {X/1, Y/0} 1<3, !, 2<0 !, 2<0 2<0 Fallo f_2(1,Y), 2<Y Figura 4.5: Árbol de resolución del apartado 8 Solución del apartado 9: La definición de ¿ es
  53. 53. 4.2. Árboles de deducción de Ñ Ñ Ö 53 ¿´ ¸¼µ ¹ ¿º ¿´ ¸¾µ ¹ º ¿´ ¸ µº Solución del apartado 10: Las respuestas son ¹ ¿´½¸ µº ¼ ¾ ÆÓ 4.2. Árboles de deducción de Ñ Ñ Ö Ejercicio 4.2 La relación Ñ Ñ Ö está definida por Ñ Ñ Ö ´ ¸ ℄µ ¹ º Ñ Ñ Ö ´ ¸ Ä℄µ ¹ Ñ Ñ Ö ´ ¸Äµº Escribir los árboles de SLD resolución correspondientes a las siguientes preguntas 1. ¹ Ñ Ñ Ö ´ ¸ ¸ ¸ ℄µ¸ º 2. ¹ Ñ Ñ Ö ´ ¸ ¸ ¸ ℄µ¸ º 3. ¹ ¸ Ñ Ñ Ö ´ ¸ ¸ ¸ ℄µº Solución: 4.3. Diferencia de conjuntos Ejercicio 4.3 Definir la relación Ö Ò ´· ½¸· ¾¸¹ ¿µ que se verifique si ¿ es la dife- rencia de los conjuntos ½ y ¾. Por ejemplo, ¹ Ö Ò ´ ¸ ℄¸ ¸ ℄¸ µº ℄ ÆÓ Definir una versión con negación ( Ö Ò ½) y otra con corte ( Ö Ò ¾) y comparar la eficiencia de las distintas definiciones con el ejemplo ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´ Ö Ò ½´ Ľ¸ Ľµµº ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´ Ö Ò ¾´ Ľ¸ Ľµµº
  54. 54. 54 Capítulo 4. Retroceso, corte y negación ! Resp.: X=b {X/a} !, a=a. a=a Resp.: X=a memberchk(X,[a,b,c]), X=a. memberchk(X,[a,b,c]), X=b. {X/a} !, a=b. a=b Fallo X=b, memberchk(X,[a,b,c]). {X/b} memberchk(b,[a,b,c]). memberchk(b,[b,c]). Figura 4.6: Árbol de resolución Ñ Ñ Ö Nota: La relación Ö Ò se corresponde con la relación definida ×Ù ØÖ Ø. Solución: 1a definición (con negación): Ö Ò ½´ ℄¸ ¸ ℄µº Ö Ò ½´ Ä℄¸Ä¾¸Ä¿µ ¹ Ñ Ñ Ö´ ¸Ä¾µ¸ Ö Ò ½´Ä¸Ä¾¸Ä¿µº Ö Ò ½´ Ä℄¸Ä¾¸ Ä¿℄µ ¹ ÒÓØ´Ñ Ñ Ö´ ¸Ä¾µµ¸ Ö Ò ½´Ä¸Ä¾¸Ä¿µº 2a definición (con corte): Ö Ò ¾´ ℄¸ ¸ ℄µº Ö Ò ¾´ Ä℄¸Ä¾¸Ä¿µ ¹ Ñ Ñ Ö´ ¸Ä¾µ¸ ¸ Ö Ò ¾´Ä¸Ä¾¸Ä¿µº Ö Ò ¾´ Ä℄¸Ä¾¸ Ä¿℄µ ¹ ± ÒÓØ´Ñ Ñ Ö´ ¸Ä¾µµ¸ Ö Ò ¾´Ä¸Ä¾¸Ä¿µº 3a definición (con corte y memberchk):
  55. 55. 4.4. Agregación de un elemento a un conjunto 55 Ö Ò ¿´ ℄¸ ¸ ℄µº Ö Ò ¿´ Ä℄¸Ä¾¸Ä¿µ ¹ Ñ Ñ Ö ´ ¸Ä¾µ¸ ¸ Ö Ò ¿´Ä¸Ä¾¸Ä¿µº Ö Ò ¿´ Ä℄¸Ä¾¸ Ä¿℄µ ¹ ± ÒÓØ´Ñ Ñ Ö ´ ¸Ä¾µµ¸ Ö Ò ¿´Ä¸Ä¾¸Ä¿µº Comparaciones: ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´ Ö Ò ½´ Ľ¸ Ľ¸ ℄µµº ± ¼½¸ ¼½ Ò Ö Ò ×¸ ¼¸¾ ÈÍ Ò ¼¸¾ × ÓÒ × ´ ± È͸ ¾¼ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´ Ö Ò ¾´ Ľ¸ Ľ¸ ℄µµº ± ¼½¸ ¼½ Ò Ö Ò ×¸ ¼¸¾ ÈÍ Ò ¼¸¾ × ÓÒ × ´ ± È͸ ¾¼¼ ¼¼ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´ Ö Ò ¿´ Ľ¸ Ľ¸ ℄µµº ± ¾¸¼¼½ Ò Ö Ò ×¸ ¼¸¼ ÈÍ Ò ¼¸¼ × ÓÒ × ´ ± È͸ ¾ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´×Ù ØÖ Ø´ Ľ¸ Ľ¸ ℄µµº ± ¾¸¼¼½ Ò Ö Ò ×¸ ¼¸¼ ÈÍ Ò ¼¸¼ × ÓÒ × ´½¼ ± È͸ ¾ ¼½¾ Ä Ô×µ 4.4. Agregación de un elemento a un conjunto Ejercicio 4.4 Definir la relación Ö Ö´· ¸·Ä¸¹Ä½µ que se verifique si Ľ es la lista obtenida añadiéndole a Ä, si no pertenece a Ä y es Ä en caso contrario. Por ejemplo, ¹ Ö Ö´ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ℄ ¹ Ö Ö´ ¸ ¸ ℄¸Äµº Ä ¸ ℄ Hacer una versión con negación y otra con corte. Solución: 1a definición (con negación): Ö Ö ½´ ¸Ä¸Äµ ¹ Ñ Ñ Ö´ ¸Äµº Ö Ö ½´ ¸Ä¸ Ä℄µ ¹ ÒÓØ´Ñ Ñ Ö´ ¸Äµµº 2a definición (con corte): Ö Ö ¾´ ¸Ä¸Äµ ¹ Ñ Ñ Ö´ ¸Äµ¸ º Ö Ö ¾´ ¸Ä¸ Ä℄µº
  56. 56. 56 Capítulo 4. Retroceso, corte y negación 4.5. Separación de una lista de números en positivos y ne- gativos Ejercicio 4.5 Definir la relación × Ô Ö ´·Ä½¸·Ä¾¸¹Ä¿µ que separa la lista de números Ľ en dos listas: ľ formada por los números positivos y Ä¿ formada por los números negativos o cero. Por ejemplo, ¹ × Ô Ö ´ ¾¸¼¸¹¿¸ ¸¼¸¾℄¸Ä¾¸Ä¿µº ľ ¾¸ ¸ ¾℄ Ä¿ ¼¸ ¹¿¸ ¼℄ × Proponer dos soluciones, una sin corte y otra con corte. Solución: Definición con negación: × Ô Ö ½´ ℄¸ ℄¸ ℄µº × Ô Ö ½´ Æ ÊĽ℄¸ Æ Êľ℄¸Ä¿µ ¹ Æ ¼¸ × Ô Ö ½´ÊĽ¸Êľ¸Ä¿µº × Ô Ö ½´ Æ ÊĽ℄¸Ä¾¸ Æ ÊÄ¿℄µ ¹ Æ ¼¸ × Ô Ö ½´ÊĽ¸Ä¾¸ÊÄ¿µº Definición con corte: × Ô Ö ¾´ ℄¸ ℄¸ ℄µº × Ô Ö ¾´ Æ ÊĽ℄¸ Æ Êľ℄¸Ä¿µ ¹ Æ ¼¸ ¸ × Ô Ö ¾´ÊĽ¸Êľ¸Ä¿µº × Ô Ö ¾´ Æ ÊĽ℄¸Ä¾¸ Æ ÊÄ¿℄µ ¹ ± Æ ¼¸ × Ô Ö ¾´ÊĽ¸Ä¾¸ÊÄ¿µº 4.6. Suma de los números pares de una lista de números Ejercicio 4.6 Definir la relación ×ÙÑ Ô Ö ×´·Ä¸¹Æµ que se verifica si Æ es la suma de todos los números pares de la lista de números Ä. Por ejemplo, ¹ ×ÙÑ Ô Ö ×´ ¾¸¿¸ ℄¸Æµº Æ ¹ ×ÙÑ Ô Ö ×´ ½¸¿¸ ¸ ¸ ¸½½¸¾ ℄¸Æµº Æ ¿¼
  57. 57. 4.6. Suma de los números pares de una lista de números 57 Hacer una versión con negación y otra con corte. Solución: Versión 1 (con negación): ×ÙÑ Ô Ö × ½´ ℄¸¼µº ×ÙÑ Ô Ö × ½´ Æ Ä℄¸ µ ¹ Ô Ö´Æµ¸ ×ÙÑ Ô Ö × ½´Ä¸ ½µ¸ × ½ · ƺ ×ÙÑ Ô Ö × ½´ Æ Ä℄¸ µ ¹ ÒÓØ´Ô Ö´ Ƶµ¸ ×ÙÑ Ô Ö × ½´Ä¸ µº Ô Ö´Æµ ¹ Æ ÑÓ ¾ ¼º Versión 2 (con corte): ×ÙÑ Ô Ö × ¾´ ℄¸¼µº ×ÙÑ Ô Ö × ¾´ Æ Ä℄¸ µ ¹ Ô Ö´Æµ¸ ¸ ×ÙÑ Ô Ö × ¾´Ä¸ ½µ¸ × ½ · ƺ ×ÙÑ Ô Ö × ¾´ Æ Ä℄¸ µ ¹ ± ÒÓØ´Ô Ö´ Ƶµ¸ ×ÙÑ Ô Ö × ¾´Ä¸ µº Versión 3 (con corte y acumulador): ×ÙÑ Ô Ö × ¿´Ä¸ µ ¹ ×ÙÑ Ô Ö × ¿ Ùܴĸ¼¸ µº ×ÙÑ Ô Ö × ¿ ÙÜ´ ℄¸ ¸ µº ×ÙÑ Ô Ö × ¿ ÙÜ´ Æ Ä℄¸ ¸ µ ¹ Ô Ö´Æµ¸ ¸ ½ × · Ƹ ×ÙÑ Ô Ö × ¿ Ùܴĸ ½¸ µº ×ÙÑ Ô Ö × ¿ ÙÜ´ Æ Ä℄¸ ¸ µ ¹ ± ÒÓØ´Ô Ö´ Ƶµ¸ ×ÙÑ Ô Ö × ¿ Ùܴĸ ¸ µº
  58. 58. 58 Capítulo 4. Retroceso, corte y negación 4.7. Exponente de dos en la factorización de un número Ejercicio 4.7 Definir la relación ÜÔÓÒ ÒØ Ó×´·Æ¸¹ µ que se verifica si es el exponen- te de 2 en la descomposición de Æ como producto de factores primos. Por ejemplo, ¹ ÜÔÓÒ ÒØ Ó×´ ¼¸ µº ¿ ¹ ÜÔÓÒ ÒØ Ó×´ ¸ µº ¼ Hacer una versión con negación y otra con corte. Solución: 1a Versión (con negación): ÜÔÓÒ ÒØ Ó× ½´Æ¸ µ ¹ Æ ÑÓ ¾ ¼¸ ƽ × Æ » ¾¸ ÜÔÓÒ ÒØ Ó× ½´Æ½¸ ½µ¸ × ½ · ½º ÜÔÓÒ ÒØ Ó× ½´Æ¸¼µ ¹ Æ ÑÓ ¾ ¼º 2a Versión (con corte): ÜÔÓÒ ÒØ Ó× ¾´Æ¸ µ ¹ Æ ÑÓ ¾ ¼¸ ¸ ƽ × Æ » ¾¸ ÜÔÓÒ ÒØ Ó× ¾´Æ½¸ ½µ¸ × ½ · ½º ÜÔÓÒ ÒØ Ó× ¾´ ¸¼µº 4.8. Transformación de lista a conjunto Ejercicio 4.8 Definir la relación Ð ×Ø ÓÒ ÙÒØÓ´·Ä¸¹ µ que se verifique si es el conjun- to correspondiente a la lista Ä (es decir, contiene los mismos elementos que Ä en el mismo orden, pero si Ä tiene elementos repetidos sólo se incluye en la última aparición de cada elemento). Por ejemplo, ¹ Ð ×Ø ÓÒ ÙÒØÓ´ ¸ ¸ ¸ ℄¸ µº ¸ ¸ ℄ Nota: La relación Ð ×Ø ÓÒ ÙÒØÓ se corresponde con la relación definida Ð ×Ø ØÓ × Ø.
  59. 59. 4.8. Transformación de lista a conjunto 59 Solución: La definición de Ð ×Ø ÓÒ ÙÒØÓ es Ð ×Ø ÓÒ ÙÒØÓ´ ℄¸ ℄µº Ð ×Ø ÓÒ ÙÒØÓ´ Ä℄¸ µ ¹ Ñ Ñ Ö´ ¸Äµ¸ Ð ×Ø ÓÒ ÙÒØӴĸ µº Ð ×Ø ÓÒ ÙÒØÓ´ Ä℄¸ ℄µ ¹ · Ñ Ñ Ö´ ¸Äµ¸ Ð ×Ø ÓÒ ÙÒØӴĸ µº La definición anterior puede simplificarse con cortes Ð ×Ø ÓÒ ÙÒØÓ ½´ ℄¸ ℄µº Ð ×Ø ÓÒ ÙÒØÓ ½´ Ä℄¸ µ ¹ Ñ Ñ Ö´ ¸Äµ¸ ¸ Ð ×Ø ÓÒ ÙÒØÓ ½´Ä¸ µº Ð ×Ø ÓÒ ÙÒØÓ ½´ Ä℄¸ ℄µ ¹ ± · Ñ Ñ Ö´ ¸Äµ¸ Ð ×Ø ÓÒ ÙÒØÓ ½´Ä¸ µº 3a definición (con corte y memberchk): Ð ×Ø ÓÒ ÙÒØÓ ¿´ ℄¸ ℄µº Ð ×Ø ÓÒ ÙÒØÓ ¿´ Ä℄¸Ä¾µ ¹ Ñ Ñ Ö ´ ¸Äµ¸ ¸ Ð ×Ø ÓÒ ÙÒØÓ ¿´Ä¸Ä¾µº Ð ×Ø ÓÒ ÙÒØÓ ¿´ Ä℄¸ ľ℄µ ¹ ± ÒÓØ´Ñ Ñ Ö´ ¸Äµµ¸ Ð ×Ø ÓÒ ÙÒØÓ ¿´Ä¸Ä¾µº Comparaciones: ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø ÓÒ ÙÒØÓ ½´ Ľ¸ оµµº ± ½¸¼¼¿¸¼¼½ Ò Ö Ò ×¸ ¼¸ ¼ ÈÍ Ò ¼¸ ½ × ÓÒ × ´ ± È͸ ¾ ¼ ¼¿ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø ÓÒ ÙÒØÓ ¾´ Ľ¸ оµµº ± ¼½¸ ¼½ Ò Ö Ò ×¸ ¼¸¾ ÈÍ Ò ¼¸¾ × ÓÒ × ´ ¿± È͸ ½ ¾ ¼ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø ÓÒ ÙÒØÓ ¿´ Ľ¸ оµµº ± ¿¸¼¼½ Ò Ö Ò ×¸ ¼¸¼ ÈÍ Ò ¼¸¼ × ÓÒ × ´ ¼± È͸ ¾ ½ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø ØÓ × Ø´ Ľ¸ оµµº ± ¿¸¼¼ Ò Ö Ò ×¸ ¼¸¼ ÈÍ Ò ¼¸¼ × ÓÒ × ´ ¿± È͸ ¾ ½ Ä Ô×µ
  60. 60. 60 Capítulo 4. Retroceso, corte y negación 4.9. Signos de crecimientos de sucesiones numéricas Ejercicio 4.9 Definir la relación Ö Ñ ÒØÓ×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista correspondientes a los crecimientos de la lista numérica Ľ; es decir, entre cada par de elementos consecutivos e de Ľ coloca el signo · si e y signo ¹ en caso contrario. Por ejemplo, ¹ Ö Ñ ÒØÓ×´ ½¸¿¸¾¸¾¸ ¸¿℄¸Äµº Ä ½¸ ·¸ ¿¸ ¹¸ ¾¸ ¹¸ ¾¸ ·¸ ¸ ¹℄ Dar una definición sin corte y otra con corte. Solución: La definición de Ö Ñ ÒØÓ× sin usar corte es Ö Ñ ÒØÓ× ½´ ℄¸ ℄µº Ö Ñ ÒØÓ× ½´ ¸ Ľ℄¸ ¸· ľ℄µ ¹ ¸ Ö Ñ ÒØÓ× ½´ Ľ℄¸Ä¾µº Ö Ñ ÒØÓ× ½´ ¸ Ľ℄¸ ¸¹ ľ℄µ ¹ ¸ Ö Ñ ÒØÓ× ½´ Ľ℄¸Ä¾µº La definición de Ö Ñ ÒØÓ× usando corte es Ö Ñ ÒØÓ× ¾´ ℄¸ ℄µº Ö Ñ ÒØÓ× ¾´ ¸ Ľ℄¸ ¸· ľ℄µ ¹ ¸ ¸ Ö Ñ ÒØÓ× ¾´ Ľ℄¸Ä¾µº Ö Ñ ÒØÓ× ¾´ ¸ Ľ℄¸ ¸¹ ľ℄µ ¹ ± ¸ Ö Ñ ÒØÓ× ¾´ Ľ℄¸Ä¾µº 4.10. Descomposición en factores primos Ejercicio 4.10 Definir las siguientes relaciones: Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´·Æ¸ µ que se verifique si es el menor divisor de Æ mayor o igual que 2. Por ejemplo, ¹ Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´¿¼¸ µº ¾ ¹ Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´¿¸ µº ¿
  61. 61. 4.11. Menor elemento que cumple una propiedad 61 ØÓÖ Þ Ò´·Æ¸¹Äµ que se verifique si Ä es la lista correspondiente a la descomposi- ción del número Æ en factores primos (se considera los que elementos de Ä están ordenados de manera creciente). Por ejemplo, ¹ ØÓÖ Þ Ò´½¾¸Äµº Ä ¾¸ ¾¸ ¿℄ ÆÓ ¹ ØÓÖ Þ Ò´½¸Äµº Ä ℄ ÆÓ Solución: La definición de Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó es Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´Æ¸ µ ¹ ƽ × ÐÓÓÖ´×ÕÖشƵµ¸ ØÛ Ò´¾¸Æ½¸ µ¸ Æ ÑÓ ¼¸ º Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´Æ¸Æµº La definición de ØÓÖ Þ Ò es ØÓÖ Þ Ò´½¸ ℄µº ØÓÖ Þ Ò´Æ¸ Ä℄µ ¹ Æ ½¸ Ñ ÒÓÖ Ú ×ÓÖ ÔÖÓÔ Ó´Æ¸ µ¸ ƽ × Æ» ¸ ØÓÖ Þ Ò´Æ½¸Äµº 4.11. Menor elemento que cumple una propiedad Ejercicio 4.11 Definir la relación Ð ÙÐ ´·Æ¸·Å¸ µ que se verifique si es el menor múlti- plo de Æ tal que la suma de sus dígitos es mayor que Å. Por ejemplo, ¹ Ð ÙÐ ´¿¸½¼¸ µº ¿ × ¹ Ð ÙÐ ´ ¸¾¼¸ µº ¿ × Solución: La definición de Ð ÙÐ es
  62. 62. 62 Capítulo 4. Retroceso, corte y negación Ð ÙÐ ´Æ¸Å¸ µ ¹ Ñ ÐØ ÔÐӴƸ µ¸ ×ÙÑ ØÓ×´ ¸Æ½µ¸ ƽ Ÿ º La relación Ñ ÐØ ÔÐÓ´·Æ¸¹ µ se verifica si es un múltiplo de Æ. Por ejemplo, ¹ Ñ ÐØ ÔÐÓ´ ¸ µº ½¼ ½ × Ñ ÐØ ÔÐӴƸƵº Ñ ÐØ ÔÐӴƸŵ ¹ Ñ ÐØ ÔÐӴƸƽµ¸ Å × Æ·Æ½º La relación ×ÙÑ ØÓ×´·Æ¸¹Ëµ se verifica si Ë es la suma de los dígitos del nú- mero Æ. Por ejemplo, ¹ ×ÙÑ ØÓ×´¾¿ ¸Ëµº Ë ½¾ ×ÙÑ ØÓ״ƸƵ ¹ Æ ½¼¸ º ×ÙÑ ØÓ״Ƹ˵ ¹ ± Æ ½¼¸ ƽ × Æ »» ½¼¸ Ê × Æ ¹ ½¼¶Æ½¸ ×ÙÑ ØÓ״ƽ¸Ë½µ¸ Ë × Ë½ · ʺ 4.12. Números libres de cuadrados Ejercicio 4.12 Un número es libre de cuadrados si no es divisible por el cuadrado de ningún nú- mero mayor que 1. Definir la relación Ð Ö Ù Ö Ó×´·Æµ que se verifique si el número Æ es libre de cuadrados. Por ejemplo,
  63. 63. 4.13. Suma de los números libres de cuadrados 63 ¹ Ð Ö Ù Ö Ó×´¿¼µº × ¹ Ð Ö Ù Ö Ó×´½¾µº ÆÓ Solución: La definición de Ð Ö Ù Ö Ó× es Ð Ö Ù Ö Ó״Ƶ ¹ Å × ÐÓÓÖ´×ÕÖشƵµ¸ ÒÓØ´´ ØÛ Ò´¾¸Å¸ µ¸ Æ ÑÓ ´ ¶ µ ¼µµº 4.13. Suma de los números libres de cuadrados Ejercicio 4.13 Definir la relación ×ÙÑ Ð Ö × Ù Ö Ó×´·Ä¸¹Ëµ que se verifique si Ë es la suma de los números libres de cuadrados la lista numérica Ä. Por ejemplo, ¹ ×ÙÑ Ð Ö × Ù Ö Ó×´ ¸½¾¸½ ¸¿¼℄¸Ëµº Ë ¿ Nota: Dar dos definiciones, una con negación y otra con corte. Solución: La definición de ×ÙÑ Ð Ö × Ù Ö Ó× usando la negación es ×ÙÑ Ð Ö × Ù Ö Ó× ½´ ℄¸¼µº ×ÙÑ Ð Ö × Ù Ö Ó× ½´ Ä℄¸Ëµ ¹ Ð Ö Ù Ö Ó×´ µ¸ ×ÙÑ Ð Ö × Ù Ö Ó× ½´Ä¸Ë½µ¸ Ë × ·Ë½º ×ÙÑ Ð Ö × Ù Ö Ó× ½´ Ä℄¸Ëµ ¹ ÒÓØ´Ð Ö Ù Ö Ó×´ µµ¸ ×ÙÑ Ð Ö × Ù Ö Ó× ½´Ä¸Ëµº y la definición usando corte es ×ÙÑ Ð Ö × Ù Ö Ó× ¾´ ℄¸¼µº ×ÙÑ Ð Ö × Ù Ö Ó× ¾´ Ä℄¸Ëµ ¹ Ð Ö Ù Ö Ó×´ µ¸ ¸ ×ÙÑ Ð Ö × Ù Ö Ó× ¾´Ä¸Ë½µ¸ Ë × ·Ë½º ×ÙÑ Ð Ö × Ù Ö Ó× ¾´ Ä℄¸Ëµ ¹ ± ÒÓØ´Ð Ö Ù Ö Ó×´ µµ¸ ×ÙÑ Ð Ö × Ù Ö Ó× ¾´Ä¸Ëµº
  64. 64. 64 Capítulo 4. Retroceso, corte y negación 4.14. Máximo número de una lista Ejercicio 4.14 Definir la relación Ñ Ü Ð ×Ø ´·Ä¸¹Æµ que se verifique si Æ es el mayor número de la lista Ä. Por ejemplo, ¹ Ñ Ü Ð ×Ø ´ ¾¸ ¾¿¸ ¸ · ℄¸Æµº Æ ¹ Ñ Ü Ð ×Ø ´ ¹¾¸ ¾¿¸¹ ¸ · ℄¸Æµº Æ ¹¾ ¹ Ñ Ü Ð ×Ø ´ ¾¿¸ · ℄¸Æµº ÆÓ Solución: La definición de Ñ Ü Ð ×Ø es Ñ Ü Ð ×Ø ´Ä¸Åµ ¹ Ñ Ñ Ö´Å¸Äµ¸ ÒÙÑ Ö´Åµ¸ ÒÓØ´´Ñ Ñ Ö´Æ¸Äµ¸ ÒÙÑ Ö´Æµ¸ Æ Åµµº 4.15. Longitud de las subsucesiones comunes maximales Ejercicio 4.15 Definir la relación ÐÓÒ ØÙ × Ñ´·Ä½¸·Ä¾¸¹Æµ que se verifique si Æ es la lon- gitud de las subsucesiones comunes maximales de las listas Ľ y ľ. Por ejemplo, ¹ ÐÓÒ ØÙ × Ñ´ ¾¸½¸ ¸ ¸¾¸¿¸ ¸¾¸ ¸¿℄¸ ½¸ ¸ ¸¿¸¾℄¸Æµº Æ ÆÓ ya que ½¸ ¸¿¸¾℄ es una subsucesión de las dos listas y no poseen ninguna otra subsucesión común de mayor longitud. Obsérvese que los elementos de la subsucesión no son necesariamente elementos adyacentes en las listas. Solución: La definición de ÐÓÒ ØÙ × Ñ es ÐÓÒ ØÙ × Ñ´ ℄¸ ¸¼µº ÐÓÒ ØÙ × Ñ´ ¸ ℄¸¼µº ÐÓÒ ØÙ × Ñ´ Ľ℄¸ ľ℄¸Æµ ¹ ¸ ÐÓÒ ØÙ × Ñ´Ä½¸Ä¾¸Åµ¸ Æ × Å·½º ÐÓÒ ØÙ × Ñ´ Ľ℄¸ ľ℄¸Æµ ¹
  65. 65. 4.16. Elementos repetidos en una lista 65 ± ¸ ÐÓÒ ØÙ × Ñ´Ä½¸ ľ℄¸Æ½µ¸ ÐÓÒ ØÙ × Ñ´ Ľ℄¸Ä¾¸Æ¾µ¸ Æ × Ñ Ü´Æ½¸Æ¾µº 4.16. Elementos repetidos en una lista Ejercicio 4.16 Definir la relación Ö Ô Ø Ó´¹ ¸·Äµ que se verifique si el elemento está repe- tido (i.e. ocurre más de una vez) en la lista Ä. Por ejemplo, ¹ Ö Ô Ø Ó´ ¸ ½¸¾¸½¸¿¸ ¸¿℄µº ½ ½ ¿ ¿ ÆÓ ¹ Ö Ô Ø Ó´ ¸ ½¸¾¸ ℄µº ÆÓ Solución: La definición de Ö Ô Ø Ó es Ö Ô Ø Ó´ ¸Äµ ¹ × Ð Ø´ ¸Ä¸Êµ¸ Ñ Ñ Ö ´ ¸Êµº Ejercicio 4.17 Defimir la relación Ð Ñ Ò ´· ¸·Ä½¸¹Ä¾µ que se verifique si ľ es la lista ob- tenida eliminando todas las ocurrencias de en la lista Ľ. Por ejemplo, ¹ Ð Ñ Ò ´ ¸ ½¸ ¸ ¸¿¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ½¸ ¸ ¿¸ ¸ ℄ Solución: La definición de Ð Ñ Ò es Ð Ñ Ò ´ ¸ ℄¸ ℄µº Ð Ñ Ò ´ ¸ Ľ℄¸Ä¾µ ¹ Ð Ñ Ò ´ ¸Ä½¸Ä¾µº Ð Ñ Ò ´ ¸ Ľ℄¸ ľ℄µ ¹ ¸ Ð Ñ Ò ´ ¸Ä½¸Ä¾µº Ejercicio 4.18 Definir la relación Ö Ô Ø Ó×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de los elementos repetidos de la lista Ľ. Por ejemplo,
  66. 66. 66 Capítulo 4. Retroceso, corte y negación ¹ Ö Ô Ø Ó× ½´ ½¸¾¸ ¸¿¸ ¸½¸¿¸ ℄¸Äµº Ä ½¸ ¸ ¿℄ Solución: La primera definición de Ö Ô Ø Ó× es Ö Ô Ø Ó× ½´ ℄¸ ℄µº Ö Ô Ø Ó× ½´ Ľ℄¸ ľ℄µ ¹ Ñ Ñ Ö ´ ¸Ä½µ¸ Ð Ñ Ò ´ ¸Ä½¸Ä¿µ¸ Ö Ô Ø Ó× ½´Ä¿¸Ä¾µº Ö Ô Ø Ó× ½´ Ľ℄¸Ä¾µ ¹ ÒÓØ´Ñ Ñ Ö ´ ¸Ä½µµ¸ Ö Ô Ø Ó× ½´Ä½¸Ä¾µº con cortes se transforma en Ö Ô Ø Ó× ¾´ ℄¸ ℄µº Ö Ô Ø Ó× ¾´ Ľ℄¸ ľ℄µ ¹ Ñ Ñ Ö ´ ¸Ä½µ¸ ¸ Ð Ñ Ò ´ ¸Ä½¸Ä¿µ¸ Ö Ô Ø Ó× ¾´Ä¿¸Ä¾µº Ö Ô Ø Ó× ¾´ Ľ℄¸Ä¾µ ¹ ± ÒÓØ´Ñ Ñ Ö ´ ¸Ä½µµ¸ Ö Ô Ø Ó× ¾´Ä½¸Ä¾µº 4.17. Subconjunto maximal Ejercicio 4.19 Definir la relación ×Ù ÓÒ ÙÒØÓ Ñ Ü Ñ Ð´·Ä½¸¹Ä¾µ que se verifica si ľ es un subconjunto maximal de Ľ (es decir, es un conjunto de elementos de Ľ tal que sólo existe un elemento de Ľ que no pertenece a ľ). Por ejemplo, ¹ ×Ù ÓÒ ÙÒØÓ Ñ Ü Ñ Ð´ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ℄ Ä ¸ ℄ Ä ¸ ℄ ÆÓ Solución: La definición de ×Ù ÓÒ ÙÒØÓ Ñ Ü Ñ Ð es ×Ù ÓÒ ÙÒØÓ Ñ Ü Ñ Ð´Ä½¸Ä¾µ ¹ Ð ×Ø ØÓ × Ø´Ä½¸Ä¿µ¸ × Ð Ø´ ¸Ä¿¸Ä¾µº
  67. 67. 4.18. Suma de los elementos con posiciones múltiplos de n 67 Nota: La relación Ð ×Ø ØÓ × Ø se corresponde con la relación Ð ×Ø ÓÒ ÙÒØÓ definida en la página 59. 4.18. Suma de los elementos con posiciones múltiplos de n Ejercicio 4.20 Definir la relación ×ÙÑ ÔÓ× ÓÒ ×´·Æ¸·Ä¸¹Ëµ que se verifique si Ë es la suma de los elementos de la lista que ocupan las posiciones que son múltiplos de Æ. Por ejemplo, ¹×ÙÑ ÔÓ× ÓÒ ×´¾¸ ¿¸ ¸ ¸ ¸½¸¾℄¸Ëµº Ë ½ ¹ ×ÙÑ ÔÓ× ÓÒ ×´¿¸ ¿¸ ¸ ¸ ¸½¸¾℄¸Ëµº Ë Solución: La definición de ×ÙÑ ÔÓ× ÓÒ × es ×ÙÑ ÔÓ× ÓÒ ×´Æ¸Ä¸Ëµ ¹ Ð Ñ ÒØÓ Ý Ö ×ØӴƸĸ ¸Ä½µ¸ ¸ ×ÙÑ ÔÓ× ÓÒ ×´Æ¸Ä½¸Ë½µ¸ Ë × ·Ë½º ×ÙÑ ÔÓ× ÓÒ ×´ ¸ ¸¼µº donde Ð Ñ ÒØÓ Ý Ö ×ØÓ´·Æ¸·Ä½¸¹ ¸¹Ä¾µ se verifica si es el elemento Æ–ésimo de Ľ y ľ es la lista Ľ a partir del elemento . Por ejemplo, ¹ Ð Ñ ÒØÓ Ý Ö ×ØÓ´¿¸ ¿¸ ¸ ¸ ¸½¸¾℄¸ ¸Äµº Ä ¸ ½¸ ¾℄ La definición de Ð Ñ ÒØÓ Ý Ö ×ØÓ es Ð Ñ ÒØÓ Ý Ö ×ØӴƸĽ¸ ¸Ä¾µ ¹ Ð Ò Ø ´Ä¸Æµ¸ ÔÔ Ò ´Ä¸Ä¾¸Ä½µ¸ Ð ×شĸ µº 4.19. Compresión de listas Ejercicio 4.21 Definir la relación ÓÑÔÖ Ñ ´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista obte- nida sustituyendo cada sucesión de un elemento de Ľ por dicho elemento. Por ejemplo,
  68. 68. 68 Capítulo 4. Retroceso, corte y negación ¹ ÓÑÔÖ Ñ ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ¸ ¸ ¸ ℄ Solución: Vamos a presentar dos definiciones. La primera definición de ÓÑÔÖ Ñ es ÓÑÔÖ Ñ ´ ℄¸ ℄µº ÓÑÔÖ Ñ ´ ℄¸ ℄µº ÓÑÔÖ Ñ ´ ¸ Ľ℄¸Ä¾µ ¹ ÓÑÔÖ Ñ ´ Ľ℄¸Ä¾µº ÓÑÔÖ Ñ ´ ¸ Ľ℄¸ ľ℄µ ¹ ¸ ÓÑÔÖ Ñ ´ Ľ℄¸Ä¾µº En la segunda definición se usa el corte ÓÑÔÖ Ñ ¾´ ℄¸ ℄µº ÓÑÔÖ Ñ ¾´ ℄¸ ℄µº ÓÑÔÖ Ñ ¾´ ¸ Ľ℄¸Ä¾µ ¹ ¸ ¸ ÓÑÔÖ Ñ ¾´ Ľ℄¸Ä¾µº ÓÑÔÖ Ñ ¾´ ¸ Ľ℄¸ ľ℄µ ¹ ± ¸ ÓÑÔÖ Ñ ¾´ Ľ℄¸Ä¾µº 4.20. Empaquetamiento de listas Ejercicio 4.22 Definir la relación ÑÔ ÕÙ Ø ´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista obtenida sustituyendo cada sucesión de un elemento de Ľ por la lista formada por dicha sucesión. Por ejemplo, ¹ ÑÔ ÕÙ Ø ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ℄¸ ¸ ℄¸ ¸ ¸ ℄¸ ¸ ℄¸ ¸ ¸ ℄℄ Solución: La definición de ÑÔ ÕÙ Ø es ÑÔ ÕÙ Ø ´ ℄¸ ℄µº ÑÔ ÕÙ Ø ´ Ľ℄¸ ľ Ä¿℄µ ¹ ÑÔ ÕÙ Ø ÙÜ´ ¸Ä½¸Ä ¸Ä¾µ¸ ÑÔ ÕÙ Ø ´Ä ¸Ä¿µº
  69. 69. 4.21. Codificación por longitud 69 La relación ÑÔ ÕÙ Ø ÙÜ´ ¸Ä½¸Ä ¸Ä¾µ se verifica si Ä es la lista obtenida eli- minando en Ľ todas las ocurrencias iniciales de y ľ es la lista formada por y las ocurrencias iniciales de en Ľ; por ejemplo, ¹ ÑÔ ÕÙ Ø ÙÜ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Ä ¸Ä¾µº Ä ¸ ¸ ¸ ¸ ℄ ľ ¸ ¸ ℄ La definición de ÑÔ ÕÙ Ø ÙÜ es ÑÔ ÕÙ Ø ÙÜ´ ¸ ℄¸ ℄¸ ℄µº ÑÔ ÕÙ Ø ÙÜ´ ¸ Ľ℄¸Ä ¸ ľ℄µ ¹ ÑÔ ÕÙ Ø ÙÜ´ ¸Ä½¸Ä ¸Ä¾µº ÑÔ ÕÙ Ø ÙÜ´ ¸ Ľ℄¸ Ľ℄¸ ℄µ ¹ º La definición anterior puede transformarse introduciendo corte en ÑÔ ÕÙ Ø ÙÜ ¾´ ¸ ℄¸ ℄¸ ℄µº ÑÔ ÕÙ Ø ÙÜ ¾´ ¸ Ľ℄¸Ä ¸ ľ℄µ ¹ ¸ ÑÔ ÕÙ Ø ÙÜ ¾´ ¸Ä½¸Ä ¸Ä¾µº ÑÔ ÕÙ Ø ÙÜ ¾´ ¸ Ľ℄¸ Ľ℄¸ ℄µº 4.21. Codificación por longitud Ejercicio 4.23 Definir la relación Ó ´·Ä½¸¹Ä¾µ que se verifique si ľ es la codifica- ción por longitud de la lista Ľ; es decir, las sucesiones de un mismo elemento de Ľ se codifican por términos de la forma ƹ donde Æ es la longitud de la sucesión. Por ejemplo, ¹ Ó ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ½¹ ¸ ¾¹ ¸ ¿¹ ¸ ¾¹ ¸ ¿¹ ℄ (Indicación: Usar la relación ÑÔ ÕÙ Ø (4.20)). Solución: La definición de Ó es Ó ´Ä½¸Ä¾µ ¹ ÑÔ ÕÙ Ø ´Ä½¸Äµ¸ Ó Ùܴĸľµº
  70. 70. 70 Capítulo 4. Retroceso, corte y negación La relación Ó ÙÜ´·Ä½¸¹Ä¾µ se verifica si, suponiendo que Ľ es una lista de la forma ½¸ººº¸ ½℄¸ººº¸ Ѹºººº Ñ℄℄), ľ es la lista ƽ¹ ½¸ºººÆѹ Ñ℄ donde Æ es la longitud de ¸ººº¸ ℄. Por ejemplo. ¹ Ó ÙÜ´ ℄¸ ¸ ℄¸ ¸ ¸ ℄¸ ¸ ℄¸ ¸ ¸ ℄℄¸Äµº Ä ½¹ ¸ ¾¹ ¸ ¿¹ ¸ ¾¹ ¸ ¿¹ ℄ La definición de Ó ÙÜ es Ó ÙÜ´ ℄¸ ℄µº Ó ÙÜ´ ℄ Ľ℄¸ ƹ ľ℄µ ¹ Ð Ò Ø ´ ℄¸Æµ¸ Ó ÙܴĽ¸Ä¾µº 4.22. Codificación reducida por longitud Ejercicio 4.24 Definir la relación Ó Ö Ù ´·Ä½¸¹Ä¾µ que se verifique si ľ es la codificación reducida por longitud de la lista Ľ; es decir, las sucesiones de un mismo elemento de Ľ se codifican por términos de la forma ƹ donde Æ es la longitud de la sucesión cuando Æ es mayor que 1 y por cuando Æ es igual a 1. Por ejemplo, ¹ Ó Ö Ù ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ¾¹ ¸ ¿¹ ¸ ¸ ¿¹ ℄ (Indicación: Usar la relación Ó (4.21)). Solución: La definición de Ó Ö Ù es Ó Ö Ù ´Ä½¸Ä¾µ ¹ Ó ´Ä½¸Äµ¸ Ó Ö Ù Ùܴĸľµº La relación Ó Ö Ù ÙÜ´·Ä½¸¹Ä¾µ se verifica si ľ es la lista obtenida transformando los elementos de Ľ de la forma ½¹ por y dejando los restantes elemen- tos de la misma forma (se supone que Ľ es una lista de la forma ƽ¹ ½¸ººº¸Æѹ Ñ℄). Por ejemplo, ¹ Ó Ö Ù ÙÜ´ ½¹ ¸¾¹ ¸¿¹ ¸½¹ ¸¿¹ ℄¸Äµº Ä ¸ ¾¹ ¸ ¿¹ ¸ ¸ ¿¹ ℄ La definición de Ó Ö Ù ÙÜ es
  71. 71. 4.23. Decodificación de lista 71 Ó Ö Ù ÙÜ´ ℄¸ ℄µº Ó Ö Ù ÙÜ´ ½¹ Ľ℄¸ ľ℄µ ¹ Ó Ö Ù ÙܴĽ¸Ä¾µº Ó Ö Ù ÙÜ´ ƹ Ľ℄¸ ƹ ľ℄µ ¹ Æ ½¸ Ó Ö Ù ÙܴĽ¸Ä¾µº La definición anterior puede simplificarse introduciendo un corte: Ó Ö Ù ÙÜ´ ℄¸ ℄µº Ó Ö Ù ÙÜ´ ½¹ Ľ℄¸ ľ℄µ ¹ ¸ Ó Ö Ù ÙܴĽ¸Ä¾µº Ó Ö Ù ÙÜ´ ƹ Ľ℄¸ ƹ ľ℄µ ¹ ± Æ ½¸ Ó Ö Ù ÙܴĽ¸Ä¾µº 4.23. Decodificación de lista Ejercicio 4.25 Definir la relación Ó ´·Ä½¸¹Ä¾µ que, dada la lista Ľ, devuelve la lista ľ cuya codificación reducida por longitud es Ľ. Por ejemplo, ¹ Ó ´ ¸¾¹ ¸¿¹ ¸ ¸¿¹ ℄¸Äµº Ä ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄ Solución: La definición de Ó es Ó ´ ℄¸ ℄µº Ó ´ ½¹ Ľ℄¸ ľ℄µ ¹ ¸ Ó ´Ä½¸Ä¾µº Ó ´ ƹ Ľ℄¸ ľ℄µ ¹ ± Æ ½¸ ¸ ƽ × Æ ¹ ½¸ Ó ´ ƽ¹ Ľ℄¸Ä¾µº Ó ´ Ľ℄¸ ľ℄µ ¹ ± × Ø Ñ Ó Ó ´Ä½¸Ä¾µº
  72. 72. 72 Capítulo 4. Retroceso, corte y negación 4.24. Codificación reducida directa Ejercicio 4.26 Definir la relación Ó Ö Ø ´·Ä½¸¹Ä¾µ que se verifica si ľ es la codificación reducida de Ľ (es decir, las sucesiones de un mismo elemento de Ľ se codifican por términos de la forma ƹ donde Æ es la longitud de la sucesión cuando Æ es mayor que 1 y por cuando Æ es igual a 1), pero en su definición no se crean listas de elementos repetidos como en la definición de Ó Ö Ù . Por ejemplo, ¹ Ó Ö Ø ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Äµº Ä ¸ ¾¹ ¸ ¿¹ ¸ ¸ ¿¹ ℄ Solución: La definición de Ó Ö Ø es Ó Ö Ø ´ ℄¸ ℄µº Ó Ö Ø ´ Ľ℄¸ Ì Ä¾℄µ ¹ Ù ÒØ Ý Ö ×ØÓ´ ¸ Ľ℄¸Æ¸Ä¿µ¸ Ø ÖÑ ÒӴƸ ¸Ìµ¸ Ó Ö Ø ´Ä¿¸Ä¾µº La relación Ù ÒØ Ý Ö ×ØÓ´· ¸·Ä½¸¹Æ¸¹Ä¾µ se verifica si Æ es el número de veces que aparece en la cabeza de la lista Ľ y ľ es el resto de la lista Ľ cuando se le quita la sucesión de elementos de su cabeza. Por ejemplo, ¹ Ù ÒØ Ý Ö ×ØÓ´ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ¸ ℄¸Æ¸Äµº Æ ¾ Ä ¸ ¸ ¸ ¸ ¸ ¸ ℄ La definición de Ù ÒØ Ý Ö ×ØÓ es Ù ÒØ Ý Ö ×ØÓ´ ¸ Ľ℄¸Æ¸Ä¾µ ¹ Ù ÒØ Ý Ö ×ØÓ´ ¸Ä½¸Å¸Ä¾µ¸ Æ × Å·½º Ù ÒØ Ý Ö ×ØÓ´ ¸ Ä℄¸¼¸ Ä℄µ ¹ º Ù ÒØ Ý Ö ×ØÓ´ ¸ ℄¸¼¸ ℄µº La definición anterior puede simplificarse con cortes: Ù ÒØ Ý Ö ×ØÓ ½´ ¸ Ľ℄¸Æ¸Ä¾µ ¹ ¸ Ù ÒØ Ý Ö ×ØÓ ½´ ¸Ä½¸Å¸Ä¾µ¸ Æ × Å·½º Ù ÒØ Ý Ö ×ØÓ ½´ ¸Ä¸¼¸Äµº
  73. 73. 4.25. Cota superior de una lista de números 73 La relación Ø ÖÑ ÒÓ´·Æ¸· ¸¹Ìµ se verifica si Ì es el término correspondiente al nú- mero Æ y al elemento (es decir, Ì es si Æ es 1 y es ƹ en otro caso). Por ejemplo, ¹ Ø ÖÑ ÒÓ´½¸ ¸Ìµº Ì ¹ Ø ÖÑ ÒÓ´¾¸ ¸Ìµº Ì ¾¹ La definición de Ø ÖÑ ÒÓ es Ø ÖÑ ÒÓ´½¸ ¸ µº Ø ÖÑ ÒӴƸ ¸Æ¹ µ ¹ Æ ½º La definición anterior puede simplificarse con cortes: Ø ÖÑ ÒÓ ½´½¸ ¸ µ ¹ º Ø ÖÑ ÒÓ ½´Æ¸ ¸Æ¹ µº ± ¹ Æ ½º 4.25. Cota superior de una lista de números Ejercicio 4.27 Definir la relación ÓØ ×ÙÔ Ö ÓÖ´·Ä¸·Æµ que se verifique si Æ es una cota superior de Ä (es decir, todos los elementos de Ä son menores o iguales que Æ). Por ejemplo, ¹ ÓØ ×ÙÔ Ö ÓÖ´ ½¸ ¸¿℄¸ µº × ¹ ÓØ ×ÙÔ Ö ÓÖ´ ½¸ ¸¿℄¸ µº × ¹ ÓØ ×ÙÔ Ö ÓÖ´ ½¸ ¸¿℄¸ µº ÆÓ Dar dos definiciones, una recursiva y la otra no recursiva. Solución: La definición recursiva de ÓØ ×ÙÔ Ö ÓÖ es ÓØ ×ÙÔ Ö ÓÖ ½´ ℄¸ µº ÓØ ×ÙÔ Ö ÓÖ ½´ Ä℄¸Æµ ¹ Ƹ ÓØ ×ÙÔ Ö ÓÖ ½´Ä¸Æµº La definición no recursiva de ÓØ ×ÙÔ Ö ÓÖ es
  74. 74. 74 Capítulo 4. Retroceso, corte y negación ÓØ ×ÙÔ Ö ÓÖ ¾´Ä¸Æµ ¹ · ´Ñ Ñ Ö´ ¸Äµ¸ Ƶº Mediante el siguiente ejemplo se compara la eficiencia de las dos definiciones ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¸ ĵ¸ Ø Ñ ´ ÓØ ×ÙÔ Ö ÓÖ ½´ ĸ½¼¼¼¼µµº ± ¾¼¸¼¼½ Ò Ö Ò ×¸ ¼º¼¼ ÈÍ Ò ¼º¼½ × ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¸ ĵ¸ Ø Ñ ´ ÓØ ×ÙÔ Ö ÓÖ ¾´ ĸ½¼¼¼¼µµº ± ¿¼¸¼¼¾ Ò Ö Ò ×¸ ¼º¼½ ÈÍ Ò ¼º¼½ × ÓÒ × ´ ¿± È͸ ¿¼¼¼¾¼¼ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¼¸ ĵ¸ Ø Ñ ´ ÓØ ×ÙÔ Ö ÓÖ ½´ ĸ½¼¼¼¼¼µµº ± ¾¼¼¸¼¼½ Ò Ö Ò ×¸ ¼º¼ ÈÍ Ò ¼º¼ × ÓÒ × ´ ± È͸ ¾ ½ Ä Ô×µ ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¼¸ ĵ¸ Ø Ñ ´ ÓØ ×ÙÔ Ö ÓÖ ¾´ ĸ½¼¼¼¼¼µµº ± ¿¼¼¸¼¼¾ Ò Ö Ò ×¸ ¼º¼ ÈÍ Ò ¼º¼ × ÓÒ × ´½¼ ± È͸ ¿ ¼¼¾ Ä Ô×µ 4.26. Dientes de sierra Ejercicio 4.28 Definir la relación ÒØ ´·Ä¸¹Ä½¸¹ ¸¹Ä¾µ que se verifique si Ä se compone de una lista Ľ de números estrictamente creciente hasta un cierto número que llamaremos cima, de la cima y de una lista ľ de números estrictamente decreciente. Las listas tiene Ľ y ľ tienen que ser no vacías y la cima es el mayor elemento de Ä. Por ejemplo, ¹ ÒØ ´ ½¸¾¸ ¸ ¸¿¸½℄¸Ä½¸ ¸Ä¾µº Ľ ½¸ ¾℄ ľ ¸ ¿¸ ½℄ ÆÓ ¹ ÒØ ´ ½¸¾¸ ℄¸Ä½¸ ¸Ä¾µº ÆÓ Las listas que poseen esta forma de descomposición se llaman dientes. Solución: La definición de ÒØ es ÒØ ´Ä¸ ½ Ľ℄¸ ¸ ¾ ľ℄µ ¹ ÔÔ Ò ´ ½ Ľ℄¸ ¸ ¾ ľ℄¸Äµ¸ Ö ÒØ ´ ½ Ľ℄µ¸ Ð ×Ø´ ½ Ľ℄¸ µ¸ ¸ Ö ÒØ ´ ¸ ¾ ľ℄µº La relación Ö ÒØ ´·Äµ se verifica si la lista de números Ä es estrictamente creciente.
  75. 75. 4.26. Dientes de sierra 75 Ö ÒØ ´ ℄µº Ö ÒØ ´ ¸ Ä℄µ ¹ ¸ Ö ÒØ ´ Ä℄µº La relación Ö ÒØ ´·Äµ se verifica si la lista de números Ä es estrictamente decre- ciente. Ö ÒØ ´ ℄µº Ö ÒØ ´ ¸ Ä℄µ ¹ ¸ Ö ÒØ ´ Ä℄µº Ejercicio 4.29 Una sierra es una lista numérica compuesta por la yuxtaposición de dientes. Nótese 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. Definir la relación ÒØ × × ÖÖ ´·Ä½¸ ľµ que se verifique si Ľ es una sierra y ľ es la lista de los dientes de Ľ. Por ejemplo, ¹ ÒØ × × ÖÖ ´ ½¸¾¸½¸¿¸½℄¸Äµº Ä ½¸ ¾¸ ½℄¸ ½¸ ¿¸ ½℄℄ ÆÓ ¹ ÒØ × × ÖÖ ´ ½¸¾¸½¸½¸¿¸½℄¸Äµº ÆÓ Solución: La definición de ÒØ × × ÖÖ es ÒØ × × ÖÖ ´Ä¸ Ä℄µ ¹ ÒØ ´Ä¸ ¸ ¸ µ¸ º ÒØ × × ÖÖ ´Ä¸ Ľ Ê℄µ ¹ ÔÔ Ò ´Ä½¸Ä¾¸Äµ¸ ÒØ ´Ä½¸ ¸ ¸ µ¸ Ð ×شĽ¸ µ¸ ÒØ × × ÖÖ ´ ľ℄¸Êµº El corte aumenta la eficiencia como se aprecia en el siguiente ejemplo con la definición con corte ¹ ÒÙÑÐ ×Ø´½¸½¼¼¸ Ľµ¸ ÔÔ Ò ´ Ľ¸ ½ Ľ℄¸ ľµ¸ Ø Ñ ´ ÒØ × × ÖÖ ´ ľ¸Äµµº ± ½¸ Ò Ö Ò ×¸ ¼º¿ ÈÍ Ò ¼º¿ × ÓÒ × ´ ± È͸ ½ ½ ¿¼¼ Ä Ô×µ ÆÓ
  76. 76. 76 Capítulo 4. Retroceso, corte y negación y el mismo ejemplo con la definición sin el corte ¹ ÒÙÑÐ ×Ø´½¸½¼¼¸ Ľµ¸ ÔÔ Ò ´ Ľ¸ ½ Ľ℄¸ ľµ¸ Ø Ñ ´ ÒØ × × ÖÖ ´ ľ¸Äµµº ± ¿¸½ ¸¾ ¼ Ò Ö Ò ×¸ ¼º ¾ ÈÍ Ò ¼º × ÓÒ × ´ ± È͸ ¿ ¾¼ Ä Ô×µ ÆÓ
  77. 77. Capítulo 5 Programación lógica de segundo orden 5.1. Determinación de un número por su factorial Ejercicio 5.1 Definir la relación ØÓÖ Ð ÒÚ Ö×Ó´· ¸¹Æµ que se verifique si es el facto- rial de Æ. Por ejemplo, ¹ ØÓÖ Ð ÒÚ Ö×Ó´½¾¼¸Æµº Æ ÆÓ ¹ ØÓÖ Ð ÒÚ Ö×Ó´ ¼¸Æµº ÆÓ Solución: Presentamos tres definiciones y comparamos su eficicencia. La primera definición usa un acumulador para almacenar los candidatos de la so- lución. ØÓÖ Ð ÒÚ Ö×Ó ½´ ¸Æµ ¹ ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´ ¸½¸Æµº La relación ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´· ¸· ¸¹Æµ se verifica si Æ es el menor número mayor o igual que cuyo factorial es . ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´ ¸ ¸ µ ¹ ØÓÖ Ð´ ¸ µº ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´ ¸ ¸Æµ ¹ ØÓÖ Ð´ ¸Æ½µ¸ ƽ ¸ ½ × · ½¸ ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´ ¸ ½¸Æµº 77
  78. 78. 78 Capítulo 5. Programación lógica de segundo orden La relación ØÓÖ Ð´·Æ¸¹ µ se verifica si es el factorial de Æ. ØÓÖ Ð´½¸½µº ØÓÖ Ð´Æ¸ µ ¹ Æ ½¸ ƽ × Æ¹½¸ ØÓÖ Ð´Æ½¸ ½µ¸ × ½ ¶ ƺ La segunda definición se diferencia de la anterior en que almacena en memoria los factoriales de los candidatos considerados. ØÓÖ Ð ÒÚ Ö×Ó ¾´ ¸Æµ ¹ ØÓÖ Ð ÒÚ Ö×Ó ¾ ÙÜ´ ¸½¸Æµº La relación ØÓÖ Ð ÒÚ Ö×Ó ¾ ÙÜ´· ¸· ¸¹Æµ se verifica si Æ es el menor número mayor o igual que cuyo factorial (con memoria) es . ØÓÖ Ð ÒÚ Ö×Ó ¾ ÙÜ´ ¸ ¸ µ ¹ ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´ ¸ µº ØÓÖ Ð ÒÚ Ö×Ó ¾ ÙÜ´ ¸ ¸Æµ ¹ ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´ ¸Æ½µ¸ ƽ ¸ ½ × · ½¸ ØÓÖ Ð ÒÚ Ö×Ó ¾ ÙÜ´ ¸ ½¸Æµº La relación ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´·Æ¸¹ µ se verifica si es el factorial de Æ. Además almacena en la base de datos internas los factoriales calculados. ¹ ÝÒ Ñ ØÓÖ Ð ÓÒ Ñ ÑÓÖ »¾º ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´½¸½µº ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´Æ¸ µ ¹ Æ ½¸ ƽ × Æ¹½¸ ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´Æ½¸ ½µ¸ × ½ ¶ Ƹ ×× ÖØ ´ ØÓÖ Ð ÓÒ Ñ ÑÓÖ ´Æ¸ µ ¹ µº En la tercera definición se utiliza dos acumuladores para almacenar el candidato y el factorial del candidato anterior.
  79. 79. 5.2. Árbol de resolución y definiciones equivalentes 79 ØÓÖ Ð ÒÚ Ö×Ó ¿´ ¸Æµ ¹ ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸½¸½¸Æµº La relación ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´· ¸· ¸· ¸¹Æµ se verifica si X = A ∗ (A + 1) ∗ · · · ∗ N (de forma que si A = 1 entonces X = N!). ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ¸ ¸ µ ¹ ¶ º ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ¸ ¸Æµ ¹ ½ × ¶ ¸ ½ ¸ ¸ ½ × · ½¸ ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ½¸ ½¸Æµº En los siguientes ejemplos se compara la eficiencia. ¹ ØÓÖ Ð´¾ ¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ½´ ¸ Ƶµº ± ¾ ¸ ¼½ Ò Ö Ò ×¸ ¼º¾ ÈÍ Ò ¼º¿¼ × ÓÒ × ´ ± È͸ ½¼ Ä Ô×µ ¹ ØÓÖ Ð´¾ ¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ¾´ ¸ Ƶµº ± ¿¸ Ò Ö Ò ×¸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ ¹ ØÓÖ Ð´¾ ¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ¿´ ¸ Ƶµº ± ½¸¾ Ò Ö Ò ×¸ ¼º¼¼ ÈÍ Ò ¼º¼½ × ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ ¹ ØÓÖ Ð´½¼¼¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ½´ ¸ Ƶµº ± ¿¾½¸ ¾¾ Ò Ö Ò ×¸ ¼º ÈÍ Ò ¼º × ÓÒ × ´ ± È͸ ¿ Ä Ô×µ ÊÊÇÊ ÇÙØ Ó ÐÓ Ð ×Ø ¹ ØÓÖ Ð´½¼¼¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ¾´ ¸ Ƶµº ± ½¿¸ Ò Ö Ò ×¸ ¼º¼ ÈÍ Ò ¼º¼ × ÓÒ × ´ ± È͸ ½ ½ Ä Ô×µ ¹ ØÓÖ Ð´½¼¼¼¸ µ¸ Ø Ñ ´ ØÓÖ Ð ÒÚ Ö×Ó ¿´ ¸ Ƶµº ± ¸ Ò Ö Ò ×¸ ¼º¼¿ ÈÍ Ò ¼º¼¿ × ÓÒ × ´½¼ ± È͸ ½ ¼¼ Ä Ô×µ 5.2. Árbol de resolución y definiciones equivalentes Ejercicio 5.2 Se piden los siguientes apartados:
  80. 80. 80 Capítulo 5. Programación lógica de segundo orden 1. Dibujar el árbol de resolución correspondiente al programa Ô´ ℄¸ ℄µº Ô´ ℄¸ ℄µ ¹ ¸ ¸ Ô´ ¸ µº Ô´ ℄¸ µ ¹ Ô´ ¸ µº y al objetivo ¹ Ô´ ¸½¸ ℄¸ µº 2. Explicar la relación que hay entre Ľ y ľ cuando se verifica ԴĽ¸Ä¾µ. 3. Dar una definición no recursiva del predicado ԴĽ¸Ä¾µ. Solución: 1. El árbol de resolución está en la figura 5.1 (página 81). 2. la relación ԴĽ¸Ä¾µ se verifica si ľ es la lista de los elementos de Ľ que son mayores que 4. 3. Una definición no recursiva de Ô es Ô½´Ä½¸Ä¾µ ¹ Ò Ðд ¸´Ñ Ñ Ö´ ¸Ä½µ¸ µ¸Ä¾µº 5.3. Nodos de una generación en una lista de árboles bi- narios Ejercicio 5.3 Un árbol binario es vacío o consta de tres partes: la raíz (que debe de ser un número positivo), el subárbol izquierdo (que debe ser un árbol binario) y el subárbol derecho (que debe ser un árbol binario). Usaremos la siguiente representación Ò Ð representa el árbol vacío Ø´Á¸Ê¸ µ representa el árbol de la raíz Ê, subárbol izquierdo Á y subárbol derecho . Por ejemplo, Ø´Ø´Ò Ð¸¾¸Ò е¸½¸Ø´Ø´Ò и ¸Ò е¸¿¸Ò еµ representa el árbol
  81. 81. 5.3. Nodos de una generación en una lista de árboles binarios 81 5 > 4, !, p([1,6],B1) !, p([1,6],B1) 2 {X1/5, A1/[1,6], B0/[5|B1]} 2 {X3/1, A3/[6], B1/[1|B3]} 3 {X3/1, A3/[6], B3/B1} p([6],B1)1 > 4, !, p([6],B3) 2 {X4/6, A4/[], B1/[6|B4]} 6 > 4, !, p([],B4) !, p([],B4) p([5,1,6],B0) 3 Fallo p([],B4) 1 {B4/[]} B = B0 = [5|B1] = [5,6|B4] = [5,6] Figura 5.1: Árbol de resolución
  82. 82. 82 Capítulo 5. Programación lógica de segundo orden ½ » ¾ ¿ » Definir la relación Ò Ö Ò´·Æ¸·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de nodos de la generación Æ de la lista de árboles Ľ. Por ejemplo, ¹ Ò Ö Ò´¼¸ Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Ø´Ò и ¸Ø´Ò и ¸Ò еµ℄¸Äµº Ä ¿¸ ℄ ¹ Ò Ö Ò´½¸ Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Ø´Ò и ¸Ø´Ò и ¸Ò еµ℄¸Äµº Ä ¾¸ ℄ ¹ Ò Ö Ò´¾¸ Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Ø´Ò и ¸Ø´Ò и ¸Ò еµ℄¸Äµº Ä ℄ Solución: La definición de Ò Ö Ò es Ò Ö Ò´¼¸Ä¸ µ ¹ Ò ÐÐ´Ê¸Ñ Ñ Ö´Ø´ ¸Ê¸ µ¸Äµ¸ µº Ò Ö Ò´Æ¸Ä¸ µ ¹ Æ ¼¸ Ð Ñ Ò Ö ×´Ä¸Ä½µ¸ ƽ × Æ¹½¸ Ò Ö Ò´Æ½¸Ä½¸ µº donde Ð Ñ Ò Ö ×´·Ä½¸¹Ä¾µ se verifica si ľ es la lista de los árboles obtenidos de la lista de árboles Ľ eliminando sus raices. Por ejemplo, ¹ Ð Ñ Ò Ö ×´ Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Ø´Ò и ¸Ø´Ò и ¸Ò еµ℄¸Äµº Ä Ø´Ò Ð¸ ¾¸ Ò Ðµ¸ Ò Ð¸ Ò Ð¸ Ø´Ò Ð¸ ¸ Ò Ðµ℄ La definición de Ð Ñ Ò Ö × es Ð Ñ Ò Ö ×´ ℄¸ ℄µº Ð Ñ Ò Ö ×´ Ò Ð Ä½℄¸Ä¾µ ¹ Ð Ñ Ò Ö ×´Ä½¸Ä¾µº Ð Ñ Ò Ö ×´ Ø´Á¸ ¸ µ Ľ℄¸ Á¸ ľ℄µ ¹ Ð Ñ Ò Ö ×´Ä½¸Ä¾µº
  83. 83. 5.4. Lista de elementos únicos 83 5.4. Lista de elementos únicos Ejercicio 5.4 Definir la relación Ò Ó×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de los ele- mentos que ocurren solamente una vez en la lista Ľ. Por ejemplo, ¹ Ò Ó×´ ¾¸ ¸¿¸¾℄¸Äµº Ä ¸ ¿℄ ¹ Ò Ó×´ ¾¸ ¸ ¸¾℄¸Äµº Ä ℄ Solución: La definición de Ò Ó× es Ò Ó״Ľ¸Ä¾µ ¹ Ò Ðд ¸ × Ò Ó´ ¸Ä½µ¸Ä¾µº donde la relación × Ò Ó´ ¸·Äµ se verifica si es un elemento que ocurre solamente una vez en la lista Ä. Por ejemplo, ¹ × Ò Ó´ ¸ ¾¸ ¸¿¸¾℄µº ¿ ÆÓ × Ò Ó´ ¸Äµ ¹ × Ð Ø´ ¸Ä¸Êµ¸ ÒÓØ´Ñ Ñ Ö ´ ¸Êµµº 5.5. Elementos más frecuentes de una lista Ejercicio 5.5 Definir el predicado ÔÓÔÙÐ Ö ×´Ä½¸Ä¾µ que se verifique si ľ es la lista de los elementos de Ľ que aparecen el mayor número de veces. Por ejemplo, ¹ ÔÓÔÙÐ Ö ×´ ÖÓ× ¸ Ù Ò¸ Ú ¸Ñ ÒÙ¸ÖÓ× ¸ÒÙÖ ¸ Ú ℄¸Äµº Ä Ú ¸ÖÓ× ℄ Solución: La definición de ÔÓÔÙÐ Ö × es ÔÓÔÙÐ Ö ×´Ä½¸Ä¾µ ¹ × ØÓ ´ ¸ ´´Ñ Ñ Ö´ ¸Ä½µ¸ Ù ÒØ ´ ¸Ä½¸Æ½µ¸
  84. 84. 84 Capítulo 5. Programación lógica de segundo orden ÒÓØ´´Ñ Ñ Ö´ ¸Ä½µ¸ Ù ÒØ ´ ¸Ä½¸Æ¾µ¸ ƽ ƾµµµµ¸ ľµº La relación Ù ÒØ ´· ¸·Ä¸¹Æµ se verifica si Æ es el número de veces que aparece el ele- mento en la lista Ä. Por ejemplo, ¹ Ù ÒØ ´ ¸ Ö¸ ¸ ¸Ñ¸Ö¸Ò¸ ℄¸Æµº Æ ¾ La definición de Ù ÒØ es Ù ÒØ ´ ¸ ℄¸¼µº Ù ÒØ ´ ¸ Ä℄¸Æµ ¹ ¸ ¸ Ù ÒØ ´ ¸Ä¸Åµ¸ Æ × Å·½º Ù ÒØ ´ ¸ Ä℄¸Æµ ¹ ± ¸ Ù ÒØ ´ ¸Ä¸Æµº 5.6. Problema 3n + 1 Ejercicio 5.6 Consideremos la función siguiente definida sobre los números naturales: f (x) = 3x + 1, si x es impar; x/2, si x es par se pide: 1. Definir la relación ×Ù × Ò´· ¸ ĵ que se verifique si Ä es la lista de los elementos X, f (X), f (f (X)), . . . , f n(X) tal que f n(X) = 1. Por ejemplo, ¹ ×Ù × Ò´¿¸Äµº Ä ¿¸ ½¼¸ ¸ ½ ¸ ¸ ¸ ¾¸ ½℄ Ä se llama la sucesión generada por Æ. 2. Definir la relación ÐÓÒ ØÙ ×´· ¸ ĵ que se verifica si Ä la lista de pares ¹Æ donde es un número de 1 a y Æ es la longitud de sucesión generada por . Por ejemplo,
  85. 85. 5.6. Problema 3n + 1 85 ¹ ÐÓÒ ØÙ ×´ ¸Äµº Ä ½¹½¸ ¾¹¾¸ ¿¹ ¸ ¹¿¸ ¹ ℄ 3. Definir la relación ÐÓÒ ØÙ Ñ Ü´· ¸ ȵ que se verifica si È es un par de la forma ¹Æ donde es un número entre 1 y tal que la longitud de la sucesión generada por es la más larga de las sucesiones generadas por 1,2,. . . , y Æ es la longitud de dicha sucesión. Por ejemplo, ¹ ÐÓÒ ØÙ Ñ Ü´½¼¸Äµº Ä ¹¾¼ 4. Definir Ñ ÒÓÖ ÕÙ Ò Ö Ñ ÝÓÖ´·Æ¸¹Åµ que se verifique si Å es el menor número na- tural tal que la longitud de la sucesión generada por Å es mayor que Æ. Por ejemplo, ¹ Ñ ÒÓÖ ÕÙ Ò Ö Ñ ÝÓÖ´½¼¼¸Æµº Æ ¾ Solución: La relación ´· ¸¹ µ se verifica si ´ µ. ´ ¸ µ ¹ ÑÓ ¾ ¼¸ ¸ × »¾º ´ ¸ µ ¹ ± ÑÓ ¾ » ¼¸ × ¿¶ ·½º Solución del apartado 1: La definición de ×Ù × Ò es ×Ù × Ò´½¸ ½℄µ ¹ º ×Ù × Ò´ ¸ Ä℄µ ¹ ± » ½¸ ´ ¸ µ¸ ×Ù × Ò´ ¸Äµº Solución del apartado 2: Presentamos dos definiciones de ÐÓÒ ØÙ ×. La primera definición de ÐÓÒ ØÙ × es recursiva. ÐÓÒ ØÙ ×´ ¸Äµ ¹ ÐÓÒ ØÙ × ÙÜ´ ¸Ä½µ¸ Ö Ú Ö× ´Ä½¸Äµº ÐÓÒ ØÙ × ÙÜ´½¸ ½¹Æ℄µ ¹ ¸ ×Ù × Ò´½¸Äµ¸

×