; PROLOG
Documents
Resources
Learning Center
Upload
Plans & pricing Sign in
Sign Out
Your Federal Quarterly Tax Payments are due April 15th Get Help Now >>

PROLOG

VIEWS: 340 PAGES: 107

  • pg 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 7 de noviembre de 2006)
2


Esta obra está bajo una licencia Reconocimiento–NoComercial–CompartirIgual 2.5 Spain de Crea-
tive 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.
Í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 . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13
   1.7. Palíndromo . . . . . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
   1.8. Último elemento . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
   1.9. Penúltimo elemento . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
   1.10. Selección de un elemento . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   15
   1.11. Inserción de un elemento en una lista          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
   1.12. Sublista . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   16
   1.13. Permutación . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
   1.14. Lista con todos sus elementos iguales          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
   1.15. Paridad de la longitud de una lista . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
   1.16. Rotación de un elemento . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
   1.17. Subconjunto . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18

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 . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24
   2.10. Suma parcial de una lista . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
   2.11. Lista de Æ veces el número Æ . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   25
   2.12. Generación de lista de números . . . . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
   2.13. Intervalo entero . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   26
   2.14. K–ésimo elemento . . . . . . . . . . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27

                                                        3
4                                                                                                                                     Índice general


    2.15. Multiplicación de las ocurrencias de los elementos de una lista . . . . . . . . . . . .                                                             27

3. Estructuras                                                                                                                                                29
   3.1. Segmentos como objetos estructurados          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
   3.2. Base de datos familiar . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31
   3.3. Autómata no–determinista . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   36
   3.4. El problema del mono y el plátano . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   40
   3.5. Movimientos del caballo del ajedrez .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
   3.6. Máximo elemento de un árbol binario           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43

4. Retroceso, corte y negación                                                                                                                                45
   4.1. Ejemplos de uso del corte . . . . . . . . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   45
   4.2. Árboles de deducción de Ñ Ñ Ö
             . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   48
   4.3. Diferencia de conjuntos . . . . . . . . . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   48
   4.4. Agregación de un elemento a un conjunto . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   .   .   .   50
   4.5. Separación de una lista de números en positivos y negativos                                       .   .   .   .   .   .   .   .   .   .   .   .   .   51
   4.6. Suma de los números pares de una lista de números . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   .   51
   4.7. Exponente de dos en la factorización de un número . . . . .                                       .   .   .   .   .   .   .   .   .   .   .   .   .   52
   4.8. Transformación de lista a conjunto . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   53
   4.9. Signos de crecimientos de sucesiones numéricas . . . . . . .                                      .   .   .   .   .   .   .   .   .   .   .   .   .   54
   4.10. Descomposición en factores primos . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   55
   4.11. Menor elemento que cumple una propiedad . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   56
   4.12. Números libres de cuadrados . . . . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   57
   4.13. Suma de los números libres de cuadrados . . . . . . . . . . .                                    .   .   .   .   .   .   .   .   .   .   .   .   .   57
   4.14. Máximo número de una lista . . . . . . . . . . . . . . . . . .                                   .   .   .   .   .   .   .   .   .   .   .   .   .   58
   4.15. Longitud de las subsucesiones comunes maximales . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   .   58
   4.16. Elementos repetidos en una lista . . . . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   59
   4.17. Subconjunto maximal . . . . . . . . . . . . . . . . . . . . . . .                                .   .   .   .   .   .   .   .   .   .   .   .   .   60
   4.18. Suma de los elementos con posiciones múltiplos de n . . . .                                      .   .   .   .   .   .   .   .   .   .   .   .   .   60
   4.19. Compresión de listas . . . . . . . . . . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   61
   4.20. Empaquetamiento de listas . . . . . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   62
   4.21. Codificación por longitud . . . . . . . . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   62
   4.22. Codificación reducida por longitud . . . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   63
   4.23. Decodificación de lista . . . . . . . . . . . . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   64
   4.24. Codificación reducida directa . . . . . . . . . . . . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   64
   4.25. Cota superior de una lista de números . . . . . . . . . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   66
   4.26. Dientes de sierra . . . . . . . . . . . . . . . . . . . . . . . . . .                            .   .   .   .   .   .   .   .   .   .   .   .   .   67

5. Programación lógica de segundo orden                                                                                                                       69
   5.1. Determinación de un número por su factorial . . . . . . .                                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   69
   5.2. Árbol de resolución y definiciones equivalentes . . . . .                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   71
   5.3. Nodos de una generación en una lista de árboles binarios                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   73
   5.4. Lista de elementos únicos . . . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   74
   5.5. Elementos más frecuentes de una lista . . . . . . . . . . .                               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   74
   5.6. Problema 3n + 1 . . . . . . . . . . . . . . . . . . . . . . . .                           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   75
   5.7. Números perfectos . . . . . . . . . . . . . . . . . . . . . .                             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   77
Índice general                                                                                                                                5


   5.8. Determinación de triángulos equiláteros . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   80
   5.9. Operación binaria aplicada a listas . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   80
   5.10. Números en un término . . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   80
   5.11. Palabra sin vocales . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   81
   5.12. Palabras maximales . . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   82
   5.13. Clausura transitiva de una relación . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   82
   5.14. Traducción de cifras a palabras . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   83
   5.15. Transformación de lista dependiente de la posición          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   84
   5.16. Aplanamiento de listas . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   85

6. Estilo y eficiencia en programación lógica                                                                                                 87
   6.1. Número de Hardy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                          87
   6.2. Subconjuntos de suma dada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                            90
   6.3. Coloreado de mapas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                           92

7. Aplicaciones de programación declarativa                                                           95
   7.1. Formación de grupos minimales de asignaturas compatibles . . . . . . . . . . . . . 95
   7.2. Simulación de una calculadora básica . . . . . . . . . . . . . . . . . . . . . . . . . . 98
   7.3. Problema de las subastas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

Bibliografía                                                                                                                                 107

Indice de definiciones                                                                                                                        107
6   Índice general
Introducción

    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.
    Estos ejercicios complementa los apuntes de introducción a la programación declarativa 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   Índice general
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                                                                    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:
      ¹    
ÓÒ×´   ¸ ¸
℄¸ ¸ ¸
℄µº
      ¹    
ÓÒ×´   ¸Ä¸ ¸ ¸
℄µº
      ¹    
ÓÒ×´   ¸Ä¸ ¸ ¸
℄µº
      ¹    
ÓÒ×´   ¸Ä¸ ¸ ¸
℄µº
         Solución: La definición de 
ÓÒ× es

ÓÒ×´ ¸Ä¸          Ä℄µº

         Las respuestas a las preguntas son
      ¹ 
ÓÒ×´ ¸      ¸
℄¸     ¸ ¸
℄µº

      ¹ 
ÓÒ×´ ¸Ä¸         ¸ ¸
℄µº
     Ä     ¸ 
℄
      ¹ 
ÓÒ×´ ¸Ä¸         ¸ ¸
℄µº
     ÆÓ
      ¹ 
ÓÒ×´ ¸Ä¸         ¸ ¸
℄µº

     Ä        ¸ 
℄
1.4. Relación de pertenencia                                                                            11


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      ¸
¸ ¸
℄?

          ¹ Ô ÖØ Ò 
 ´
¸       ¸
¸ ¸
℄µº
           ×

   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 Ñ Ñ             Ö.
12                                                                     Capítulo 1. Operaciones con listas


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

ÓÒ
´ ℄¸Ä¸Äµº

ÓÒ
´   Ľ℄¸Ä¾¸   Ä¿℄µ              ¹
   
ÓÒ
´Ä½¸Ä¾¸Ä¿µº

      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     ¸ ¸
℄?
            ¹ 
ÓÒ
´Ä½¸        ľ℄¸      ¸ ¸
℄µº
           Ľ     ℄
           ľ    
℄
              ×
            ¹ 
ÓÒ
´ ¸         ℄¸     ¸ ¸
℄µº
              ×
1.6. Lista inversa                                                                                  13


  4. ¿Es      ¸
℄ una sublista de    ¸ ¸
¸ ℄?

            ¹ 
ÓÒ
´ ¸   ¸
   ℄¸     ¸ ¸
¸ ℄µº
             ×

  5. ¿Es      ¸ ℄ una sublista de    ¸ ¸
¸ ℄?

           ¹ 
ÓÒ
´ ¸    ¸    ℄¸     ¸ ¸
¸ ℄µº
          ÆÓ

  6. ¿Cuál es el último elemento de       ¸ ¸
¸ ℄?

            ¹ 
ÓÒ
´ ¸   ℄¸   ¸ ¸
¸ ℄µº


       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ñadiendo la
inversa de Ľ a Ä¿ y se define por recursión en Ľ como sigue

 ÒÚ Ö× ¾ ÙÜ´ ℄¸Ä¾¸Ä¾µº
 ÒÚ Ö× ¾ ÙÜ´   Ľ℄¸Ä¾¸Ä¿µ ¹
    ÒÚ Ö× ¾ ÙܴĽ¸Ä¾¸   Ä¿℄µº

       Nota: La relación ÒÚ Ö× se corresponde con la relación definida Ö Ú Ö× .
14                                                                Capítulo 1. Operaciones con listas


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,

      ¹ Ô Ð Ò ÖÓÑÓ´ Ӹ׸Ó℄µº
        ×
      ¹ Ô Ð Ò ÖÓÑÓ´ Ӹ׸ ℄µº
     ÆÓ

         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 Ð ×Ø.
1.9. Penúltimo elemento                                                                             15


1.9. Penúltimo elemento
Ejercicio 1.9 Definir lar relación Ô Ò ÐØ ÑÓ´   ¸ ĵ que se verifique si   es el penúltimo elemento 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,
     ¹ × Ð 

 ÓÒ ´ ¸ ¸ ¸ ℄¸Äµº
   Ä       ¸ ℄
   Ä       ¸ ℄
   ÆÓ
     ¹ × Ð 

 ÓÒ ´
¸ ¸ ¸ ℄¸Äµº
   ÆÓ
     ¹ × Ð 

 ÓÒ ´ ¸Ä¸ ½¸¾℄µº
   Ä       ¸ ½¸ ¾℄
   Ä      ½¸ ¸ ¾℄
   Ä      ½¸ ¾¸ ℄
   ÆÓ
     ¹ × Ð 

 ÓÒ ´ ¸ ½¸¾¸¿℄¸ ½¸¿℄µº
        ¾
   ÆÓ
16                                                             Capítulo 1. Operaciones con listas


      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 in-
sertando 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,

       ¹ ×Ù   Ð ×Ø ´   ¸
℄¸   ¸ ¸
¸ ℄µº
        ×
       ¹ ×Ù   Ð ×Ø ´   ¸
℄¸   ¸ ¸
¸ ℄µº
     ÆÓ
       ¹ ×Ù   Ð ×Ø ´ ¸ ℄¸Äµº
     Ä        ¸    ℄
     Ä        ¸ ¸    ℄
     Ä        ¸ ¸ ¸     ℄
        ×

      Solución: La definición de ×Ù Ð ×Ø es

×Ù Ð ×Ø ´Ä½¸Ä¾µ ¹
    ÔÔ Ò ´ Ä¿¸Ä ¸Ä¾µ¸
    ÔÔ Ò ´Ä½¸ Ä ¸Ä µº
1.13. Permutación                                                                                         17


1.13. Permutación
Ejercicio 1.13 Definir la relación Ô ÖÑÙØ 
       Ò´·Ä½¸ ľµ que se verifique si ľ es una permutació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,

    ¹ ØÓ Ó×     Ù Ð ×´    ¸ ¸ ℄µº
      ×
    ¹ ØÓ Ó×     Ù Ð ×´    ¸ ¸ ℄µº
   ÆÓ
    ¹ ØÓ Ó×     Ù Ð ×´ ℄µº
      ×

    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,
18                                                                    Capítulo 1. Operaciones con listas


      ¹ ÐÓÒ     ØÙ   Ô Ö´    ¸ ℄µº
        ×
      ¹ ÐÓÒ     ØÙ   Ô Ö´    ¸ ¸
℄µº
     ÆÓ

         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

ÐÓÒ     ØÙ  ÑÔ Ö´ ℄µº
ÐÓÒ     ØÙ  ÑÔ Ö´  Ä℄µ            ¹
      ÐÓÒ ØÙ Ô Ö´Äµº



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 subconjunto de
Ľ. Por ejemplo,
1.17. Subconjunto                                                          19


    ¹ ×Ù 
ÓÒ ÙÒØÓ´   ¸ ¸
¸ ℄¸    ¸ ℄µº
     ×
    ¹ ×Ù 
ÓÒ ÙÒØÓ´   ¸ ¸
¸ ℄¸    ¸ ℄µº
  ÆÓ
    ¹ ×Ù 
ÓÒ ÙÒØÓ´   ¸ ¸
℄¸Äµº
  Ä       ¸ ¸ 
℄
  Ä       ¸ ℄
  Ä       ¸ 
℄
  Ä       ℄
  Ä       ¸ 
℄
  Ä       ℄
  Ä     
℄
  Ä     ℄
  ÆÓ

   Solución: La definición de ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µ, por recursión en Ľ, es

×Ù 
ÓÒ ÙÒØÓ´ ℄¸ ℄µº
×Ù 
ÓÒ ÙÒØÓ´   Ľ℄¸   ľ℄µ       ¹
   ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µº
×Ù 
ÓÒ ÙÒØÓ´   Ľ℄¸Ä¾µ ¹
   ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µº
20   Capítulo 1. Operaciones con listas
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,

    ¹    
ØÓÖ   д¿¸ µº



    Solución: La definición de       
ØÓÖ    д ¸ µ, por recursión sobre , es

                                                   21
22                                                                                 Capítulo 2. Aritmética



     
ØÓÖ  д½¸½µº
     
ØÓÖ  д ¸ µ ¹
          ½¸
       ½ × ¹½¸
        
ØÓÖ Ð´ ½¸ ½µ¸
         ×   ¶ ½º



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 pri-
meros, 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
Ñ
 ´ ¸ ¸ µº
Ñ
 ´ ¸ ¸ µ ¹
        ¸
    ½ × ¹ ¸
   Ñ
 ´ ¸ ½¸ µº
Ñ
 ´ ¸ ¸ µ ¹
        ¸
   Ñ
 ´ ¸ ¸ µº
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
Ð ×Ø   
ÓØ    ´Äµ      ¹
   Ð Ò Ø ´Ä¸Æµ¸
   Ð ×Ø    
ÓØ         ÙܴĸƵº

donde Ð ×Ø    
ÓØ      ÙÜ´·Ä¸·Æµ se verifica si todos los elementos de la lista de números Ä son
menores que Æ. Por ejemplo,
    ¹ Ð ×Ø      
ÓØ        ÙÜ´ ½¸ ¸¿℄¸ µº
      ×
    ¹ Ð ×Ø      
ÓØ        ÙÜ´ ½¸ ¸¿℄¸ µº
   ÆÓ
y está definida por
Ð ×Ø      
ÓØ     ÙÜ´ ℄¸ µº
Ð ×Ø      
ÓØ     ÙÜ´    Ä℄¸Æµ      ¹
           Ƹ
      Ð ×Ø    
ÓØ     ÙܴĸƵº
24                                                                                     Capítulo 2. Aritmética


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,
       ¹ ×ÙÑ         Ð ×Ø ´ ½¸¿¸ ℄¸ µº


      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                                                                      25


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,

     ¹ ×ÙÑ    Ô Ö
 д ½¸¾¸ ¸¿¸¾℄¸ ¸Äµº
   Ä     ½¸   ¾¸ ¾℄
   Ä     ¾¸   ¿℄
   Ä      ℄
   Ä     ¿¸   ¾℄
   ÆÓ

      Solución: Se presentan dos definiciones de ×ÙÑ Ô Ö
 Ð.
      Primera solución: Una definición, usando ×Ù 
ÓÒ ÙÒØÓ (p. 19) y ×ÙÑ         Ð ×Ø (p. 24), 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 ele-
mentos son Æ. Por ejemplo,

     ¹ Ð ×Ø ´¿¸Äµº
   Ä     ¿¸ ¿¸ ¿℄

      Solución: La definición de Ð ×Ø es
Ð ×Ø ´Æ¸Äµ ¹
   Ð ×Ø   ÙܴƸƸĵº

donde Ð ×Ø         ÙÜ´·Æ¸·Å¸¹Äµ se verifica si Ä es la lista de longitud Å cuyos elementos son Æ. Por
ejemplo,

     ¹ Ð ×Ø     ÙÜ´ ¸ ¸Äµº
   Ä      ¸    ¸ ¸ ℄
26                                                                           Capítulo 2. Aritmética


y se define por

Ð ×Ø   ÙÜ´ ¸¼¸ ℄µº
Ð ×Ø   ÙܴƸŸ Æ Ä℄µ ¹
   Å    ¼¸
   Ž × Å¹½¸
   Ð ×Ø    ÙܴƸŽ¸Äµº



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 entero tal que
ƽ ≤ ≤ ƾ. Por ejemplo,

      ¹   ÒØÖ ´¾¸ ¸ µº
          ¾
          ¿


     ÆÓ


      Solución: La definición de ÒØÖ es

 ÒØÖ ´Æ½¸Æ¾¸Æ½µ ¹
   ƽ    ƾº
 ÒØÖ ´Æ½¸Æ¾¸ µ ¹
2.14. K–ésimo elemento                                                                                  27


    ƽ   ƾ¸
    Æ¿ × Æ½·½¸
     ÒØÖ ´Æ¿¸Æ¾¸ µº

       Nota: La relación ÒØÖ se corresponde con la definida          ØÛ   Ò.


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 repitiendo à veces
el primer elemento de Ľ y Æ veces los restantes elementos. Por ejemplo,

     ¹ ÑÙÐØ ÔÐ 
       ÙÜ´ ¸ ¸
℄¸¾¸¿¸Äµº
   Ä      ¸ ¸ ¸       ¸ ¸ 
¸ 
¸ 
℄
28                                       Capítulo 2. Aritmética


Su definición es

ÑÙÐØ ÔÐ 
    ÙÜ´ ℄¸ ¸ ¸ ℄µº
ÑÙÐØ ÔÐ 
    ÙÜ´    Ľ℄¸¼¸Æ¸Ä¾µ ¹
   ÑÙÐØ ÔÐ 
     ÙܴĽ¸Æ¸Æ¸Ä¾µº
ÑÙÐØ ÔÐ 
    ÙÜ´    Ľ℄¸Ã¸Æ¸    ľ℄µ ¹
   à   ¼¸
   ý × Ã¹½¸
   ÑÙÐØ ÔÐ 
     ÙÜ´   Ľ℄¸Ã½¸Æ¸Ä¾µº
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 forma
      ÔÙÒØÓ´ ¸ µ
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?

  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

                                                   29
30                                                                        Capítulo 3. Estructuras



Ú ÖØ 
 Ð´× ´ÔÙÒØÓ´ ¸         µ¸ÔÙÒØÓ´ ¸    ½µµµº
 ÓÖ ÞÓÒØ Ð´× ´ÔÙÒØÓ´         ¸ µ¸ÔÙÒØÓ´    ½¸ µµµº


      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?

            ¹ Ú ÖØ 
 д˵¸ ÓÖ ÞÓÒØ Ð´Ëµº
          Ë    × ´ÔÙÒØÓ´      ¸      µ¸ ÔÙÒØÓ´          ¸       µµ
          ÆÓ
            ¹ Ú ÖØ 
 д µ¸ ÓÖ ÞÓÒØ Ð´ µº
             ×
3.2. Base de datos familiar                                                                                31


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.

   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.
32                                                                              Capítulo 3. Estructuras


 12. Preguntar por los nombres y apellidos de todas las personas existentes en la base de datos.

 13. Determinar todos los estudiantes nacidos antes de 1993.

 14. Definir la relación 
           Ò 
 Ñ      ÒØÓ´ ¸ µ de forma que si   es una persona, entonces   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 diarios.

 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 fami-
lias es
     Ñ Ð   ´Ô Ö×ÓÒ ´ ØÓÑ ×¸ Ö
 ¸Ô Ö Þ℄¸
                        
 ´ ¸Ñ ÝÓ¸½ ¼µ¸
                     ØÖ      Ó´ÔÖÓ ×ÓÖ¸ ¼µµ¸
            Ô Ö×ÓÒ ´ Ò ¸ÐÓÔ Þ¸ÖÙ Þ℄¸
                        
 ´½¼¸Ñ ÖÞÓ¸½ ¾µ¸
                     ØÖ      Ó´Ñ   
 ¸ ¼µµ¸
              Ô Ö×ÓÒ ´ Ù Ò¸ Ö
 ¸ÐÓÔ Þ℄¸
                          
 ´ ¸ Ò ÖÓ¸½ ¼µ¸
                         ×ØÙ    ÒØ µ¸
              Ô Ö×ÓÒ ´ Ñ Ö ¸ Ö
 ¸ÐÓÔ Þ℄¸
                          
 ´½¾¸ Ö Ð¸½ ¾µ¸
                         ×ØÙ    ÒØ µ ℄µº

     Ñ Ð   ´Ô Ö×ÓÒ ´    Ó× ¸Ô Ö Þ¸ÖÙ Þ℄¸
                          
 ´ ¸Ñ ÖÞÓ¸½ ¿µ¸
                       ØÖ      Ó´Ô ÒØÓÖ¸½¾¼µµ¸
            Ô Ö×ÓÒ ´   ÐÙ × ¸ ÐÚ Þ¸Ô Ö Þ℄¸
                          
 ´½¾¸Ñ ÝÓ¸½     µ¸
                       ØÖ      Ó´Ñ   
 ¸ ¼µµ¸
              Ô Ö×ÓÒ   ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸
                            
 ´ ¸     Ö ÖÓ¸½ ¼µ¸
                           ×ØÙ    ÒØ µ¸
              Ô Ö×ÓÒ   ´ Ñ Ö      Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸
                            
 ´½¾¸ ÙÒ Ó¸½ ¾µ¸
                           ×ØÙ    ÒØ µ¸
              Ô Ö×ÓÒ   ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸
                            
 ´½¾¸ ÙÐ Ó¸½     µ¸
                           ×ØÙ    ÒØ µ ℄µº
3.2. Base de datos familiar                                           33


      Solución del apartado 2: Las consultas, y sus respuestas son,
   ¹       Ñ Ð   ´ ¸ ¸ ℄µº
  ÆÓ
   ¹       Ñ Ð   ´ ¸ ¸   ℄µº
  ÆÓ
   ¹       Ñ Ð   ´ ¸ ¸   ¸ ℄µº
       ×
      ¹    Ñ Ð   ´ ¸ ¸   ¸ ¸ ℄µº
       ×
   ¹       Ñ Ð   ´ ¸ ¸   ¸ ¸ ¸ ℄µº
  ÆÓ
      Solución del apartado 3:
   ¹       Ñ Ð ´Ô Ö×ÓÒ ´Æȸ ¸ µ¸ ¸      ¸ ¸ ℄µº
  ÆÈ         Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄
  ÆÓ
      Solución del apartado 4:


 ×       Ó´ µ ¹
          Ñ Ð ´ ¸ ¸ µº

      Solución del apartado 5:

   ¹ 
 × Ó´ µº
      Ô Ö×ÓÒ ´ ØÓÑ       ׸   Ö
 ¸ Ô Ö Þ℄¸
                 
       ´ ¸ Ñ ÝÓ¸ ½ ¼µ¸
              ØÖ          Ó´ÔÖÓ ×ÓÖ¸ ¼µµ
      Ô Ö×ÓÒ ´ Ó×        ¸ Ô Ö Þ¸ ÖÙ Þ℄¸
                 
       ´ ¸ Ñ ÖÞÓ¸ ½ ¿µ¸
              ØÖ          Ó´Ô ÒØÓÖ¸ ½¾¼µµ
  ÆÓ

      Solución del apartado 6:


 ×        ´ µ ¹
          Ñ Ð ´ ¸ ¸ µº

      Solución del apartado 7:

   ¹ 
 ×   ´ µº
      Ô Ö×ÓÒ ´ Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄¸
                 
 ´½¼¸ Ñ ÖÞÓ¸ ½ ¾µ¸
              ØÖ    Ó´Ñ   
 ¸ ¼µµ
      Ô Ö×ÓÒ ´ ÐÙ × ¸   ÐÚ Þ¸ Ô Ö Þ℄¸
                 
 ´½¾¸ Ñ ÝÓ¸ ½   µ¸
              ØÖ    Ó´Ñ   
 ¸ ¼µµ
  ÆÓ
34                                                               Capítulo 3. Estructuras


      Solución del apartado 8:

       ¹ 
 ×   ´Ô Ö×ÓÒ ´ Ƹ ¸ ℄¸ ¸ØÖ   Ó´ ¸ µµµº
     Æ     Ò
     Æ    ÐÙ ×
     ÆÓ

      Solución del apartado 9:

      Ó´ µ ¹
        Ñ Ð ´ ¸ ¸Äµ¸
      Ñ Ñ Ö´ ¸Äµº


      Solución del apartado 10:

      ¹       Ó´ µº
          Ô   Ö×ÓÒ ´ Ù Ò¸ Ö
 ¸ÐÓÔ Þ℄¸ 
 ´ ¸ Ò ÖÓ¸½ ¼µ¸ ×ØÙ       ÒØ µ
          Ô   Ö×ÓÒ ´ Ñ Ö ¸ Ö
 ¸ÐÓÔ Þ℄¸ 
 ´½¾¸ Ö Ð¸½ ¾µ¸ ×ØÙ        ÒØ µ
          Ô   Ö×ÓÒ ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´ ¸   Ö ÖÓ¸½ ¼µ¸   ×ØÙ    ÒØ µ
          Ô   Ö×ÓÒ ´ Ñ Ö   Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´½¾¸ ÙÒ Ó¸½ ¾µ¸   ×ØÙ    ÒØ µ
          Ô   Ö×ÓÒ ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´½¾¸ ÙÐ Ó¸½    µ¸   ×ØÙ    ÒØ µ
     ÆÓ

      Solución del apartado 11:

Ô Ö×ÓÒ ´ µ ¹
   
 × Ó´ µ
   
 ×    ´ µ
       Ó´ µº


      Solución del apartado 12:

      ¹ Ô Ö×ÓÒ ´Ô Ö×ÓÒ ´ ¸ ¸ µµº
          ØÓÑ ×¸   Ö
 ¸ Ô Ö Þ℄
           Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄
           Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄
          ÐÙ × ¸   ÐÚ Þ¸ Ô Ö Þ℄
           Ù Ò¸   Ö
 ¸ ÐÓÔ Þ℄
          Ñ Ö ¸    Ö
 ¸ ÐÓÔ Þ℄
           Ù Ò Ð٠׸ Ô Ö Þ¸ Ô Ö Þ℄
          Ñ Ö    Ó× ¸ Ô Ö Þ¸ Ô Ö Þ℄
           Ó× Ñ Ö ¸ Ô Ö Þ¸ Ô Ö Þ℄
     ÆÓ

      Solución del apartado 13:
3.2. Base de datos familiar                                                     35


   ¹ Ô Ö×ÓÒ ´Ô Ö×ÓÒ ´ ¸ 
 ´ ¸ ¸         Óµ¸ ×ØÙ   ÒØ µµ¸   Ó    ½   ¿º
        Ù Ò¸   Ö
 ¸ ÐÓÔ Þ℄
     Ó  ½ ¼
       Ñ Ö ¸    Ö
 ¸ ÐÓÔ Þ℄
     Ó  ½ ¾
        Ù Ò Ð٠׸ Ô Ö Þ¸ Ô Ö Þ℄
     Ó  ½ ¼
       Ñ Ö    Ó× ¸ Ô Ö Þ¸ Ô Ö Þ℄
     Ó  ½ ¾
  ÆÓ

      Solución del apartado 14:

  
         Ò 
 Ñ   ÒØÓ´Ô Ö×ÓÒ ´ ¸ ¸ µ¸ µº

      Solución del apartado 15:

      ¹     Ó´ µ¸ 
       Ò 
 Ñ ÒØÓ´ ¸ 
 ´ ¸ ¸½ ¾µµº
          Ô Ö×ÓÒ ´ Ñ Ö    Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´½¾¸ ÙÒ Ó¸½      ¾µ¸ ×ØÙ   ÒØ µ
  ÆÓ

      Solución del apartado 16:

×Ù Ð Ó´Ô Ö×ÓÒ ´ ¸ ¸ØÖ         Ó´ ¸ µµ¸ µº
×Ù Ð Ó´Ô Ö×ÓÒ ´ ¸ ¸ ×ØÙ        ÒØ µ¸¼µº

      Solución del apartado 17:

   ¹ Ô Ö×ÓÒ ´ µ¸
         
      Ò 
 Ñ ÒØÓ´ ¸ 
 ´ ¸ ¸ Óµµ¸
         Ó   ½   ¸
       ×Ù Ð Ó´ ¸ µ¸
            ¾º
        Ô Ö×ÓÒ ´ Ó× ¸ Ô Ö Þ¸ ÖÙ Þ℄¸
                   
 ´ ¸ Ñ ÖÞÓ¸ ½ ¿µ¸
                ØÖ    Ó´Ô ÒØÓÖ¸ ½¾¼µµ
     Ó     ½ ¿
        ½¾¼
        Ô Ö×ÓÒ ´ Ò ¸ ÐÓÔ Þ¸ ÖÙ Þ℄¸
                   
 ´½¼¸ Ñ ÖÞÓ¸ ½ ¾µ¸
                ØÖ    Ó´Ñ   
 ¸ ¼µµ
     Ó     ½ ¾
         ¼
  ÆÓ

      Solución del apartado 18:
36                                                               Capítulo 3. Estructuras



ØÓØ Ð´ ℄¸¼µº
ØÓØ Ð´   Ä℄¸ µ ¹
   ×Ù Ð Ó´ ¸ ½µ¸
   ØÓØ Ð´Ä¸ ¾µ¸
       × ½ · ¾º




      Solución del apartado 19:




     ¹     Ñ Ð ´ ¸ ¸ µ¸ØÓØ Ð´ ¸     ℄¸ÌÓØ Ðµº
         Ô Ö×ÓÒ ´ ØÓÑ ×¸ Ö
 ¸Ô Ö Þ℄¸
                     
 ´ ¸Ñ ÝÓ¸½ ¼µ¸
                  ØÖ    Ó´ÔÖÓ ×ÓÖ¸ ¼µµ
         Ô Ö×ÓÒ ´ Ò ¸ÐÓÔ Þ¸ÖÙ Þ℄¸
                     
 ´½¼¸Ñ ÖÞÓ¸½ ¾µ¸
                  ØÖ    Ó´Ñ   
 ¸ ¼µµ
           Ô Ö×ÓÒ ´ Ù Ò¸ Ö
 ¸ÐÓÔ Þ℄¸ 
 ´ ¸ Ò ÖÓ¸½ ¼µ¸ ×ØÙ        ÒØ µ¸
           Ô Ö×ÓÒ ´ Ñ Ö ¸ Ö
 ¸ÐÓÔ Þ℄¸ 
 ´½¾¸ Ö Ð¸½ ¾µ¸ ×ØÙ         ÒØ µ℄
     ÌÓØ Ð    ½ ¼
         Ô Ö×ÓÒ ´ Ó× ¸Ô Ö Þ¸ÖÙ Þ℄¸
                     
 ´ ¸Ñ ÖÞÓ¸½ ¿µ¸
                  ØÖ    Ó´Ô ÒØÓÖ¸½¾¼µµ
         Ô Ö×ÓÒ ´ ÐÙ × ¸ ÐÚ Þ¸Ô Ö Þ℄¸
                     
 ´½¾¸Ñ ÝÓ¸½   µ¸
                  ØÖ    Ó´Ñ   
 ¸ ¼µµ
           Ô Ö×ÓÒ ´ Ù Ò ÐÙ ×¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´ ¸    Ö ÖÓ¸½ ¼µ¸   ×ØÙ   ÒØ µ¸
           Ô Ö×ÓÒ ´ Ñ Ö    Ó× ¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´½¾¸ ÙÒ Ó¸½ ¾µ¸   ×ØÙ   ÒØ µ
           Ô Ö×ÓÒ ´ Ó× Ñ Ö ¸Ô Ö Þ¸Ô Ö Þ℄¸ 
 ´½¾¸ ÙÐ Ó¸½     µ¸   ×ØÙ   ÒØ µ℄
     ÌÓØ Ð    ¾½¼
     ÆÓ




3.3. Autómata no–determinista

Ejercicio 3.3 Consideremos el autómata representado por
3.3. Autómata no–determinista                                                                            37

                                     a


                                                       a
                                      e1                                  e2


                           b


                                                                               b




                                      e4                                  e3
                                                           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 movi-
           miento 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 Æ.

  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.
38                                                                   Capítulo 3. Estructuras


      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:

      ¹       
 ÔØ ´ ½¸       ¸ ¸ ℄µº




     ÆÓ

      Solución del apartado 6: Presentamos dos definiciones. La primera usando 
 ÔØ
3.3. Autómata no–determinista                                                            39



 
 ÔØ   
ÓØ    ½ ´ ¸Ä¸Æµ       ¹
   Ð Ò Ø ´Ä¸Æµ¸
    
 ÔØ ´ ¸Äµº

    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 observa en el
siguiente ejemplo

   ¹ Ø Ñ ´ 
 ÔØ     
ÓØ    ½ ´ ¾¸ ĸ ¼¼¼µµº
  ± ½¼¸¼¾   Ò Ö    Ò
 ׸ ¼º¼½ ÈÍ Ò ¼º¼½ × 
ÓÒ × ´½¾ ±         È͸ ½¼¼¾ ¼¼ Ä Ô×µ
   ¹ Ø Ñ ´ 
 ÔØ     
ÓØ    ½ ´ ¾¸ ĸ ¼¼¼µµº
  ± ¾¼¸¼¿   Ò Ö    Ò
 ׸ ¼º¼¾ ÈÍ Ò ¼º¼¾ × 
ÓÒ × ´½¾ ±         È͸ ½¼¼½   ¼ Ä Ô×µ

    A partir de ahora, adoptaremos la definición 
 ÔØ    
ÓØ     ½

 
 ÔØ   
ÓØ     ½´ ¸Ä¸Åµ ¹
    
 ÔØ    
ÓØ    ½ ´ ¸Ä¸Åµº

    Solución del apartado 7:

   ¹    
 ÔØ 
ÓØ      ½´ ½¸Ä¸¿µº
  Ä       ¸ ¸ ℄
  Ä       ¸ ¸ ℄
  ÆÓ

    Solución del apartado 8: Presentamos dos definiciones. La primera usando 
 ÔØ

 
 ÔØ   
ÓØ    ¾ ´ ¸Ä¸Æµ       ¹
     ØÛ Ò´¼¸Æ¸Åµ¸
   Ð Ò Ø ´Ä¸Åµ¸
    
 ÔØ ´ ¸Äµº

y la segunda modificando 
 ÔØ
40                                                                                   Capítulo 3. Estructuras



  
 ÔØ    
ÓØ     ¾ ´ ¸ ℄¸ Ƶ ¹
       Ò Ð´ µº
  
 ÔØ    
ÓØ     ¾ ´ ¸   Ä℄¸Æµ ¹
    Æ    ¼¸
    ØÖ Ò×´ ¸ ¸ ½µ¸
    Å × Æ¹½¸
      
 ÔØ    
ÓØ    ¾ ´ ½¸Ä¸Åµº
  
 ÔØ    
ÓØ     ¾ ´ ¸Ä¸Æµ ¹
    Æ    ¼¸
    ÒÙÐÓ´ ¸ ½µ¸
      
 ÔØ    
ÓØ    ¾ ´ ½¸Ä¸Æµº

    Nota: La primera definición es más simple y eficiente que la segunda como se observa en el
siguiente ejemplo

       ¹ Ø Ñ ´ 
 ÔØ  
ÓØ    ¾ ´          ½¸ ĸ½¼¼¼¼µµº
     ±      Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ            Ò ¼º¼¼ × 
ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ
       ¹ Ø Ñ ´ 
 ÔØ  
ÓØ    ¾ ´          ½¸ ĸ½¼¼¼¼µµº
     ± ¼¸¼¾     Ò Ö Ò
 ׸ ¼º¼            ÈÍ Ò ¼º¼ × 
ÓÒ × ´½½¿± È͸ ½    ½ Ä Ô×µ

      A partir de ahora, adoptaremos la definición 
 ÔØ              
ÓØ       ¾

  
 ÔØ   
ÓØ     ¾´ ¸Ä¸Åµ ¹
     
 ÔØ    
ÓØ    ¾ ´ ¸Ä¸Åµº

      Solución del apartado 9:

      ¹   
 ÔØ  
ÓØ        ¾´ ½¸Ä¸¿µº
     Ä      ¸ ¸ ℄
     Ä      ¸ ℄
     Ä      ¸ ¸ ℄
     ÆÓ


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,

       ¹ ×ÓÐÙ
 Ò´ ×Ø Ó´ÔÙ ÖØ ¸×Ù ÐÓ¸Ú ÒØ Ò ¸× Òµ¸Äµº
     Ä     Ô × Ö´ÔÙ ÖØ ¸Ú ÒØ Ò µ¸ ÑÔÙ Ö´Ú ÒØ Ò ¸
 ÒØÖÓµ¸×Ù                        Ö¸
Ó   Ö℄
3.5. Movimientos del caballo del ajedrez                                                                    41


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 verifica si en
el ×Ø Ó´ÈŽ¸ Ž¸È˽¸ ½µ se puede aplicar la acción y como resultado de su aplicación se pasa
al ×Ø Ó´Èž¸ ž¸È˾¸ ¾µ.
ÑÓÚ Ñ     ÒØÓ´ ×Ø Ó´
 ÒØÖÓ¸× ÐÐ ¸
 ÒØÖÓ¸× Òµ¸
              
Ó Ö¸
               ×Ø Ó´
 ÒØÖÓ¸× ÐÐ ¸
 ÒØÖÓ¸
ÓÒµµº
ÑÓÚ Ñ     ÒØÓ´ ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµ¸
              ×Ù Ö¸
               ×Ø Ó´ ¸× ÐÐ ¸ ¸Íµµº
ÑÓÚ Ñ     ÒØÓ´ ×Ø Ó´ ½¸×Ù ÐÓ¸ ½¸Íµ¸
               ÑÔÙ Ö´ ½¸ ¾µ¸
               ×Ø Ó´ ¾¸×Ù ÐÓ¸ ¾¸Íµµº
ÑÓÚ Ñ     ÒØÓ´ ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµ¸
              Ô × Ö´ ¸ µ¸
               ×Ø Ó´ ¸×Ù ÐÓ¸ ¸Íµµº



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 movimiento 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,

             ¹ 
 Ñ ÒÓ´      ½¸½℄¸ ℄µº
               ¿¸¾℄
               ¾¸¿℄
            ÆÓ
42                                                                              Capítulo 3. Estructuras


     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 horizontales e
verticales.

 ÜÝ´¾¸½µº
 ÜÝ´¾¸¹½µº
 ÜÝ´¹¾¸½µº
 ÜÝ´¹¾¸¹½µº
 ÜÝ´½¸¾µº
 ÜÝ´½¸¹¾µº
 ÜÝ´¹½¸¾µº
 ÜÝ´¹½¸¹¾µº

      La relación 
ÓÖÖ 
ØÓ´· µ se verifica si       está entre 1 y 8.


ÓÖÖ 
ØÓ´ µ        ¹
   ½     ¸
         º

      Solución del apartado 2:


 Ñ ÒÓ´ ℄µº

 Ñ ÒÓ´ ½¸ ¾ Ä℄µ ¹
   × ÐØ ´ ½¸ ¾µ¸
   
 Ñ ÒÓ´ ¾ Ä℄µº

      Solución del apartado 3:

      ¹ 
 Ñ ÒÓ´ ¾¸½℄¸ ½¸ ¸         ℄¸ ¾¸    ¸ ℄℄µº
      ½     ¸ ¾℄   ¾     ¸         ℄
      ½     ¸ ¾℄   ¾     ¸         ℄
      ½     ¸ ¾℄   ¾     ¸         ℄
3.6. Máximo elemento de un árbol binario                                                                   43


    ½             ¸   ¾℄      ¾     ¸   ℄        ¿
    ½            ¿¸   ¿℄      ¾     ¸   ℄
    ½            ¿¸   ¿℄      ¾     ¸   ℄
    ½            ¿¸   ¿℄      ¾     ¸   ℄
    ½            ¿¸   ¿℄      ¾     ¸   ℄        ¿
   ÆÓ

     Solución del apartado 4:

    ¹ 
 Ñ ÒÓ´              ½¸½℄¸ ¸ ¾¸¾℄℄µº
   ÆÓ
    ¹ 
 Ñ ÒÓ´              ½¸½℄¸ ¸ ¸ ¾¸¾℄℄µº
   ÆÓ
    ¹ 
 Ñ ÒÓ´              ½¸½℄¸ ¸ ¸ ¸ ¾¸¾℄℄µº
      ×
    ¹ 
 Ñ ÒÓ´              ½¸½℄¸ ¾¸ ¿¸ ¸ ¾¸¾℄℄µº
    ¾    ¿¸ ¾℄                ¿     ¸ ¿℄         ¿¸ ℄
    ¾    ¿¸ ¾℄                ¿     ¸ ¿℄          ¸ ½℄
    ¾    ¿¸ ¾℄                ¿     ¸ ½℄          ¸ ¿℄
    ¾    ¿¸ ¾℄                ¿    ½¸ ¿℄         ¿¸ ℄
    ¾    ¿¸ ¾℄                ¿    ¾¸ ℄           ¸ ¿℄
    ¾    ¾¸ ¿℄                ¿     ¸ ¾℄         ¿¸ ℄
    ¾    ¾¸ ¿℄                ¿    ¿¸ ℄          ½¸ ℄
    ¾    ¾¸ ¿℄                ¿    ¿¸ ℄           ¸ ¿℄
    ¾    ¾¸ ¿℄                ¿    ¿¸ ½℄          ¸ ¿℄
    ¾    ¾¸ ¿℄                ¿    ½¸ ℄          ¿¸ ℄
   ÆÓ


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,
44                                             Capítulo 3. Estructuras


       ¹ Ñ Ü ÑÓ´Ò Ð¸Æµº
     Æ    ¼
       ¹ Ñ Ü ÑÓ´Ø´Ò Ð¸¾¸Ò е¸Æµº
     Æ    ¾
       ¹ Ñ Ü ÑÓ´Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Æµº
     Æ    ¿

         Solución: La definición de Ñ Ü ÑÓ es

Ñ Ü ÑÓ´Ò Ð¸¼µº
Ñ Ü ÑÓ´Ø´Á¸Ê¸ µ¸Åµ ¹
   Ñ Ü ÑÓ´Á¸ÅÁµ¸
   Ñ Ü ÑÓ´ ¸Å µ¸
   Ž × Ñ Ü´ÅÁ¸Å µ¸
   Å × Ñ Ü´Ê¸Å½µº
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
            ¹     ¾´ ¸ µº


  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.

                                                    45
46                                                                   Capítulo 4. Retroceso, corte y negación


 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 46).

                                                    f(1,Y), 2<Y


                                   {X/1, Y/0}                           {X/1, Y/4}
                                                {X/1, Y/2}

                                1<3, 2<0         3 =< 1, 1<6, 2<2           6 =< 1, 2<4
                                                      Fallo                    Fallo
                                 2<0
                                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 47).
      Solución del apartado 5: El árbol de deducción se muestra en la figura 4.3 (página 47).
      Solución del apartado 6: La definición de ¾ es

     ¾´ ¸¼µ ¹              ¿¸ º
     ¾´ ¸¾µ ¹               ¸ º
     ¾´ ¸ µº

      Solución del apartado 7: El árbol de deducción se muestra en la figura 4.4 (página 47).
      Solución del apartado 8: El árbol de deducción se muestra en la figura 4.5 (página 48).
      Solución del apartado 9: La definición de ¿ es

     ¿´ ¸¼µ ¹              ¿º
     ¿´ ¸¾µ ¹               º
     ¿´ ¸ µº
4.1. Ejemplos de uso del corte                                            47



                                              f_1(1,Y), 2<Y


                             {X/1, Y/0}



                         1<3, !, 2<0


                           !, 2<0


                            2<0

                           Fallo

                        Figura 4.2: Árbol de resolución del apartado 4



                                             f_1(7,Y)

                            {X/7, Y/0}                      {X/7, Y/4}
                                       {X/7, Y/2}

                           7<3, !          3 =< 7, 7<6, !        6 =< 7

                           Fallo
                                               7<6, !

                                               Fallo             Exito
                                                                 {Y/4}

                        Figura 4.3: Árbol de resolución del apartado 5



                                             f_1(7,Y)

                             {X/7, Y/0}                     {X/7, Y/4}
                                       {X/7, Y/2}
                            7<3, !             7<6, !

                            Fallo              Fallo              Exito
                                                                  {Y/4}

                        Figura 4.4: Árbol de resolución del apartado 7
48                                                                     Capítulo 4. Retroceso, corte y negación


                                                           f_2(1,Y), 2<Y


                                         {X/1, Y/0}



                                    1<3, !, 2<0


                                      !, 2<0


                                         2<0

                                      Fallo

                                   Figura 4.5: Árbol de resolución del apartado 8

          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 diferencia de los
conjuntos ½ y ¾. Por ejemplo,
4.3. Diferencia de conjuntos                                                                                  49


        memberchk(X,[a,b,c]), X=a.         memberchk(X,[a,b,c]), X=b.         X=b, memberchk(X,[a,b,c]).
        {X/a}                                {X/a}                                 {X/b}

          !, a=a.                             !, a=b.                             memberchk(b,[a,b,c]).



           a=a                                 a=b                                memberchk(b,[b,c]).
                                               Fallo
                                                                                    !
        Resp.: X=a


                                                                              Resp.: X=b

                                  Figura 4.6: Árbol de resolución Ñ Ñ        Ö


    ¹           Ö Ò
   ´   ¸ ℄¸    ¸
℄¸ µº
            ℄
   ÆÓ
Definir una versión con negación (         Ö Ò
       ½) y otra con corte (    Ö Ò
       ¾) y comparar la eficien-
cia de las distintas definiciones con el ejemplo
    ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´                  Ö Ò
     ½´ Ľ¸ Ľµµº
    ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´                  Ö Ò
     ¾´ Ľ¸ Ľµµº
Nota: La relación          Ö Ò
    se corresponde con la relación definida ×Ù ØÖ 
Ø.

     Solución: 1a definición (con negación):

     Ö Ò
   ½´ ℄¸ ¸ ℄µº
     Ö Ò
   ½´   Ä℄¸Ä¾¸Ä¿µ ¹
    Ñ Ñ Ö´ ¸Ä¾µ¸
        Ö Ò
   ½´Ä¸Ä¾¸Ä¿µº
     Ö Ò
   ½´   Ä℄¸Ä¾¸   Ä¿℄µ ¹
    ÒÓØ´Ñ Ñ Ö´ ¸Ä¾µµ¸
        Ö Ò
   ½´Ä¸Ä¾¸Ä¿µº

     2a definición (con corte):
     Ö Ò
   ¾´ ℄¸ ¸ ℄µº
     Ö Ò
   ¾´   Ä℄¸Ä¾¸Ä¿µ ¹
    Ñ Ñ Ö´ ¸Ä¾µ¸ ¸
        Ö Ò
   ¾´Ä¸Ä¾¸Ä¿µº
     Ö Ò
   ¾´   Ä℄¸Ä¾¸   Ä¿℄µ ¹
    ± ÒÓØ´Ñ Ñ Ö´ ¸Ä¾µµ¸
        Ö Ò
   ¾´Ä¸Ä¾¸Ä¿µº
50                                                          Capítulo 4. Retroceso, corte y negación


         3a definición (con corte y memberchk):

          Ö Ò
   ¿´   ℄¸ ¸ ℄µº
          Ö Ò
   ¿´     Ä℄¸Ä¾¸Ä¿µ ¹
         Ñ Ñ Ö
 ´     ¸Ä¾µ¸ ¸
             Ö Ò
     ¿´Ä¸Ä¾¸Ä¿µº
          Ö Ò
   ¿´     Ä℄¸Ä¾¸   Ä¿℄µ ¹
         ± ÒÓØ´Ñ Ñ    Ö
 ´ ¸Ä¾µµ¸
             Ö Ò
     ¿´Ä¸Ä¾¸Ä¿µº

         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én-
dole 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):

     Ö    Ö ¾´ ¸Ä¸Äµ ¹
       Ñ Ñ Ö´ ¸Äµ¸ º
     Ö    Ö ¾´ ¸Ä¸   Ä℄µº
4.5. Separación de una lista de números en positivos y negativos                                  51


4.5. Separación de una lista de números en positivos y negativos
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,

    ¹ ×ÙÑ       Ô Ö ×´ ¾¸¿¸ ℄¸Æµº
   Æ
     ¹ ×ÙÑ      Ô Ö ×´ ½¸¿¸ ¸ ¸ ¸½½¸¾ ℄¸Æµº
   Æ    ¿¼

Hacer una versión con negación y otra con corte.

       Solución:
       Versión 1 (con negación):
52                                                         Capítulo 4. Retroceso, corte y negación



×ÙÑ  Ô Ö × ½´ ℄¸¼µº
×ÙÑ  Ô Ö × ½´ Æ Ä℄¸ µ ¹
   Ô Ö´Æµ¸
   ×ÙÑ Ô Ö × ½´Ä¸ ½µ¸
      × ½ · ƺ
×ÙÑ Ô Ö × ½´ Æ Ä℄¸ µ ¹
   ÒÓØ´Ô Ö´ Ƶµ¸
   ×ÙÑ Ô Ö × ½´Ä¸ µº

Ô Ö´Æµ ¹
   Æ ÑÓ ¾            ¼º

      Versión 2 (con corte):
×ÙÑ  Ô Ö × ¾´ ℄¸¼µº
×ÙÑ  Ô Ö × ¾´ Æ Ä℄¸ µ ¹
   Ô Ö´Æµ¸ ¸
   ×ÙÑ Ô Ö × ¾´Ä¸ ½µ¸
      × ½ · ƺ
×ÙÑ Ô Ö × ¾´ Æ Ä℄¸ µ ¹
   ± ÒÓØ´Ô Ö´ Ƶµ¸
   ×ÙÑ Ô Ö × ¾´Ä¸ µº

      Versión 3 (con corte y acumulador):
×ÙÑ     Ô Ö × ¿´Ä¸ µ ¹
      ×ÙÑ Ô Ö × ¿ Ùܴĸ¼¸ µº

×ÙÑ  Ô Ö × ¿ ÙÜ´ ℄¸ 
¸ 
µº
×ÙÑ  Ô Ö × ¿ ÙÜ´ Æ Ä℄¸ 
¸ µ ¹
   Ô Ö´Æµ¸ ¸
    
½ × 
 · Ƹ
   ×ÙÑ Ô Ö × ¿ Ùܴĸ 
½¸ µº
×ÙÑ Ô Ö × ¿ ÙÜ´ Æ Ä℄¸ 
¸ µ ¹
   ± ÒÓØ´Ô Ö´ Ƶµ¸
   ×ÙÑ Ô Ö × ¿ Ùܴĸ 
¸ µº



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 exponente de 2 en
la descomposición de Æ como producto de factores primos. Por ejemplo,
      ¹    ÜÔÓÒ ÒØ        Ó×´ ¼¸ µº
       ¿
      ¹    ÜÔÓÒ ÒØ        Ó×´   ¸ µº
       ¼
4.8. Transformación de lista a conjunto                                                              53


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 conjunto corres-
pondiente 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 Ð ×Ø ØÓ × Ø.

    Solución: La definición de Ð ×Ø           
ÓÒ ÙÒØÓ es

Ð ×Ø     
ÓÒ ÙÒØÓ´ ℄¸ ℄µº
Ð ×Ø     
ÓÒ ÙÒØÓ´   Ä℄¸ µ ¹
   Ñ Ñ Ö´ ¸Äµ¸
   Ð ×Ø     
ÓÒ ÙÒØӴĸ µº
Ð ×Ø     
ÓÒ ÙÒØÓ´   Ä℄¸   ℄µ            ¹
     · Ñ Ñ Ö´ ¸Äµ¸
   Ð ×Ø     
ÓÒ ÙÒØӴĸ µº

La definición anterior puede simplificarse con cortes

Ð ×Ø   
ÓÒ ÙÒØÓ ½´ ℄¸ ℄µº
Ð ×Ø   
ÓÒ ÙÒØÓ ½´   Ä℄¸ µ           ¹
   Ñ Ñ Ö´ ¸Äµ¸ ¸
54                                                             Capítulo 4. Retroceso, corte y negación


   Ð ×Ø    
ÓÒ ÙÒØÓ ½´Ä¸ µº
Ð ×Ø    
ÓÒ ÙÒØÓ ½´   Ä℄¸             ℄µ   ¹
   ± · Ñ Ñ Ö´ ¸Äµ¸
   Ð ×Ø    
ÓÒ ÙÒØÓ ½´Ä¸ µº

      3a definición (con corte y memberchk):

Ð ×Ø      
ÓÒ ÙÒØÓ ¿´ ℄¸ ℄µº
Ð ×Ø      
ÓÒ ÙÒØÓ ¿´   Ä℄¸Ä¾µ ¹
   Ñ   Ñ Ö
 ´ ¸Äµ¸ ¸
   Ð   ×Ø    
ÓÒ ÙÒØÓ ¿´Ä¸Ä¾µº
Ð ×Ø      
ÓÒ ÙÒØÓ ¿´   Ä℄¸    ľ℄µ ¹
   ±   ÒÓØ´Ñ Ñ Ö´ ¸Äµµ¸
   Ð   ×Ø    
ÓÒ ÙÒØÓ ¿´Ä¸Ä¾µº

      Comparaciones:

      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø    
ÓÒ ÙÒØÓ ½´ Ľ¸ оµµº
     ± ½¸¼¼¿¸¼¼½ Ò Ö Ò
 ׸ ¼¸ ¼ ÈÍ Ò ¼¸ ½ × 
ÓÒ × ´ ± È͸ ¾ ¼ ¼¿ Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø    
ÓÒ ÙÒØÓ ¾´ Ľ¸ оµµº
     ± ¼½¸ ¼½ Ò Ö Ò
 ׸ ¼¸¾      ÈÍ Ò ¼¸¾ × 
ÓÒ × ´ ¿± È͸ ½ ¾  ¼ Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø    
ÓÒ ÙÒØÓ ¿´ Ľ¸ оµµº
     ± ¿¸¼¼½ Ò Ö Ò
 ׸ ¼¸¼     ÈÍ Ò ¼¸¼ × 
ÓÒ × ´ ¼± È͸ ¾ ½ Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¸ Ľµ¸ Ø Ñ ´Ð ×Ø ØÓ × Ø´ Ľ¸ оµµº
     ± ¿¸¼¼   Ò Ö Ò
 ׸ ¼¸¼    ÈÍ Ò ¼¸¼ × 
ÓÒ × ´ ¿± È͸ ¾ ½ Ä Ô×µ


4.9. Signos de crecimientos de sucesiones numéricas
Ejercicio 4.9 Definir la relación 
Ö 
 Ñ ÒØÓ×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista correspondien-
tes 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


Ö 
 Ñ  ÒØÓ× ½´       ℄¸ ℄µº

Ö 
 Ñ  ÒØÓ× ½´       ¸ Ľ℄¸     ¸· ľ℄µ        ¹
        ¸
   
Ö 
 Ñ ÒØÓ×       ½´  Ľ℄¸Ä¾µº

Ö 
 Ñ ÒØÓ× ½´        ¸ Ľ℄¸ ¸¹ ľ℄µ            ¹
          ¸
   
Ö 
 Ñ ÒØÓ×       ½´    Ľ℄¸Ä¾µº
4.10. Descomposición en factores primos                                                                 55


    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,
          ¹ Ñ ÒÓÖ      Ú ×ÓÖ ÔÖÓÔ Ó´¿¼¸ µº
             ¾
          ¹ Ñ ÒÓÖ      Ú ×ÓÖ ÔÖÓÔ Ó´¿¸ µº
             ¿
        
ØÓÖ Þ 
 Ò´·Æ¸¹Äµ que se verifique si Ä es la lista correspondiente a la descomposició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
   
ØÓÖ Þ 
 Ò´½¸ ℄µº
   
ØÓÖ Þ 
 ҴƸ    Ä℄µ ¹
    Æ   ½¸
    Ñ ÒÓÖ   Ú ×ÓÖ ÔÖÓÔ Ó´Æ¸ µ¸
    ƽ × Æ» ¸
      
ØÓÖ Þ 
 Ҵƽ¸Äµº
56                                                       Capítulo 4. Retroceso, corte y negación


4.11. Menor elemento que cumple una propiedad
Ejercicio 4.11 Definir la relación 
 Ð
ÙÐ ´·Æ¸·Å¸ µ que se verifique si   es el menor múltiplo de Æ tal
que la suma de sus dígitos es mayor que Å. Por ejemplo,

      ¹ 
 Ð
ÙÐ ´¿¸½¼¸ µº
         ¿
       ×
      ¹ 
 Ð
ÙÐ ´ ¸¾¼¸ µº
         ¿
       ×

      Solución: La definición de 
 Ð
ÙÐ es

 Ð
ÙÐ ´Æ¸Å¸ µ ¹
   Ñ ÐØ ÔÐӴƸ µ¸
   ×ÙÑ      ØÓ×´ ¸Æ½µ¸
   ƽ   Ÿ º

      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                                                                    57


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,
     ¹ Ð   Ö       
Ù    Ö    Ó×´¿¼µº
       ×
     ¹ Ð   Ö       
Ù    Ö    Ó×´½¾µº
    ÆÓ

      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

×ÙÑ    Ð     
Ù Ö Ó× ¾´ ℄¸¼µº
           Ö ×
×ÙÑ    Ð     
Ù Ö Ó× ¾´
           Ö ×            Ä℄¸Ëµ ¹
   Ð Ö     
Ù Ö Ó×´ µ¸ ¸
   ×ÙÑ Ð Ö ×    
Ù Ö Ó× ¾´Ä¸Ë½µ¸
   Ë × ·Ë½º
×ÙÑ Ð Ö ×    
Ù Ö Ó× ¾´    Ä℄¸Ëµ ¹
   ± ÒÓØ´Ð Ö    
Ù Ö Ó×´ µµ¸
   ×ÙÑ Ð Ö ×    
Ù Ö Ó× ¾´Ä¸Ëµº
58                                                          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 longitud 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

ÐÓÒ   ØÙ ×
Ñ´ ℄¸ ¸¼µº
ÐÓÒ   ØÙ ×
Ñ´ ¸ ℄¸¼µº
ÐÓÒ   ØÙ ×
Ñ´   Ľ℄¸   ľ℄¸Æµ ¹
     ¸ ÐÓÒ ØÙ ×
ѴĽ¸Ä¾¸Åµ¸
   Æ × Å·½º
ÐÓÒ ØÙ ×
Ñ´     Ľ℄¸   ľ℄¸Æµ ¹
   ±       ¸
   ÐÓÒ ØÙ ×
ѴĽ¸     ľ℄¸Æ½µ¸
   ÐÓÒ ØÙ ×
Ñ´     Ľ℄¸Ä¾¸Æ¾µ¸
   Æ × Ñ Ü´Æ½¸Æ¾µº
4.16. Elementos repetidos en una lista                                                                59


4.16. Elementos repetidos en una lista
Ejercicio 4.16 Definir la relación Ö Ô Ø Ó´¹ ¸·Äµ que se verifique si el elemento       está repetido (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 obtenida elimi-
nando 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,
     ¹ Ö Ô Ø Ó× ½´ ½¸¾¸ ¸¿¸ ¸½¸¿¸ ℄¸Äµº
   Ä     ½¸ ¸ ¿℄
       Solución: La primera definición de Ö Ô Ø     Ó× es
Ö Ô Ø Ó× ½´ ℄¸ ℄µº
Ö Ô Ø Ó× ½´    Ľ℄¸   ľ℄µ          ¹
   Ñ Ñ Ö
 ´ ¸Ä½µ¸
    Ð Ñ Ò ´ ¸Ä½¸Ä¿µ¸
   Ö Ô Ø Ó× ½´Ä¿¸Ä¾µº
Ö Ô Ø Ó× ½´    Ľ℄¸Ä¾µ ¹
   ÒÓØ´Ñ Ñ Ö
 ´ ¸Ä½µµ¸
   Ö Ô Ø Ó× ½´Ä½¸Ä¾µº
60                                                           Capítulo 4. Retroceso, corte y negación


con cortes se transforma en

Ö Ô Ø Ó× ¾´ ℄¸ ℄µº
Ö Ô Ø Ó× ¾´    Ľ℄¸   ľ℄µ ¹
   Ñ Ñ Ö
 ´ ¸Ä½µ¸ ¸
    Ð Ñ Ò ´ ¸Ä½¸Ä¿µ¸
   Ö Ô Ø Ó× ¾´Ä¿¸Ä¾µº
Ö Ô Ø Ó× ¾´     Ľ℄¸Ä¾µ ¹
   ± ÒÓØ´Ñ Ñ Ö
 ´ ¸Ä½µµ¸
   Ö Ô Ø Ó× ¾´Ä½¸Ä¾µº



4.17. Subconjunto maximal
Ejercicio 4.19 Definir la relación ×Ù 
ÓÒ ÙÒØÓ Ñ Ü Ñ Ð´·Ä½¸¹Ä¾µ que se verifica si ľ es un subcon-
junto 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

×Ù 
ÓÒ ÙÒØÓ Ñ Ü Ñ Ð´Ä½¸Ä¾µ          ¹
   Ð ×Ø ØÓ × Ø´Ä½¸Ä¿µ¸
   × Ð 
Ø´ ¸Ä¿¸Ä¾µº

     Nota: La relación Ð ×Ø ØÓ × Ø se corresponde con la relación Ð ×Ø            
ÓÒ ÙÒØÓ definida en
la página 53.


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
4.19. Compresión de listas                                                                            61



×ÙÑ  ÔÓ× 
 ÓÒ     ״Ƹĸ˵ ¹
    Ð Ñ ÒØÓ Ý     Ö ×ØӴƸĸ ¸Ä½µ¸           ¸
   ×ÙÑ ÔÓ× 
      ÓÒ ×´Æ¸Ä½¸Ë½µ¸
   Ë × ·Ë½º
×ÙÑ ÔÓ× 
 ÓÒ      ×´ ¸ ¸¼µº

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 obtenida susti-
tuyendo cada sucesión de un elemento de Ľ por dicho elemento. Por ejemplo,
     ¹ 
ÓÑÔÖ Ñ     ´ ¸ ¸ ¸ ¸ ¸ ¸
¸
¸ ¸ ¸ ℄¸Äµº
   Ä      ¸ ¸     ¸ 
¸ ℄
       Solución: Vamos a presentar dos definiciones. La primera definición de 
ÓÑÔÖ Ñ             es

ÓÑÔÖ Ñ      ´ ℄¸ ℄µº

ÓÑÔÖ Ñ      ´ ℄¸ ℄µº

ÓÑÔÖ Ñ      ´ ¸ Ľ℄¸Ä¾µ ¹
   
ÓÑÔÖ    Ñ   ´   Ľ℄¸Ä¾µº

ÓÑÔÖ Ñ      ´ ¸ Ľ℄¸     ľ℄µ       ¹
            ¸
      
ÓÑÔÖ Ñ   ´   Ľ℄¸Ä¾µº

En la segunda definición se usa el corte

ÓÑÔÖ Ñ    ¾´ ℄¸ ℄µº

ÓÑÔÖ Ñ    ¾´ ℄¸ ℄µº

ÓÑÔÖ Ñ    ¾´ ¸ Ľ℄¸Ä¾µ ¹
        ¸ ¸
   
ÓÑÔÖ Ñ    ¾´   Ľ℄¸Ä¾µº

ÓÑÔÖ Ñ    ¾´ ¸ Ľ℄¸     ľ℄µ            ¹
   ±       ¸
   
ÓÑÔÖ Ñ    ¾´   Ľ℄¸Ä¾µº
62                                                           Capítulo 4. Retroceso, corte y negación


4.20. Empaquetamiento de listas
Ejercicio 4.22 Definir la relación ÑÔ ÕÙ Ø      ´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista obtenida sus-
tituyendo cada sucesión de un elemento de Ľ por la lista formada por dicha sucesión. Por ejemplo,

      ¹    ÑÔ ÕÙ Ø  ´ ¸ ¸ ¸ ¸ ¸ ¸
¸
¸ ¸ ¸ ℄¸Äµº
     Ä        ℄¸   ¸ ℄¸  ¸ ¸ ℄¸ 
¸ 
℄¸      ¸ ¸             ℄℄

         Solución: La definición de ÑÔ ÕÙ Ø       es

 ÑÔ ÕÙ Ø        ´ ℄¸ ℄µº
 ÑÔ ÕÙ Ø        ´   Ľ℄¸ ľ Ä¿℄µ ¹
    ÑÔ ÕÙ      Ø     ÙÜ´ ¸Ä½¸Ä ¸Ä¾µ¸
    ÑÔ ÕÙ      Ø   ´Ä ¸Ä¿µº

     La relación ÑÔ ÕÙ Ø         ÙÜ´ ¸Ä½¸Ä ¸Ä¾µ se verifica si Ä es la lista obtenida eliminando 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 codificació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,

       ¹ 
Ó    
   ´ ¸ ¸ ¸ ¸ ¸ ¸
¸
¸ ¸ ¸ ℄¸Äµº
     Ä     ½¹ ¸ ¾¹ ¸ ¿¹ ¸ ¾¹
¸ ¿¹ ℄
4.22. Codificación reducida por longitud                                                                   63


(Indicación: Usar la relación ÑÔ ÕÙ Ø         (4.20)).

         Solución: La definición de 
Ó         
      es


Ó      
   ´Ä½¸Ä¾µ ¹
      ÑÔ ÕÙ Ø   ´Ä½¸Äµ¸
     
Ó    
     Ùܴĸľµº

    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 codifica-
ció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 transfor-
mando los elementos de Ľ de la forma ½¹ por y dejando los restantes elementos de la misma
forma (se supone que Ľ es una lista de la forma ƽ¹ ½¸ººº¸Æѹ Ñ℄). Por ejemplo,

      ¹ 
Ó        
    Ö Ù
      ÙÜ´ ½¹ ¸¾¹ ¸¿¹ ¸½¹
¸¿¹ ℄¸Äµº
     Ä         ¸ ¾¹ ¸ ¿¹ ¸ 
¸ ¿¹ ℄

La definición de 
Ó           
     Ö   Ù
         ÙÜ es
64                                                                             Capítulo 4. Retroceso, corte y negación




Ó            
           Ö   Ù
   ÙÜ´ ℄¸ ℄µº

Ó            
           Ö   Ù
   ÙÜ´ ½¹ Ľ℄¸   ľ℄µ ¹
      
Ó              
       Ö Ù
    ÙܴĽ¸Ä¾µº

Ó            
           Ö   Ù
   ÙÜ´ ƹ Ľ℄¸ ƹ ľ℄µ ¹
      Æ           ½¸
      
Ó            
         Ö     Ù
     ÙܴĽ¸Ä¾µº

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
     
Ó           
        ´ ℄¸ ℄µº
     
Ó           
        ´ ½¹ Ľ℄¸        ľ℄µ        ¹
          ¸
           
Ó    
   ´Ä½¸Ä¾µº
     
Ó      
    ´ ƹ Ľ℄¸    ľ℄µ ¹
      ± Æ      ½¸
        ¸
      ƽ × Æ ¹ ½¸
          
Ó     
   ´ ƽ¹ Ľ℄¸Ä¾µº
     
Ó      
    ´   Ľ℄¸   ľ℄µ ¹
      ±      × Ø Ñ 
Ó
          
Ó     
   ´Ä½¸Ä¾µº



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
4.24. Codificación reducida directa                                                                    65


ƹ 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 apa-
rece 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:


Ù ÒØ        Ý Ö ×ØÓ ½´ ¸    Ľ℄¸Æ¸Ä¾µ    ¹
     ¸
   
Ù      ÒØ Ý Ö ×ØÓ ½´ ¸Ä½¸Å¸Ä¾µ¸
   Æ       × Å·½º

Ù ÒØ       Ý Ö ×ØÓ ½´ ¸Ä¸¼¸Äµº

    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
66                                                           Capítulo 4. Retroceso, corte y negación



Ø ÖÑ ÒÓ´½¸ ¸ µº
Ø ÖÑ ÒӴƸ ¸Æ¹ µ       ¹
   Æ   ½º

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


ÓØ     ×ÙÔ Ö ÓÖ ¾´Ä¸Æµ     ¹
       · ´Ñ Ñ Ö´ ¸Äµ¸           Ƶº

      Mediante el siguiente ejemplo se compara la eficiencia de las dos definiciones

      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¸ ĵ¸ Ø Ñ ´
ÓØ ×ÙÔ Ö ÓÖ ½´ ĸ½¼¼¼¼µµº
     ± ¾¼¸¼¼½ Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼½ × 
ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¸ ĵ¸ Ø Ñ ´
ÓØ ×ÙÔ Ö ÓÖ ¾´ ĸ½¼¼¼¼µµº
     ± ¿¼¸¼¼¾ Ò Ö Ò
 ׸ ¼º¼½ ÈÍ Ò ¼º¼½ × 
ÓÒ × ´ ¿± È͸ ¿¼¼¼¾¼¼ Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¼¸ ĵ¸ Ø Ñ ´
ÓØ ×ÙÔ Ö ÓÖ ½´ ĸ½¼¼¼¼¼µµº
     ± ¾¼¼¸¼¼½ Ò Ö Ò
 ׸ ¼º¼     ÈÍ Ò ¼º¼ × 
ÓÒ × ´ ± È͸ ¾    ½  Ä Ô×µ
      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¼¼¼¸ ĵ¸ Ø Ñ ´
ÓØ ×ÙÔ Ö ÓÖ ¾´ ĸ½¼¼¼¼¼µµº
     ± ¿¼¼¸¼¼¾ Ò Ö Ò
 ׸ ¼º¼     ÈÍ Ò ¼º¼ × 
ÓÒ × ´½¼ ± È͸ ¿ ¼¼¾ Ä Ô×µ
4.26. Dientes de sierra                                                                                  67


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.


Ö 
   ÒØ ´ ℄µº

Ö 
   ÒØ ´ ¸ Ä℄µ ¹
         ¸
    
Ö 
 ÒØ ´   Ä℄µº

La relación     
Ö 
    ÒØ ´·Äµ se verifica si la lista de números Ä es estrictamente decreciente.

   
Ö 
    ÒØ ´ ℄µº
   
Ö 
    ÒØ ´ ¸ Ä℄µ ¹
           ¸
        
Ö 
 ÒØ ´   Ä℄µº


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,
68                                                         Capítulo 4. Retroceso, corte y negación


       ¹   ÒØ ×    × ÖÖ ´ ½¸¾¸½¸¿¸½℄¸Äµº
     Ä     ½¸ ¾¸ ½℄¸ ½¸ ¿¸ ½℄℄
     ÆÓ
       ¹   ÒØ ×    ×   ÖÖ ´ ½¸¾¸½¸½¸¿¸½℄¸Äµº
     ÆÓ

      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

       ¹ ÒÙÑÐ ×Ø´½¸½¼¼¸ Ľµ¸ ÔÔ Ò ´ Ľ¸ ½ Ľ℄¸ ľµ¸ Ø Ñ ´ ÒØ ×   × ÖÖ ´ ľ¸Äµµº
     ±    ½¸     Ò Ö Ò
 ׸ ¼º¿   ÈÍ Ò ¼º¿ × 
ÓÒ × ´ ± È͸ ½ ½ ¿¼¼ Ä Ô×µ
     ÆÓ

y el mismo ejemplo con la definición sin el corte

      ¹ ÒÙÑÐ ×Ø´½¸½¼¼¸ Ľµ¸ ÔÔ Ò ´ Ľ¸ ½ Ľ℄¸ ľµ¸ Ø Ñ ´              ÒØ ×    ×   ÖÖ ´ ľ¸Äµµº
     ± ¿¸½ ¸¾ ¼ Ò Ö Ò
 ׸ ¼º ¾ ÈÍ Ò ¼º      × 
ÓÒ × ´ ±              È͸ ¿ ¾¼     Ä Ô×µ
     ÆÓ
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 factorial 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 solución.

   
ØÓÖ Ð ÒÚ Ö×Ó ½´ ¸Æµ ¹
      
ØÓÖ Ð ÒÚ Ö×Ó ½ ÙÜ´ ¸½¸Æµº

La relación 
ØÓÖ Ð ÒÚ Ö×Ó ½               ÙÜ´· ¸· ¸¹Æµ se verifica si Æ es el menor número mayor o
igual que cuyo factorial es .

   
ØÓÖ Ð       ÒÚ   Ö×Ó ½ ÙÜ´ ¸ ¸ µ       ¹
       
ØÓÖ     д   ¸ µº
   
ØÓÖ Ð       ÒÚ   Ö×Ó ½ ÙÜ´ ¸ ¸Æµ       ¹
       
ØÓÖ     д   ¸Æ½µ¸
    ƽ      ¸
     ½ ×        · ½¸
       
ØÓÖ     Ð ÒÚ Ö×Ó ½       ÙÜ´ ¸ ½¸Æµº

La relación     
ØÓÖ      д·Æ¸¹ µ se verifica si es el factorial de Æ.

   
ØÓÖ Ð´½¸½µº
   
ØÓÖ Ð´Æ¸ µ ¹
    Æ   ½¸
    ƽ × Æ¹½¸

                                                      69
70                                            Capítulo 5. Programación lógica de segundo orden


        
ØÓÖ Ð´Æ½¸ ½µ¸
         × ½ ¶ ƺ

     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.
     
ØÓÖ Ð ÒÚ Ö×Ó ¿´ ¸Æµ ¹
        
ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸½¸½¸Æµº

La relación 
ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´· ¸· ¸· ¸¹Æµ se verifica si X = A ∗ ( A + 1) ∗ · · · ∗ N (de
forma que si A = 1 entonces X = N!).
     
ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ¸ ¸ µ ¹
       ¶       º
     
ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ¸ ¸Æµ ¹
       ½ × ¶ ¸
       ½     ¸ ¸
       ½ ×    · ½¸
         
ØÓÖ Ð ÒÚ Ö×Ó ÙÜ ¿´ ¸ ½¸ ½¸Æµº
5.2. Árbol de resolución y definiciones equivalentes                                            71


       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:
  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 72).

   2. la relación ԴĽ¸Ä¾µ se verifica si ľ es la lista de los elementos de Ľ que son mayores que
      4.
72                              Capítulo 5. Programación lógica de segundo orden




                            p([5,1,6],B0)

            2 {X1/5,                           3
               A1/[1,6],
               B0/[5|B1]}

                       5 > 4, !,
                       p([1,6],B1)


                       !,
                       p([1,6],B1)
     2 {X3/1,                                      3 {X3/1,
        A3/[6],                                       A3/[6],
        B1/[1|B3]}                                    B3/B1}
             1 > 4, !,                      p([6],B1)
             p([6],B3)
                          2 {X4/6,
               Fallo
                             A4/[],
                             B1/[6|B4]}
                                    6 > 4, !,
                                    p([],B4)


                                     !,
                                     p([],B4)


                                      p([],B4)
                                                1 {B4/[]}


                                 B = B0 = [5|B1] = [5,6|B4] = [5,6]

                     Figura 5.1: Árbol de resolución
5.3. Nodos de una generación en una lista de árboles binarios                                              73


   3. Una definición no recursiva de Ô es

           Ô½´Ä½¸Ä¾µ ¹
                Ò Ðд ¸´Ñ Ñ         Ö´ ¸Ä½µ¸     µ¸Ä¾µº



5.3. Nodos de una generación en una lista de árboles binarios
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

               ½
           »
       ¾            ¿
                   »


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,

    ¹          Ð Ñ Ò Ö 
 ×´ Ø´Ø´Ò Ð¸¾¸Ò е¸¿¸Ò е¸Ø´Ò и ¸Ø´Ò и ¸Ò еµ℄¸Äµº
   Ä            Ø´Ò Ð¸ ¾¸ Ò Ðµ¸ Ò Ð¸ Ò Ð¸ Ø´Ò Ð¸ ¸ Ò Ðµ℄
74                                              Capítulo 5. Programación lógica de segundo orden


La definición de Ð Ñ Ò        Ö   
 × es

 Ð Ñ Ò         Ö 
 ×´ ℄¸ ℄µº
 Ð Ñ Ò         Ö 
 ×´ Ò Ð Ä½℄¸Ä¾µ ¹
    Ð Ñ        Ò Ö 
 ״Ľ¸Ä¾µº
 Ð Ñ Ò         Ö 
 ×´ Ø´Á¸ ¸ µ Ľ℄¸ Á¸       ľ℄µ ¹
    Ð Ñ        Ò Ö 
 ״Ľ¸Ä¾µº



5.4. Lista de elementos únicos
Ejercicio 5.4 Definir la relación Ò 
Ó×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de los elementos 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
5.6. Problema 3n + 1                                                                             75



ÔÓÔÙÐ Ö ×´Ä½¸Ä¾µ ¹
   × ØÓ ´ ¸
         ´´Ñ Ñ Ö´ ¸Ä½µ¸
            
Ù ÒØ ´ ¸Ä½¸Æ½µ¸
            ÒÓØ´´Ñ Ñ Ö´ ¸Ä½µ¸
                 
Ù ÒØ ´ ¸Ä½¸Æ¾µ¸
                 ƽ   ƾµµµµ¸
         ľµº

La relación 
Ù ÒØ ´· ¸·Ä¸¹Æµ se verifica si Æ es el número de veces que aparece el elemento       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:

                                            3x + 1,    si x es impar;
                                  f (x) =
                                            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,

             ¹ ÐÓÒ ØÙ ×´ ¸Äµº
           Ä     ½¹½¸ ¾¹¾¸ ¿¹ ¸    ¹¿¸   ¹ ℄
76                                              Capítulo 5. Programación lógica de segundo orden


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

ÐÓÒ   ØÙ ×´ ¸Äµ ¹
   ÐÓÒ ØÙ × ÙÜ´ ¸Ä½µ¸
   Ö Ú Ö× ´Ä½¸Äµº
ÐÓÒ ØÙ × ÙÜ´½¸ ½¹Æ℄µ ¹
     ¸
   ×Ù
 × Ò´½¸Äµ¸
   Ð Ò Ø ´Ä¸Æµº
ÐÓÒ ØÙ × ÙÜ´ ¸ ¹Æ Ä℄µ ¹
   ±     ½¸
   ×Ù
 × Ò´ ¸Ä½µ¸
   Ð Ò Ø ´Ä½¸Æµ¸
       × ¹½¸
   ÐÓÒ ØÙ × ÙÜ´ ¸Äµº

      La segunda definición de ÐÓÒ       ØÙ   ×, usando    Ò     ÐÐ, es
5.7. Números perfectos                                                                           77



ÐÓÒ       ØÙ × ¾´ ¸Äµ ¹
          Ò Ðд ¹Æ¸´ ØÛ Ò´½¸ ¸ µ¸×Ù
 ×        Ò´ ¸Ëµ¸Ð Ò Ø ´Ë¸Æµµ¸Äµº

       Solución del apartado 3: La definición de ÐÓÒ   ØÙ   Ñ Ü es

ÐÓÒ     ØÙ Ñ Ü´ ¸ ¹Æµ ¹
      ÐÓÒ ØÙ ×´ ¸Äµ¸
      Ñ Ñ Ö´ ¹Æ¸Äµ¸
       · ´Ñ Ñ Ö´ ¹Å¸Äµ¸ Å          Ƶº

       Solución del apartado 4: La definición de Ñ ÒÓÖ ÕÙ      Ò Ö   Ñ ÝÓÖ es

Ñ ÒÓÖ ÕÙ    Ò Ö Ñ ÝÓִƸŵ ¹
   Ñ ÒÓÖ ÕÙ     Ò Ö Ñ ÝÓÖ ÙܴƸ½¸Åµº
Ñ ÒÓÖ ÕÙ    Ò Ö Ñ ÝÓÖ ÙܴƸŸŵ ¹
   ×Ù
 × Ò´Å¸Äµ¸
   Ð Ò Ø ´Ä¸ µ¸
       Ƹ º
Ñ ÒÓÖ ÕÙ    Ò Ö Ñ ÝÓÖ ÙܴƸ ¸Åµ ¹
      × ·½¸
   Ñ ÒÓÖ ÕÙ     Ò Ö Ñ ÝÓÖ ÙܴƸ ¸Åµº



5.7. Números perfectos
    En los ejercicio de esta sección estudiamos los números perfectos (es decir, iguales a la suma
de sus divisores propios) y conceptos relacionados.

Ejercicio 5.7 Definir la relación Ú ×ÓÖ × ÔÖÓÔ Ó×´·Æ¸¹Äµ que se verifique si Ä es la lista ordenada de
los divisores propios del número Æ. Por ejemplo,
      ¹    Ú ×ÓÖ × ÔÖÓÔ Ó×´ ¾¸Äµº
   Ä       ½¸ ¾¸ ¿¸ ¸ ¸ ½ ¸ ¾½℄

       Solución: La definición de    Ú ×ÓÖ × ÔÖÓÔ Ó× es

   Ú ×ÓÖ × ÔÖÓÔ Ó״Ƹĵ ¹
    ƽ × Æ ¹½¸
      Ò Ðд ¸´ ØÛ Ò´½¸Æ½¸ µ¸ ¼               Æ ÑÓ     µ¸Äµº

Ejercicio 5.8 Definir la relación ×ÙÑ       Ú ×ÓÖ × ÔÖÓÔ Ó×´·Æ¸¹Ëµ que se verifique si Ë es la suma de
los divisores propios del número Æ. Por ejemplo,
      ¹ ×ÙÑ     Ú ×ÓÖ × ÔÖÓÔ Ó×´ ¾¸Ëµº
   Ë
     ¹ ×ÙÑ      Ú ×ÓÖ × ÔÖÓÔ Ó×´½¸Ëµº
   Ë    ¼
78                                                     Capítulo 5. Programación lógica de segundo orden


         Solución: La definición de ×ÙÑ           Ú ×ÓÖ × ÔÖÓÔ Ó× es

×ÙÑ       Ú ×ÓÖ × ÔÖÓÔ Ó״Ƹ˵             ¹
        Ú ×ÓÖ × ÔÖÓÔ Ó״Ƹĵ¸
      ×ÙÑ Ð ×Ø ´Ä¸Ëµº

La relación ×ÙÑ        Ð ×Ø ´·Ä¸¹Æµ se verifica si Æ es la suma de los elementos de la lista Ä.

×ÙÑ     Ð ×Ø     ´ ℄¸¼µº
×ÙÑ     Ð ×Ø     ´   Ä℄¸Ëµ ¹
      ×ÙÑ Ð      ×Ø ´Ä¸Ë½µ¸
      Ë ×        · ˽º


Ejercicio 5.9 Clasificamos los números naturales en tres tipos:

          Æ es de tipo a si Æ es mayor que la suma de sus divisores propios

          Æ es de tipo b si Æ es igual que la suma de sus divisores propios

          Æ es de tipo c si Æ es menor que la suma de sus divisores propios

Definir la relación Ø ÔÓ´·Æ¸¹Ì) que se verifique si Ì es el tipo del número Æ. Por ejemplo,

      ¹ Ø ÔÓ´½¼¸Ìµº
     Ì
      ¹ Ø ÔÓ´¾ ¸Ìµº
     Ì
       ¹ Ø ÔÓ´½¾¸Ìµº
     Ì    


         Solución: La definición de Ø ÔÓ es

Ø ÔӴƸ̵ ¹
   ×ÙÑ   Ú ×ÓÖ × ÔÖÓÔ Ó״Ƹ˵¸
   Ø ÔÓ ÙܴƸ˸̵º

Ø ÔÓ        ÙܴƸ˸ µ ¹ Æ   ˸ º
Ø ÔÓ        ÙܴƸƸ µ ¹ º
Ø ÔÓ        ÙܴƸ˸
µº ± ¹ Æ   ˺


Ejercicio 5.10 Definir la relación 
Ð ×     
 ´·Æ¸¹Äµ que se verifique si Ä es la lista de tipos de los núme-
ros comprendidos entre 1 y Æ. Por ejemplo,

       ¹ 
Ð ×       
 ´¾¼¸Äµº
     Ä      ¸      ¸ ¸ ¸ ¸         ¸   ¸   ¸ ¸     ¸   ¸ 
¸ ¸      ¸   ¸      ¸   ¸ 
¸   ¸ 
℄

         Solución: La definición de 
Ð ×          
 es
5.7. Números perfectos                                                                           79




Ð ×    
 ´Æ¸Äµ    ¹
       Ò Ðд̸´    ØÛ   Ò´½¸Æ¸ µ¸Ø ÔÓ´ ¸Ìµµ¸Äµº


Ejercicio 5.11 Definir la relación ÔÖÓÑ    Ó´·Æ¸¹ ¸¹ ¸¹ µ que se verifique si , y son las cantidades
de números naturales menores o iguales que Æ de tipo a, b y c, respectivamente. Por ejemplo,

    ¹ ÔÖÓÑ     Ó´¾¼¸ ¸ ¸ µº
       ½
       ½
       ¿

    Solución: La definición de ÔÖÓÑ       Ó es

ÔÖÓÑ   ӴƸ ¸ ¸ µ ¹
   
Ð ×   
 ´Æ¸Äµ¸
   ÔÖÓÑ   Ó Ùܴĸ ¸ ¸ µº

ÔÖÓÑ   Ó     ÙÜ´ ℄¸¼¸¼¸¼µº
ÔÖÓÑ   Ó     ÙÜ´   Ä℄¸ ½¸ ¸ µ     ¹
   ÔÖÓÑ      Ó Ùܴĸ ¸ ¸ µ¸
     ½ ×     ·½º
ÔÖÓÑ   Ó     ÙÜ´   Ä℄¸ ¸ ½¸ µ     ¹
   ÔÖÓÑ      Ó Ùܴĸ ¸ ¸ µ¸
     ½ ×     ·½º
ÔÖÓÑ   Ó     ÙÜ´ 
 Ä℄¸ ¸ ¸ ½µ     ¹
   ÔÖÓÑ      Ó Ùܴĸ ¸ ¸ µ¸
     ½ ×     ·½º


Ejercicio 5.12 Definir la relación Ñ ÒÓÖ´·Æ¸¹ µ que se verifique si es el menor número tal que la can-
tidad de números naturales menores o iguales que de tipo a es Æ. Por ejemplo,

    ¹ Ñ ÒÓÖ´¾¼¸ µº
       ¾

    Solución: La definición de Ñ ÒÓÖ es

Ñ ÒÓִƸ µ ¹
   Ñ ÒÓÖ ÙܴƸƸ µº

Ñ ÒÓÖ ÙܴƸŸŵ ¹
   ÔÖÓÑ  ӴŸƸ ¸ µ¸        º
Ñ ÒÓÖ ÙܴƸŸ µ ¹
   Ž × Å·½¸
   Ñ ÒÓÖ ÙܴƸŽ¸ µº
80                                                Capítulo 5. Programación lógica de segundo orden


5.8. Determinación de triángulos equiláteros
Ejercicio 5.13 Un polígono se representa por su nombre y las longitudes de sus lados. Definir la relación
 × ÕÙ Ð Ø ÖÓ´·Èµ que se verifica si el polígono È es equilátero (es decir, que todos sus lados son iguales).
Por ejemplo,

       ¹      ×   ÕÙ Ð Ø ÖÓ´ØÖ   Ò ÙÐÓ´ ¸ ¸ µµº
          ×
       ¹      ×   ÕÙ Ð Ø ÖÓ´
Ù   Ö Ð Ø ÖÓ´¿¸ ¸ ¸¿µµº
      ÆÓ

          Solución: La definición de ×    ÕÙ Ð Ø ÖÓ es

  ×    ÕÙ Ð Ø ÖӴȵ ¹
      È ºº     Ä℄¸
      ØÓ Ó×   ٠Р״ĵº

La relación ØÓ Ó×         Ù Ð × está definida en la página 17.


5.9. Operación binaria aplicada a listas
Ejercicio 5.14 Definir la relación ÓÔ Ö 
 Ò Ð ×Ø ×´·Ç¸·Ä½¸·Ä¾¸¹Ä¿µ que se verifica si Ä¿ es la lista
obtenida aplicando la operación binaria Ç a los elementos de Ľ y ľ que ocupan la misma posición. Por
ejemplo,

        ¹ ÓÔ Ö 
 Ò Ð ×Ø ´·¸ ½¸¾¸¿℄¸        ¸ ¸ ℄¸Äµº
      Ä      ¸ ¸ ℄
        ¹ ÓÔ Ö 
 Ò Ð ×Ø ´¶¸ ½¸¾¸¿℄¸        ¸ ¸ ℄¸Äµº
      Ä      ¸ ½¼¸ ½ ℄

Nota: Se supone que Ľ y ľ tienen la misma longitud)

          Solución: La definición de ÓÔ Ö 
    Ò Ð ×Ø es

ÓÔ Ö 
     Ò      Ð ×Ø ´ ¸ ℄¸ ℄¸ ℄µº
ÓÔ Ö 
     Ò      Ð ×Ø ´Ç¸ ½ Ľ℄¸ ¾ ľ℄¸       ¿ Ä¿℄µ    ¹
         ºº       Ǹ ½¸ ¾℄¸
       ¿ ×        ¸
      ÓÔ Ö 
       Ò Ð ×Ø ´Ç¸Ä½¸Ä¾¸Ä¿µº



5.10. Números en un término
Ejercicio 5.15 Definir la relación Ò Ñ ÖÓ×´·Ì¸¹Äµ que que se verifique si Ä es el conjunto de todos los
números que ocurren en el término cerrado Ì. Por ejemplo,
5.11. Palabra sin vocales                                                                             81


      ¹ Ò Ñ ÖÓ×´ ´ ¸ ´
¸ µ¸¾µ¸Äµº
    Ä       ¸ ¾℄
      ¹ Ò Ñ ÖÓ×´ ·¿· ¶´× Ò´¾µ·¿µ¸Äµº
    Ä     ¾¸ ¿℄
      ¹ Ò Ñ ÖÓ×´ · ¸Äµº
    Ä     ℄
        Solución: La definición de Ò Ñ ÖÓ× es
Ò Ñ ÖÓ״̸ Ì℄µ ¹
   ÒÙÑ Ö´Ìµ¸ º
Ò Ñ ÖÓ״̸ĵ ¹
   ± ÒÓØ´ÒÙÑ Ö´Ìµµ¸
   Ì ºº     Ľ℄¸
   Ò Ñ ÖÓ×    Ð ×Ø ´Ä½¸Äµº

La relación Ò Ñ ÖÓ×     Ð ×Ø ´·Ä½¸¹Ä¾µ se verifica si ľ es el conjunto de números en la lista de
términos Ľ. Por ejemplo,
      ¹ Ò Ñ ÖÓ×      Ð ×Ø ´    ·¿¸   ¶´× Ò´¾µ·¿µ℄¸Äµº
    Ä     ¾¸ ¿℄
La definición de Ò Ñ ÖÓ×         Ð ×Ø es
Ò Ñ ÖÓ×    Ð ×Ø ´ ℄¸ ℄µº
Ò Ñ ÖÓ×    Ð ×Ø ´ Ì Ä½℄¸Ä¾µ          ¹
   Ò Ñ ÖÓ״̸Ŀµ¸
   Ò Ñ ÖÓ×    Ð ×Ø ´Ä½¸Ä µ¸
   ÙÒ ÓÒ´Ä¿¸Ä ¸Ä¾µº



5.11. Palabra sin vocales
Ejercicio 5.16 Definir la relación Ð Ñ Ò ÚÓ
 Ð ×´·È½¸¹È¾µ que se verifique si Ⱦ es la palabra que se
obtiene al eliminar todas las vocales de la palabra Ƚ. Por ejemplo,
     ¹     Ð Ñ Ò   ÚÓ
 Ð ×´× Ú ÐÐ ÒӸȵº
    È      ×ÚÐÐÒ
        Solución: La definición de Ð Ñ Ò     ÚÓ
 Ð × es
 Ð Ñ Ò ÚÓ
 Р״Ƚ¸È¾µ ¹
   Ò Ñ ´È½¸Ä½µ¸
   
    Ó× ÚÓ
 Р״ĵ¸
     Ò ÐдƸ´Ñ Ñ Ö´Æ¸Ä½µ¸ÒÓØ´Ñ Ñ             ִƸĵµµ¸Ä¾µ¸
   Ò Ñ ´È¾¸Ä¾µº

La relación 
       Ó× ÚÓ
 Ð ×´ ĵ se verifica si Ä es la lista de los códigos ASCII de las vocales.

      Ó× ÚÓ
 Р״ĵ      ¹
     Ò Ñ ´   Óٸĵº
82                                                Capítulo 5. Programación lógica de segundo orden


5.12. Palabras maximales
Ejercicio 5.17 Definir la relación ÐÓÒ     ØÙ ´·È¸¹Æµ que se verifique si Æ es la longitud de la palabra È.
Por ejemplo,

       ¹ ÐÓÒ    ØÙ ´ Ò ¸Æµº
     Æ    ¿

         Solución: La definición de ÐÓÒ    ØÙ es

ÐÓÒ     ØÙ ´È¸Æµ ¹
      Ò Ñ ´È¸Äµ¸
      Ð Ò Ø ´Ä¸Æµº

Ejercicio 5.18 Definir la relación Ô Ð Ö Ñ Ü Ñ Ð´·Ä¸¹Èµ que se verifique si È es una palabra maximal
(es decir, de máxima longitud) de la lista de palabras Ä. Por ejemplo,

       ¹ Ô Ð Ö     Ñ Ü Ñ Ð´   Ú ¸Ý¸ Ò ¸× ¸Ú Ò℄¸Èµº
     È     Ú
     È     Ò
     È    Ú Ò
     ÆÓ

         Solución: La definición de Ô Ð    Ö   Ñ Ü Ñ Ð es

Ô Ð     Ö Ñ Ü Ñ Ð´Ä¸Èµ ¹
      × Ð 
شȸĸʵ¸
      ÐÓÒ ØÙ ´È¸Æµ¸
      ÒÓØ´´Ñ Ñ Ö´È½¸Êµ¸ ÐÓÒ         ØÙ ´È½¸Æ½µ¸ Æ        ƽµµº

Ejercicio 5.19 Definir la relación Ô Ð Ö × Ñ Ü Ñ Ð ×´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de las
palabras maximales de la lista de palabras Ľ. Por ejemplo,

      ¹ Ô Ð Ö × Ñ Ü Ñ Ð ×´        Ú ¸Ý¸ Ò ¸× ¸Ú Ò℄¸Äµº
     Ä     Ú ¸ Ò ¸ Ú Ò℄

         Solución: La definición de Ô Ð    Ö × Ñ Ü Ñ Ð × es

Ô Ð       Ö × Ñ Ü Ñ Ð ×´Ä½¸Ä¾µ ¹
          Ò ÐÐ´È¸Ô Ð Ö Ñ Ü Ñ Ð´Ä½¸Èµ¸Ä¾µº



5.13. Clausura transitiva de una relación
Ejercicio 5.20 La clausura transitiva de una relación binaria R es la menor relación transitiva que contiene
a R; por ejemplo, la clausura transitiva de {(a, b), (b, c)} es {(a, b), (b, c), (a, c)}. Definir el predicado

Ð Ù×ÙÖ ØÖ Ò× Ø Ú ´Ê¸ ¸ µ que se verifique si ´ ¸ µ está en la clausura transitiva de la relación Ê.
Por ejemplo, suponiendo que se han definido las relaciones Ô y Õ por
5.14. Traducción de cifras a palabras                                                               83



Ô´ ¸ µº
Ô´ ¸
µº
Õ´
¸ µº
Õ´ ¸ µº

se tiene
      ¹ 
Ð Ù×ÙÖ    ØÖ Ò× Ø Ú ´Ô¸ ¸ µº

                   

                   

   ÆÓ
    ¹ 
Ð Ù×ÙÖ      ØÖ Ò× Ø Ú ´Õ¸ ¸ µº
       


           

   ÆÓ
      Solución: La definición de 
Ð Ù×ÙÖ       ØÖ Ò× Ø Ú es

Ð Ù×ÙÖ ØÖ Ò× Ø Ú ´Ê¸ ¸ µ ¹
    ÔÔÐݴʸ ¸ ℄µº

Ð Ù×ÙÖ ØÖ Ò× Ø Ú ´Ê¸ ¸ µ ¹
    ÔÔÐݴʸ ¸ ℄µ¸
   
Ð Ù×ÙÖ ØÖ Ò× Ø Ú ´Ê¸ ¸ µº



5.14. Traducción de cifras a palabras
Ejercicio 5.21 Definir la relación ØÖ Ù

 Ò´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista de palabras
correspondientes a los dígitos de la lista Ľ. Por ejemplo,
     ¹ ØÖ Ù

 Ò´ ½¸¿℄¸Äµº
   Ä     ÙÒÓ¸ ØÖ ×℄
(Indicación: Usar la relación auxiliar ÒÓÑ Ö ´ ¸Æµ que se verifica si Æ es el nombre del dígito ).
      Solución: La definición de la relación auxiliar ÒÓÑ Ö es
ÒÓÑ   Ö    ´¼¸
 ÖÓµº
ÒÓÑ   Ö    ´½¸ÙÒÓµº
ÒÓÑ   Ö    ´¾¸ Ó×µº
ÒÓÑ   Ö    ´¿¸ØÖ ×µº
ÒÓÑ   Ö    ´ ¸
Ù ØÖÓµº
ÒÓÑ   Ö    ´ ¸
 Ò

ÒÓÑ   Ö    ´ ¸× ×µº
ÒÓÑ   Ö    ´ ¸× Ø µº
ÒÓÑ   Ö    ´ ¸Ó
 
ÒÓÑ   Ö    ´ ¸ÒÙ Ú µº
84                                               Capítulo 5. Programación lógica de segundo orden


         Se presentan tres definiciones de ØÖ Ù

 Ò.
         Primera solución: Una definición de ØÖ Ù

 ҴĽ¸Ä¾µ, por recursión en Ľ, es

ØÖ     Ù

 Ò ½´ ℄¸ ℄µº
ØÖ     Ù

 Ò ½´    Ľ℄¸ Æ Ä¾℄µ       ¹
      ÒÓÑ Ö ´ ¸Æµ¸
      ØÖ Ù

 Ò ½´Ä½¸Ä¾µº

         Segunda solución: Una definición de ØÖ     Ù

     Ò usando   Ò   ÐÐ es
ØÖ       Ù

 Ò ¾´Ä½¸Ä¾µ ¹
          Ò ÐдƸ´Ñ Ñ Ö´ ¸Ä½µ¸ÒÓÑ Ö ´ ¸Æµµ¸Ä¾µº

         Tercera solución: Una definición de ØÖ    Ù

     Ò usando Ñ ÔÐ ×Ø es
ØÖ     Ù

 Ò ¿´Ä½¸Ä¾µ ¹
      Ñ ÔÐ ×Ø´ÒÓÑ Ö ¸Ä½¸Ä¾µº



5.15. Transformación de lista dependiente de la posición
Ejercicio 5.22 Definir la relación ØÖ Ò× ÓÖÑ ´·Ä½¸¹Ä¾µ que se verifique si ľ es la lista obtenida su-
mándole a cada elemento numérico de Ľ su posición en la lista. Por ejemplo,
       ¹ ØÖ Ò× ÓÖÑ ´    ½¸½¸½¸ ¸ ¸
¸½¸½¸½℄¸Äµº
     Ä     ¾¸ ¿¸ ¸      ¸ ¸ 
¸ ¸ ¸ ½¼℄
       ¹ ØÖ Ò× ÓÖÑ ´    ½¸¾¸ ¸ ¸¾¸ ¸¿¸½℄¸Äµº
     Ä     ¾¸ ¸ ¸       ¸ ¸ ¸ ½¼¸ ℄
Dar dos definiciones, una recursiva y otra no–recursiva.

         Solución: La definición de recursiva de ØÖ Ò× ÓÖÑ es
ØÖ Ò× ÓÖÑ ´Ä½¸Ä¾µ ¹
   ØÖ Ò× ÓÖÑ   ÙܴĽ¸½¸Ä¾µº

donde ØÖ Ò× ÓÖÑ    ÙÜ´·Ä½¸·Æ¸¹Ä¾µ se verifica si ľ es la lista obtenida añadiéndole a cada ele-
mento numérico de Ľ la suma de Æ y su posición en la lista. Por ejemplo,

ØÖ Ò× ÓÖÑ   ÙÜ´ ℄¸ ¸ ℄µº
ØÖ Ò× ÓÖÑ   ÙÜ´    Ľ℄¸Æ¸   ľ℄µ          ¹
   ÒÙÑ Ö´ µ¸ ¸
      × ·Æ¸
   ƽ × Æ·½¸
   ØÖ Ò× ÓÖÑ    ÙܴĽ¸Æ½¸Ä¾µº
ØÖ Ò× ÓÖÑ   ÙÜ´    Ľ℄¸Æ¸   ľ℄µ          ¹
   ± ÒÓØ´ÒÙÑ Ö´ µµ¸
   ƽ × Æ·½¸
   ØÖ Ò× ÓÖÑ    ÙܴĽ¸Æ½¸Ä¾µº
5.16. Aplanamiento de listas                                                                     85


       La definición no recursiva de ØÖ Ò× ÓÖÑ es
ØÖ Ò× ÓÖÑ ¾´Ä½¸Ä¾µ ¹
   Ð ×Ø     ÔÓ× 
 ÓÒ ×´Ä½¸Äµ¸
   Ñ ÔÐ ×Ø´×ÙÑ ¸Ä½¸Ä¸Ä¾µº

donde Ð ×Ø          ÔÓ× 
 ÓÒ ×´·Ä½¸¹Ä¾µ se verifica si ľ es la lista de posiciones correspondiente
a la lista Ľ. Por ejemplo,
     ¹ Ð ×Ø     ÔÓ× 
 ÓÒ ×´ ½¸½¸½¸ ¸ ¸
¸½¸½¸½℄¸Äµº
   Ä     ½¸ ¾¸ ¿¸ ¸ ¸ ¸ ¸ ¸ ℄

Ð ×Ø     ÔÓ× 
 ÓÒ ×´Ä½¸Ä¾µ ¹
   Ð Ò Ø ´Ä½¸Æµ¸
     Ò Ðд ¸ ØÛ Ò´½¸Æ¸ µ¸Ä¾µº

y ×ÙÑ ´· ¸· ¸¹ µ se verifica si es la suma de y el número , cuando es un número y es igual
a , en caso contrario. Por ejemplo,
    ¹ ×ÙÑ ´¿¸¾¸ µº

    ¹ ×ÙÑ ´ ¸¾¸ µº


×ÙÑ ´ ¸ ¸ µ ¹
   ÒÙÑ Ö´ µ¸ ¸
      × · º
×ÙÑ ´ ¸ ¸ µº



5.16. Aplanamiento de listas
Ejercicio 5.23 Definir la relación ÔÐ Ò ´·Ä½¸ ľµ que se verifique si ľ es la lista obtenida reempla-
zando, recursivamente, cada lista de Ľ por sus elementos. Por ejemplo,
    ¹    ÔÐ Ò ´ ¸ ¸ 
℄℄¸       ℄¸ ℄℄¸Äµº
   Ä       ¸ ¸ 
¸ ¸ ℄
    Solución: Para definir ÔÐ Ò ´ ¸ µ vamos a generalizar su dominio de forma que si           no es
una lista, entonces es la lista cuyo único elemento es .

 ÔÐ Ò ´ ¸ ℄µ ¹
    · × Ð ×Ø´ µº
 ÔÐ Ò ´ ℄¸ ℄µº
 ÔÐ Ò ´   Ľ℄¸Ä¾µ ¹
    ÔÐ Ò ´ ¸Ä¿µ¸
    ÔÐ Ò ´Ä½¸Ä µ¸
    ÔÔ Ò ´Ä¿¸Ä ¸Ä¾µº
86   Capítulo 5. Programación lógica de segundo orden
Capítulo 6

Estilo y eficiencia en programación lógica

6.1. Número de Hardy
    En cierta ocasión, el matemático Ramanujan estaba en un hospital en Inglaterra y su amigo
Hardy fue a visitarlo. Hardy comentó que había llegado al hospital en un taxi de matrícula N y
esperaba que éste no fuese un mal presagio, ya que N era un número poco interesante. Ramanujan
no estuvo de acuerdo ya que inmediatamente dijo que N tiene una propiedad muy especial: N es
el menor entero positivo que puede descomponerse de dos maneras distintas como suma de dos
cubos.
    El objetivo de esta sección es averiguar la matrícula del taxi que llevó a Hardy a visitar a
Ramanujan.

Ejercicio 6.1 Definir la relación × 
Ù Ó´·Æµ que se verifique si Æ es el cubo de un entero. Por ejemplo,

    ¹    × 
Ù Ó ½´½¼¼¼µº
     ×
    ¹    × 
Ù Ó ½´½¼¼½µº
   ÆÓ

Solución: Presentaremos distintas definiciones y comentaremos su eficiencia.
    La primera solución realiza una búsqueda desde 1 hasta N.

 × 
Ù Ó ½´Æµ ¹
     ØÛ Ò´½¸Æ¸ µ¸
   Æ × ¶ ¶ º
                                                                 √
                                                                 3
    La segunda solución realiza una búsqueda desde 1 hasta           N.

 × 
Ù Ó ¾´Æµ ¹
    ÓØ   × ÖÓÙÒ ´Æ ´½»¿µµ¸
     ØÛ Ò´½¸ ÓØ ¸ µ¸
   Æ × ¶ ¶ º

    La tercera solución utiliza predicados aritméticos predefinidos.

                                                  87
88                                        Capítulo 6. Estilo y eficiencia en programación lógica



 × 
Ù Ó ¿´Æµ ¹
   Æ     ÖÓÙÒ ´Æ ¶¶ ´½»¿µµ ¶¶ ¿º

      Para comparar la eficiencia realizamos los siguientes experimentos:
      ¹ Ø Ñ ´ × 
Ù Ó ½´½¼¼¼¼¼½µµº
     ± ½¸¼¼¼¸¼¼¿ Ò Ö Ò
 ׸ ½º¾¿ ÈÍ Ò ½º¾ × 
ÓÒ × ´ ± È͸ ½¿¼½½ Ä Ô×µ
     ÆÓ
      ¹ Ø Ñ ´ × 
Ù Ó ¾´½¼¼¼¼¼½µµº
     ± ½¼¿ Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × 
ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ
     ÆÓ
      ¹ Ø Ñ ´ × 
Ù Ó ¿´½¼¼¼¼¼½µµº
     ± ¿ Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × 
ÓÒ × ´¼± È͸ ÁÒ Ò Ø Ä Ô×µ
     ÆÓ
Se observa que la más eficiente es la tercera definición. La segunda se aproxima a la segunda. La
primera es muy ineficiente. En lo que sigue adoptaremos la tercera como definicón de × 
Ù Ó.

 × 
٠ӴƵ ¹
    × 
Ù Ó ¿´Æµº

Ejercicio 6.2 Definir la relación ×
ÓÑÔÓÒ ´·Æ¸¹ ¸¹ µ que se verifique si     e   son dos cubos cuya
suma es Æ y, además, es menor o igual que . Por ejemplo,
      ¹     ×
ÓÑÔÓÒ ´½¼¼ ¸ ¸ µº

           ½¼¼¼
     ÆÓ
      Solución: Presentaremos distintas definiciones y comentaremos su eficiencia.
      La primera definición realiza una búsqueda en e .

     ×
ÓÑÔÓÒ       ½´Æ¸ ¸ µ   ¹
         ØÛ       Ò´½¸Æ¸ µ¸
         ØÛ       Ò´½¸Æ¸ µ¸
        × 
Ù      Ó´ µ¸
        × 
Ù      Ó´ µ¸
                  ¸
          Æ ×     · º

      La segunda definición realiza la búsqueda en   y determina .

     ×
ÓÑÔÓÒ ¾´Æ¸ ¸ µ         ¹
         ØÛ Ò´½¸Æ¸ µ¸
        × 
Ù Ó´ µ¸
          × Æ ¹ ¸
             ¸
        × 
Ù Ó´ µº
6.1. Número de Hardy                                                                             89


    La tercera definición realiza una búsqueda acotada.

  ×
ÓÑÔÓÒ ¿´Æ¸ ¸ µ ¹
     ÓØ   × ÖÓÙÒ ´´Æ»¾µ ´½»¿µµ¸
      ØÛ Ò´½¸ ÓØ ¸Åµ¸
       × Å¶Å¶Å¸
       × Æ¹ ¸
          ¸
     × 
Ù Ó´ µº

    Para comparar la eficiencia realizamos los siguientes experimentos:

    ¹ Ø Ñ ´ ×
ÓÑÔÓÒ ½´½ ¼ ¸ ¸       µµº
  ± ½½¸ ¿¾¸     Ò Ö Ò
 ׸ º           ÈÍ       Ò º ½ × 
ÓÒ × ´½¼¼±      È͸ ½        ¼¼¿ Ä Ô×µ
  ÆÓ
    ¹ Ø Ñ ´ ×
ÓÑÔÓÒ ¾´½ ¼ ¸ ¸       µµº
  ± ¸ ¼ Ò Ö Ò
 ׸ ¼º¼½ ÈÍ            Ò ¼º¼½ × 
ÓÒ × ´½½¾±       È͸         ¼¼¼ Ä Ô×µ
  ÆÓ
    ¹ Ø Ñ ´ ×
ÓÑÔÓÒ ¿´½ ¼ ¸ ¸       µµº
  ±      Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò        ¼º¼¼ × 
ÓÒ × ´¼±      È͸ ÁÒ      Ò Ø    Ä Ô×µ
  ÆÓ

   ¹ Ø Ñ ´    ×
ÓÑÔÓÒ ½´¾¿¿½¸ ¸ µµº
  ± ¸ ½¼¸        Ò Ö Ò
 ׸ º¿½ ÈÍ          Ò    º¿¿ × 
ÓÒ × ´½¼¼±      È͸ ½    ½¿ ¿ Ä Ô×µ
      ½¼¼¼
      ½¿¿½
    ×
   ¹ Ø Ñ ´    ×
ÓÑÔÓÒ ¾´¾¿¿½¸ ¸ µµº
  ± ¸¼ ¾     Ò Ö Ò
 ׸ ¼º¼½ ÈÍ Ò ¼º¼½ × 
ÓÒ × ´½            ±   È͸     ¼ ¾¼¼ Ä Ô×µ
      ½¼¼¼
      ½¿¿½
    ×
   ¹ Ø Ñ ´    ×
ÓÑÔÓÒ ¿´¾¿¿½¸ ¸ µµº
  ± ¿ Ò      Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × 
ÓÒ × ´¼±           È͸ ÁÒ      Ò Ø    Ä Ô×µ
      ½¼¼¼
      ½¿¿½
    ×

Se observa que la más eficiente es la tercera definición. En lo que sigue adoptaremos la tercera
como definición de ×
ÓÑÔÓÒ .

  ×
ÓÑÔÓÒ ´Æ¸ ¸ µ ¹
     ×
ÓÑÔÓÒ ¿´Æ¸ ¸ µº


Ejercicio 6.3 Definir la relación Ö Ñ ÒÙ Ò´·Æµ que se verifique si Æ puede descomponerse en suma de
dos cubos exactamente de dos maneras distintas.
90                                              Capítulo 6. Estilo y eficiencia en programación lógica


         Solución: La definición de Ö Ñ ÒÙ       Ò es

Ö Ñ Ò٠ҴƵ ¹
    × ØÓ ´Ô Ö´ ¸ µ¸          ×
ÓÑÔÓÒ ´Æ¸ ¸ µ¸          ¸ ℄µº

Ejercicio 6.4 Definir la relación Ö Ý´¹Æµ que se verifique si Æ es el menor entero positivo que satisface el
predicado Ö Ñ ÒÙ Ò anterior. ¿Cuál es la la matrícula del taxi que llevó a Hardy a visitar a Ramanujan?

         Solución: La definición de     Ö Ý es

     Ö Ý´Æµ ¹
          Ö Ý ÙܴƸ½µº
     Ö Ý ÙܴƸƵ ¹
       Ö Ñ Ò٠ҴƵ¸
        º
     Ö Ý ÙܴƸŵ ¹
       Ž × Å·½¸
          Ö Ý ÙܴƸŽµº

    La matrícula del taxi que llevó a Hardy a visitar a Ramanujan se calcula mediante la siguiente
consulta

      ¹      Ö Ý´Æµº
     Æ      ½ ¾
Por tanto, la matrícula del taxi es 1729.


6.2. Subconjuntos de suma dada
Ejercicio 6.5 Definir la relación ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ´·Ä½¸·Æ¸ ľµ que se verifique si ľ es un subcon-
junto de Ľ tal que la suma de los elementos de ľ es Æ. Por ejemplo,

       ¹ ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ´ ½¼¸ ¸¿¸ ¸¾¸½℄¸ ¸Äµº
     Ä       ℄
     Ä     ¿¸ ℄
     Ä       ¸ ¾¸ ½℄
     ÆÓ
       ¹ ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ´ ½¸¾¸¿℄¸¼¸Äµº
     Ä     ℄
     ÆÓ

         Solución: Presentaremos cuatro definiciones y comparemos su eficiencia.
         La primera definición usa la relación ×Ù 
ÓÒ ÙÒØÓ definida en el ejercicio 1.17 (página 19).

×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ½´Ä½¸Æ¸Ä¾µ             ¹
   ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µ¸
   ×ÙÑÐ ×شľ¸Æµº
6.2. Subconjuntos de suma dada                                                            91


    En la segunda definición se adapta la definición de ×Ù 
ÓÒ ÙÒØÓ teniendo en cuenta la suma
de sus elementos.
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¾´ ℄¸¼¸ ℄µº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¾´   Ľ℄¸Æ¸    ľ℄µ       ¹
   Æ     ¸
   ƽ × Æ¹ ¸
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¾´Ä½¸Æ½¸Ä¾µº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¾´   Ľ℄¸Æ¸Ä¾µ ¹
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¾´Ä½¸Æ¸Ä¾µº

    En la tercera definición se define de forma dinámica la relación ×Ù 
ÓÒ ÙÒØÓ×´·Ä½¸·Æº¹Ëµ
que se verifica si Ë es la lista de subconjuntos de Ë tales que la suma de sus elementos es Æ.

 ¹ ÝÒ Ñ 
 ×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ       
 Ð
ÙÐ   Ó× ¿»¿º

×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿´Ä½¸Æ¸Ä¾µ       ¹
   ×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ 
 Ð
ÙÐ       Ó× ¿´Ä½¸Æ¸Ëµ¸       ¸
   Ñ Ñ Ö´Ä¾¸Ëµº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿´Ä½¸Æ¸Ä¾µ       ¹
     Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ       ¿ ÙܴĽ¸Æ¸Äµ¸Ëµ¸
    ×× ÖØ ´×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ      
 Ð
ÙÐ Ó× ¿´Ä½¸Æ¸Ëµµ¸
   Ñ Ñ Ö´Ä¾¸Ëµº

×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿ ÙÜ´ ℄¸¼¸ ℄µº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿ ÙÜ´    Ľ℄¸Æ¸   ľ℄µ         ¹
   Æ     ¸
   ƽ × Æ¹ ¸
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿´Ä½¸Æ½¸Ä¾µº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿ ÙÜ´    Ľ℄¸Æ¸Ä¾µ ¹
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ ¿´Ä½¸Æ¸Ä¾µº

     La cuarta definición es una variación de la anterior de forma que se intercambian los dos
primeros argumentos de ×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ 
 Ð
ÙÐ Ó× a fin de que el argumento sobre el que
se indexa sea Æ.
 ¹ ÝÒ Ñ 
 ×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ       
 Ð
ÙÐ   Ó×   »¿º

×Ù 
ÓÒ ÙÒØÓ ×ÙÑ   ´Ä½¸Æ¸Ä¾µ      ¹
   ×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ 
 Ð
ÙÐ       Ó×   ´Æ¸Ä½¸Ëµ¸      ¸
   Ñ Ñ Ö´Ä¾¸Ëµº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ   ´Ä½¸Æ¸Ä¾µ      ¹
     Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ          ÙܴĽ¸Æ¸Äµ¸Ëµ¸
    ×× ÖØ ´×Ù 
ÓÒ ÙÒØÓ× ×ÙÑ      
 Ð
ÙÐ Ó× ´Æ¸Ä½¸Ëµµ¸
   Ñ Ñ Ö´Ä¾¸Ëµº

×Ù 
ÓÒ ÙÒØÓ ×ÙÑ       ÙÜ´ ℄¸¼¸ ℄µº
92                                            Capítulo 6. Estilo y eficiencia en programación lógica


×Ù 
ÓÒ ÙÒØÓ ×ÙÑ    ÙÜ´   Ľ℄¸Æ¸   ľ℄µ               ¹
   Æ     ¸
   ƽ × Æ¹ ¸
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ  ´Ä½¸Æ½¸Ä¾µº
×Ù 
ÓÒ ÙÒØÓ ×ÙÑ    ÙÜ´   Ľ℄¸Æ¸Ä¾µ ¹
   ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ  ´Ä½¸Æ¸Ä¾µº

         Para comparar la eficiencia se realizan los siguientes experimentos.

      ¹ ÒÙÑÐ ×Ø´½¸¾¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                 ½´ Ľ¸½¼¸Äµ¸ ˵µº
     ± ¾ ¸½ ¸      Ò Ö Ò
 ׸ º¼    ÈÍ Ò º½ × 
ÓÒ ×

      ¹ ÒÙÑÐ ×Ø´½¸¾¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                 ¾´ Ľ¸½¼¸Äµ¸ ˵µº
     ± ½¸     Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × 
ÓÒ ×

      ¹ ÒÙÑÐ ×Ø´½¸¾¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                 ¿´ Ľ¸½¼¸Äµ¸ ˵µº
     ± ¿¸¾ ¾ Ò Ö Ò
 ׸ ¼º¼½ ÈÍ Ò ¼º¼½ × 
ÓÒ ×

      ¹ ÒÙÑÐ ×Ø´½¸¾¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                   ´ Ľ¸½¼¸Äµ¸ ˵µº
     ± ¿¸¾ ¾ Ò Ö Ò
 ׸ ¼º¼½ ÈÍ Ò ¼º¼½ × 
ÓÒ ×


      ¹ ÒÙÑÐ ×Ø´½¸½ ¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                  ¾´ Ľ¸ ¼¸Äµ¸ ˵µº
     ± ½¼ ¸   ¸     Ò Ö Ò
 ׸    º ¼ ÈÍ Ò   º   × 
ÓÒ ×

       ¹ ÒÙÑÐ ×Ø´½¸½ ¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                 ¿´ Ľ¸ ¼¸Äµ¸ ˵µº
     ±    ¿¸½¾¾ Ò Ö Ò
 ׸ ½ º ½ ÈÍ Ò ¾½º     × 
ÓÒ ×

      ¹ ÒÙÑÐ ×Ø´½¸½ ¼¸ Ľµ¸ Ø Ñ ´ Ò Ðдĸ×Ù 
ÓÒ ÙÒØÓ ×ÙÑ                   ´ Ľ¸ ¼¸Äµ¸ ˵µº
     ±   ¿¸½    Ò Ö Ò
 ׸ ½º     ÈÍ Ò ¾º½ × 
ÓÒ ×

         Se observa que la más eficiente es la cuarta definición.


6.3. Coloreado de mapas
Ejercicio 6.6 Un mapa puede representarse mediante la relación Ñ Ô ´Æ¸Äµ donde Æ es el nombre del
mapa y Ä es la lista de los pares formados por cada una de las regiones del mapa y la lista de sus regiones
vecinas. Por ejemplo, los mapas de la figura 6.1 se pueden representar por

     Ñ Ô ´      ÑÔÐÓ ½¸
               ¹ ¸
¸ ℄¸ ¹      ¸ ¸ ℄¸ 
¹ ¸ ¸ ℄¸ ¹         ¸ ¸
¸ ¸ ¸ ℄¸
               ¹ ¸ ¸ ℄¸ ¹     
¸ ¸ ℄¸ ¹ ¸ ¸ ℄℄µº
     Ñ Ô ´      ÑÔÐÓ ¾¸
               ¹ ¸ ¸ ℄¸       ¹ ¸
¸ ¸ ℄¸ 
¹ ¸ ¸ ¸ ℄¸          ¹ 
¸ ¸ ℄¸     ¹ ¸ ¸ ¸ ℄¸
               ¹ 
¸ ¸ ¸ ℄¸    ¹ ¸ ¸ ℄¸     ¹ ¸ ¸ ℄¸           ¹ ¸ ¸ ℄¸      ¹ ¸ ¸ ℄¸
               ¹ ¸ ¸
¸ ¸ ¸    ¸ ¸ ¸ ¸ ℄℄µº
6.3. Coloreado de mapas                                                                                 93


                             a           b                   a       b c d
                                                             e           f
                         c        d           e                       k
                                                            g            h
                             f            g                      i         j

                                      Figura 6.1: Ejemplos de mapas

Definir la relación 
ÓÐÓÖ 
 Ò´·Å¸·Ä ¸¹Ëµ que se verifique si Ë es una lista de pares formados por una
región del mapa Å y uno de los colores de la lista de colores Ä tal que las regiones vecinas tengan colores
distintos. Por ejemplo,

    ¹ 
ÓÐÓÖ 
 Ò´   ÑÔÐÓ ½¸ ½¸¾¸¿℄¸Ëµº
   Ë     ¹½¸ ¹¾¸ 
¹¾¸ ¹¿¸ ¹½¸ ¹½¸ ¹¾℄

¿Qué número de colores se necesitan para colorear el segundo mapa? ¿De cuántas formas distintas puede
colorearse con dicho número?

       Solución: Presentamos dos definiciones y comparamos su eficiencia.
       La primera definición de 
ÓÐÓÖ 
 Ò es por generación y prueba.


ÓÐÓÖ 
 Ò ½´Å¸Ä ¸Ëµ ¹
   Ñ Ô ´Å¸Äµ¸
   
ÓÐÓÖ 
 Ò ½ ÙÜ´Ä¸Ä ¸Ëµº


ÓÐÓÖ 
 Ò ½ ÙÜ´ ℄¸ ¸ ℄µº

ÓÐÓÖ 
 Ò ½ ÙÜ´ ʹΠÄ℄¸Ä ¸ ʹ Ë℄µ ¹
   Ñ Ñ Ö´ ¸Ä µ¸
   
ÓÐÓÖ 
 Ò ½ ÙÜ´Ä¸Ä ¸Ëµ¸
   ÒÓØ´´Ñ Ñ Ö´Ê½¸Îµ¸ Ñ Ñ Ö´Ê½¹ ¸Ëµµµº

       En la segunda definición de 
ÓÐÓÖ 
         Ò se usa un acumulador y se adelanta las pruebas.


ÓÐÓÖ 
 Ò ¾´Å¸Ä ¸Ëµ ¹
   Ñ Ô ´Å¸Äµ¸
   
ÓÐÓÖ 
 Ò ¾ ÙÜ´Ä¸Ä ¸ ℄¸Ëµº


ÓÐÓÖ 
 Ò ¾ ÙÜ´ ℄¸ ¸Ë¸Ëµº

ÓÐÓÖ 
 Ò ¾ ÙÜ´ ʹΠÄ℄¸Ä ¸ ¸Ëµ ¹
   Ñ Ñ Ö´ ¸Ä µ¸
   ÒÓØ´´Ñ Ñ Ö´Ê½¸Îµ¸ Ñ Ñ Ö´Ê½¹ ¸ µµµ¸
   
ÓÐÓÖ 
 Ò ¾ ÙÜ´Ä¸Ä ¸ ʹ   ℄¸Ëµº

       Para comparar las dos definiciones usaremos el segundo mapa.
94                                       Capítulo 6. Estilo y eficiencia en programación lógica


       ¹ Ø Ñ ´
ÓÐÓÖ 
 Ò ½´   ÑÔÐÓ ¾¸ ½¸¾¸¿¸ ℄¸Ëµµº
     ± ½ ¸ ¼ ¸¿½    Ò Ö Ò
 ׸ º½    ÈÍ Ò º¾¼ × 
ÓÒ × ´½¼¼± È͸ ¾ ¼¿½¾              Ä Ô×µ
     Ë      ¹½¸ ¹¾¸ 
¹½¸ ¹¾¸ ¹¿¸ ¹¿¸ ¹½¸ ¹½¸ ¹¾¸ ¹¿¸ ¹ ℄

       ¹ Ø Ñ ´
ÓÐÓÖ 
 Ò ¾´  ÑÔÐÓ ¾¸ ½¸¾¸¿¸ ℄¸Ëµµº
     ±       Ò Ö Ò
 ׸ ¼º¼¼ ÈÍ Ò ¼º¼¼ × 
ÓÒ × ´¼± È͸ ÁÒ            Ò Ø   Ä Ô×µ
     Ë      ¹ ¸ ¹¿¸ ¹¾¸ ¹½¸ ¹½¸ ¹¿¸ ¹¿¸ ¹¾¸ 
¹½¸ ¹¾¸                ¹½℄

Se observa que la segunda es más eficiente.
    En el ejemplo anterior se observa que se puede colorear el segundo mapa con 4 colores.
Veamos si puede colorearse con 3 colores.

      ¹ 
ÓÐÓÖ 
   Ò ¾´   ÑÔÐÓ ¾¸ ½¸¾¸¿℄¸Ëµº
     ÆÓ

Por tanto, para colorear el segundo mapa se necesitan 4 colores.
     El número Æ de formas distintas de colorear el segundo mapa se calcula mediante la siguiente
consulta.

      ¹    Ò Ðд ˸
ÓÐÓÖ 
   Ò ¾´    ÑÔÐÓ ¾¸ ½¸¾¸¿¸ ℄¸ ˵¸ ĵ¸ Ð Ò Ø ´ ĸƵº
     Æ    ½¼¿¾
Capítulo 7

Aplicaciones de programación declarativa

7.1. Formación de grupos minimales de asignaturas compatibles
     Mediante la relación Ð ×Ø      
Ð × ´ ¸ ¸Äµ se representa la información de los alumnos
según los cursos y asignaturas, de forma que es el curso, es la asignatura y Ä es la lista de
los alumnos de dicha asignatura. A lo largo del ejercicio vamos a usar como ejemplo la siguiente
información.

Ð   ×Ø         
Ð   ×   ´
½¸   ×   ½¸    ½¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×   ¾¸    ½¸ ¾¸ ¿℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×   ¿¸    ½¸ ¿℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×    ¸    ¾¸ ¸ ¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×    ¸    ¾¸ ¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×    ¸     ¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×    ¸    ¿¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
½¸   ×    ¸     ¸ ¸ ℄µº
Ð   ×Ø         
Ð   ×   ´
¾¸   ×    ¸     ¸ ½½℄µº
Ð   ×Ø         
Ð   ×   ´
¾¸   ×   ½¼¸    ½¼¸ ½¾℄µº
Ð   ×Ø         
Ð   ×   ´
¾¸   ×   ½½¸    ½¼¸ ½½℄µº
Ð   ×Ø         
Ð   ×   ´
¾¸   ×   ½¾¸     ¸ ½¾℄µº


Ejercicio 7.1 Definir la relación ×          Ò ØÙÖ ×´· ¸¹Äµ que se verifique si Ä es la lista de asignaturas del
curso . Por ejemplo,

      ¹    ×  Ò ØÙÖ      ×´
½¸Äµº
     Ä         ×½¸       × ¾¸ × ¿¸ ×   ¸ ×              ¸    ×   ¸   ×    ¸   ×    ℄
      ¹    × Ò ØÙÖ       ×´
¾¸Äµº
     Ä      ×    ¸       × ½¼¸ × ½½¸ × ½¾℄

         Solución: La definición de ×         Ò ØÙÖ × es

 ×       Ò ØÙÖ ×´ ¸Äµ ¹
          Ò Ðд ¸Ð ×Ø              
Ð × ´ ¸ ¸ µ¸Äµº


                                                        95
96                                             Capítulo 7. Aplicaciones de programación declarativa


Ejercicio 7.2 Definir la relación ÖÙÔÓ Ò
ÓÑÔ Ø Ð ´·Äµ que se verifique si la lista de asignaturas Ä es
incompatible (es decir, algún alumno está en las listas de clase de más de una asignatura de la lista Ä). Por
ejemplo,
      ¹    ÖÙÔÓ    Ò
ÓÑÔ Ø   Ð ´   ×    ½¸ ×   ¾℄µº
       ×
      ¹    ÖÙÔÓ    Ò
ÓÑÔ Ø   Ð ´   ×    ½¸ ×       ¸ ×        ℄µº
     ÆÓ

      Solución: La definición de ÖÙÔÓ           Ò
ÓÑÔ Ø         Ð es
  ÖÙÔÓ Ò
ÓÑÔ Ø Ð ´Äµ ¹
    × Ð 
Ø´ ¸Ä¸Êµ¸
    Ñ Ñ Ö´ ¸Êµ¸
    Ð ×Ø     
Ð × ´ ¸ ¸Ä µ¸
    Ð ×Ø     
Ð × ´ ¸ ¸Ä µ¸
    Ñ Ñ Ö´ ¸Ä µ¸
    Ñ Ñ Ö´ ¸Ä µº

Ejercicio 7.3 Definir la relación Ð ×Ø       Ò
ÓÑÔ Ø Ð ´·Äµ que verifique si la lista de grupos de asigna-
turas Ä es incompatible (es decir, contiene algún grupo incompatible de asignaturas). Por ejemplo,
      ¹ Ð ×Ø       Ò
ÓÑÔ Ø   Ð ´    ×    ¸     ×       ½¾℄¸     ×       ½½¸   ×   ½¼℄℄µº
        ×
      ¹ Ð ×Ø       Ò
ÓÑÔ Ø   Ð ´    ×   ½½¸        ×    ½¾℄¸        ×     ¸   ×   ½¼℄℄µº
     ÆÓ

      Solución: La definición de Ð ×Ø           Ò
ÓÑÔ Ø         Ð es
Ð ×Ø    Ò
ÓÑÔ Ø Ð ´Èµ ¹
   Ñ Ñ Ö´ ¸Èµ¸
     ÖÙÔÓ Ò
ÓÑÔ Ø Ð ´ µº

Ejercicio 7.4 Definir la relación ÜØ Ò× Ò´·Ä½¸· ¸¹Ä¾µ que se verifique si ľ es la lista obtenida aña-
diendo como primer elemento de un elemento de Ľ o ľ es la lista obtenida añadiendo ℄ a Ľ. Por
ejemplo,
      ¹    ÜØ Ò× Ò´    ℄¸    ¸ 
℄℄¸ ¸ µº
              ¸ ℄¸    ¸ 
℄℄
              ℄¸   ¸ ¸ 
℄℄
              ℄¸   ¸ 
℄¸    ℄℄
     ÆÓ

      Solución: La definición de ÜØ Ò×           Ò es
  ÜØ Ò×      Ò´   ℄¸ ¸   ℄℄µº
  ÜØ Ò×      Ò´   Ä Ä½℄¸ ¸    Ä℄ Ľ℄µº
  ÜØ Ò×      Ò´   Ä Ä½℄¸ ¸ Ä Ä¾℄µ ¹
     ÜØ     Ò×    ҴĽ¸ ¸Ä¾µº
7.1. Formación de grupos minimales de asignaturas compatibles                                       97


Ejercicio 7.5 Definir la relación Ô ÖØ 
 Ò´·Ä¸¹Èµ que se verifique si È es una partición de la lista Ä
(es decir, un conjunto obtenido distribuyendo los elementos de Ä en conjuntos no vacíos y sin elementos
comunes). Por ejemplo,
     ¹ Ô ÖØ 
 Ò´ ¸ ¸
℄¸Èµº
   È       ¸ ¸ 
℄℄
   È       ¸ 
℄¸    ℄℄
   È       ¸ 
℄¸    ℄℄
   È      
℄¸    ¸ ℄℄
   È      
℄¸    ℄¸    ℄℄
   ÆÓ
       Solución: La definición de Ô ÖØ 
          Ò es
Ô ÖØ 
 Ò´ ℄¸ ℄µº
Ô ÖØ 
 Ò´   Ľ℄¸Ä¾µ ¹
   Ô ÖØ 
 ҴĽ¸Ä¿µ¸
    ÜØ Ò× Ò´Ä¿¸ ¸Ä¾µº

Ejercicio 7.6 Definir la relación ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð                  × Ò ØÙÖ ×´· ¸¹Èµ que se verifique si
È es una partición compatible de las asignaturas del curso . Por ejemplo,
    ¹      ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð                × Ò ØÙÖ ×´
¾¸Èµº
   È         × ½½¸ × ½¾℄¸            ×     ¸ × ½¼℄℄
   È         × ½½¸ × ½¾℄¸            ×    ½¼℄¸  ×   ℄℄
       ×
       Solución: La definición de         ÖÙÔ 
    Ò 
ÓÑÔ Ø   Ð      ×     Ò ØÙÖ × es
   ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð              ×       Ò ØÙÖ ×´ ¸Èµ    ¹
     × Ò ØÙÖ ×´ ¸Äµ¸
    Ô ÖØ 
 Ҵĸȵ¸
    ÒÓØ´Ð ×Ø  Ò
ÓÑÔ Ø        Ð ´Èµµº

Ejercicio 7.7 Definir la relación ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð Ñ Ò Ñ Ð´· ¸¹Èµ que se verifique si È es una
partición compatible de las asignaturas del curso con el menor número posible de grupos de asignaturas.
Por ejemplo,
    ¹      ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð          Ñ Ò Ñ Ð´
¾¸Èµº
   È         × ½½¸ × ½¾℄¸            ×   ¸ × ½¼℄℄
   ÆÓ
Calcular las agrupaciones compatibles minimales del curso 
½.

       Solución: La definición    ÖÙÔ 
       Ò 
ÓÑÔ Ø    Ð   Ñ Ò Ñ Ð es
   ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð Ñ Ò Ñ Ð´ ¸Èµ ¹
      ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð     × Ò ØÙÖ ×´ ¸Èµ¸
    Ð Ò Ø ´È¸Æµ¸
    ÒÓØ´´ ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð      × Ò ØÙÖ ×´ ¸È½µ¸Ð Ò Ø ´È½¸Åµ¸Å                         Ƶµº
98                                                  Capítulo 7. Aplicaciones de programación declarativa


      Las agrupaciones compatibles minimales del curso 
½ se calculan mediante la consulta
      ¹           ÖÙÔ 
 Ò 
ÓÑÔ Ø Ð Ñ Ò Ñ Ð´
½¸Èµº
     È              × ¿¸ ×    ¸ ×   ℄¸  × ½¸ ×               ¸ ×   ℄¸     ×   ¾¸   ×   ℄℄
     È              × ¾¸ ×    ℄¸  × ½¸ × ¸ ×                 ℄¸  × ¿¸     ×    ¸   ×   ℄℄
     ÆÓ


7.2. Simulación de una calculadora básica
    El objetivo de los siguientes ejercicios es la simulación de una calculadora básica. Para ello
consideraremos que en cada momento la calculadora se encuentra en un determinado estado
caracterizado por una lista con cuatro elementos Í ¸ÍÌ ¸ÍÇ ¸ÎÁÅ℄ donde
          Í       es el último cálculo efectuado,
          ÍÌ es la última tecla activada,
          ÍÇ es el último operador activado y
          ÎÁÅ es el valor impreso.
El estado inicial es ¼¸ ¸ ¸¼℄ y está definido por
 ×Ø       Ó       Ò 
       д ¼¸ ¸ ¸¼℄µº

   Las acciones posibles son pulsar un dígito, una operación aritmética o la de resultado y están
definidas por
 

       Ò´ µ          ¹    ×     ØÓ´ µº
 

       Ò´ µ          ¹    × ÓÔ Ö 
 Ò´ µº
 

       Ò´ µ          ¹    × Ö ×ÙÐØ Ó´ µº

 ×             ØÓ´¼µº
 ×             ØÓ´½µº
 ×             ØÓ´¾µº
 ×             ØÓ´¿µº
 ×             ØÓ´ µº
 ×             ØÓ´ µº
 ×             ØÓ´ µº
 ×             ØÓ´ µº
 ×             ØÓ´ µº
 ×             ØÓ´ µº

 ×   ÓÔ       Ö   
   Ò´·µº
 ×   ÓÔ       Ö   
   Ò´¹µº
 ×   ÓÔ       Ö   
   Ò´¶µº
 ×   ÓÔ       Ö   
   Ò´»µº

 × Ö ×ÙÐØ             Ó´ µº
7.2. Simulación de una calculadora básica                                                       99


    En la siguiente tabla se muestran los estados de la calculadora correspondientes a las acciones
indicadas en la última columna
        estado              tecla
        ´ ¼¸ ¸ ¸ ¼µ ¿
        ´ ¼¸ ¿¸ ¸ ¿µ ·
        ´ ¿¸ ·¸ ·¸ ¿µ ¾
        ´ ¿¸ ¾¸ ·¸ ¾µ ½
        ´ ¿¸ ½¸ ·¸ ¾½µ ¶
        ´¾ ¸ ¶¸ ¶¸ ¾ µ ¾
        ´¾ ¸ ¾¸ ¶¸ ¾µ
        ´ ¸ ¸ ¸         µ
Es decir, si se parte del estado inicial y se realizan las acciones

   ¿ · ¾ ½ ¶ ¾

se obtiene como resultado el número          .

Ejercicio 7.8 Definir la relación ØÖ Ò× 
 Ò´· ½¸· ¸ ¾µ que se verifique si ¾ es el estado obtenido
aplicando la acción al estado ½; es decir, si ½ es Í ¸ÍÌ ¸ÍÇ ¸ÎÁÅ℄, entonces

        Si    es un dígito, entonces

             • si ÍÌ es un dígito, ¾ es Í   ¸ ¸ÍÇ ¸½¼¶ÎÁÅ· ℄;
             • en otro caso, ¾ es Í    ¸ ¸ÍÇ ¸ ℄.

        Si    no es un dígito, entonces

             • si ÍÇ es una operación, ¾ es ÍÇ ´Í   ¸ÎÁŵ¸ ¸ ¸ÍÇ ´Í   ¸ÎÁŵ℄
             • en otro caso, ¾ es ÎÁŸ ¸ ¸ÎÁÅ℄.

Por ejemplo,

    ¹  ×Ø Ó Ò 
 д ½µ¸
      ØÖ Ò× 
 Ò´ ½¸¿¸ ¾µ¸
      ØÖ Ò× 
 Ò´ ¾¸·¸ ¿µ¸
      ØÖ Ò× 
 Ò´ ¿¸¾¸ µ¸
      ØÖ Ò× 
 Ò´ ¸½¸ µ¸
      ØÖ Ò× 
 Ò´ ¸¶¸ µ¸
      ØÖ Ò× 
 Ò´ ¸¾¸ µ¸
      ØÖ Ò× 
 Ò´ ¸ ¸ µº
    ½    ¼¸ ¸ ¸ ¼℄
    ¾    ¼¸ ¿¸ ¸ ¿℄
    ¿    ¿¸ ·¸ ·¸ ¿℄
         ¿¸ ¾¸ ·¸ ¾℄
         ¿¸ ½¸ ·¸ ¾½℄
         ¾ ¸ ¶¸ ¶¸ ¾ ℄
         ¾ ¸ ¾¸ ¶¸ ¾℄
           ¸ ¸ ¸      ℄
100                                       Capítulo 7. Aplicaciones de programación declarativa


      Solución: Presentamos tres definiciones.
      La primera definición de ØÖ Ò× 
 Ò es

ØÖ Ò× 
 Ò ½´ Í ¸ÍÌ ¸ÍÇ ¸ÎÁÅ℄¸ ¸ µ              ¹
   ´ ×     ØÓ´ µ ¹
     ´ ×     ØÓ´ÍÌ µ ¹
         × ½¼¶ÎÁÅ· ¸
           Í ¸ ¸ÍÇ ¸ ℄
       ± · ×      ØÓ´ÍÌ µ ¹
           Í ¸ ¸ÍÇ ¸ ℄ µ
     ± · ×      ØÓ´ µ ¹
     ´ × ÓÔ Ö 
 Ò´ÍÇ µ ¹
       Ì ºº ÍÇ ¸Í ¸ÎÁÅ℄¸
         × Ì¸
            ¸ ¸ ¸ ℄
       ± · × ÓÔ Ö 
 Ò´ÍÇ µ ¹
           ÎÁŸ ¸ ¸ÎÁÅ℄ µµº

      La segunda definición de ØÖ Ò× 
    Ò es

ØÖ Ò× 
 Ò ¾´ Í ¸ÍÌ ¸ÍÇ ¸ÎÁÅ℄¸ ¸ µ ¹
   ´ ×      ØÓ´ µ¸ ×      ØÓ´ÍÌ µ ¹
        × ½¼¶ÎÁÅ· ¸
          Í ¸ ¸ÍÇ ¸ ℄
      ×     ØÓ´ µ¸ · ×       ØÓ´ÍÌ µ ¹
          Í ¸ ¸ÍÇ ¸ ℄
      · ×      ØÓ´ µ¸ × ÓÔ Ö 
 Ò´ÍÇ µ ¹
     Ì ºº ÍÇ ¸Í ¸ÎÁÅ℄¸
        × Ì¸
           ¸ ¸ ¸ ℄
      · ×      ØÓ´ µ¸ × Ö ×ÙÐØ Ó´ÍÇ µ ¹
          ÎÁŸ ¸ ¸ÎÁÅ℄ µº

      La tercera definición de ØÖ Ò× 
   Ò es
ØÖ Ò× 
 Ò ¿´ Í ¸ÍÌ ¸ÍÇ ¸ÎÁÅ℄¸ ¸ Í ¸ ¸ÍÇ ¸ ℄µ ¹
    ×     ØÓ´ µ¸
    ×     ØÓ´ÍÌ µ¸
      × ½¼¶ÎÁÅ· º
ØÖ Ò× 
 Ò ¿´ Í ¸ÍÌ ¸ÍÇ ¸ ÎÁÅ℄¸ ¸ Í ¸ ¸ÍÇ ¸ ℄µ ¹
    ×     ØÓ´ µ¸
    · ×      ØÓ´ÍÌ µº
ØÖ Ò× 
 Ò ¿´ Í ¸ ÍÌ ¸ÍÇ ¸ÎÁÅ℄¸ ¸ ¸ ¸ ¸ ℄µ ¹
    · ×      ØÓ´ µ¸
    × ÓÔ Ö 
 Ò´ÍÇ µ¸
   Ì ºº ÍÇ ¸Í ¸ÎÁÅ℄¸
      × Ìº
7.2. Simulación de una calculadora básica                                                               101


ØÖ Ò× 
 Ò ¿´ Í ¸ ÍÌ ¸ ¸ÎÁÅ℄¸ ¸ ÎÁŸ ¸ ¸ÎÁÅ℄µ                    ¹
    · ×     ØÓ´ µº

       En lo que sige usaremos la primera.

ØÖ Ò× 
 Ò´ ½¸ ¸ ¾µ ¹
   ØÖ Ò× 
 Ò ½´ ½¸ ¸ ¾µº


Ejercicio 7.9 Definir la relación ØÖ Ò× 
 ÓÒ ×´· ½¸·Ä¸ ¾µ que se verifique si ¾ es el estado obtenido
aplicando las acciones de la lista Ä al estado ½. Por ejemplo,

    ¹      ×Ø   Ó   Ò 
 д ½µ¸ ØÖ Ò× 
 ÓÒ ×´          ½¸ ¿¸·¸¾¸½¸¶¸¾¸ ℄¸ ¾µº
    ¾           ¸   ¸ ¸   ℄

       Solución: La definición de ØÖ Ò× 
 ÓÒ × es

ØÖ Ò× 
 ÓÒ ×´ ¸ ℄¸ µº
ØÖ Ò× 
 ÓÒ ×´ ½¸   Ä℄¸ ¿µ           ¹
   ØÖ Ò× 
 Ò´ ½¸ ¸ ¾µ¸
   ØÖ Ò× 
 ÓÒ ×´ ¾¸Ä¸ ¿µº


Ejercicio 7.10 Definir la relación 

 ÓÒ ×´ ĵ que se verifique si Ä es una lista cuyos elementos son
acciones. Por ejemplo,

    ¹      

 ÓÒ ×´ ¾¸·¸¿¸ ℄µº
       ×
    ¹      

 ÓÒ ×´ ¾¸·¸¿ ℄µº
   ÆÓ

Usarlo para calcular el número de posibles listas de acciones de longitud 3.

       Solución: La definición de 

 ÓÒ × es

  

 ÓÒ ×´ ℄µº
  

 ÓÒ ×´   Ä℄µ       ¹
     

 Ò´ µ¸
     

 ÓÒ ×´Äµº

       El número Æ de listas de acciones de longitud 3 se calcula mediante la consulta

    ¹       Ò   Ðд ĸ´Ð Ò Ø ´ ĸ¿µ¸      

 ÓÒ ×´ ĵµ¸ Ä Ä¿µ¸ Ð Ò Ø ´ Ä Ä¿¸Æµº
   Æ       ¿¿

Ejercicio 7.11 Para realizar una operación en la calculadora no todas las combinaciones de teclas (acciones)
son válidas. Por ejemplo, no podemos teclear dos operaciones consecutivas o dividir por cero. La siguiente
relación define las acciones válidas
102                                               Capítulo 7. Aplicaciones de programación declarativa



  

 ÓÒ × Ú Ð    ״ĵ ¹
     

 ÓÒ ×´Äµ¸
     ÑÔ Þ ÔÓÖ        ØӴĵ¸
    ÒÓØ´Ø Ò ÓÔ Ö 
 ÓÒ × 
ÓÒ× 
ÙØ Ú ×´Äµµ¸
    ÒÓØ´Ø Ò Ö ×ÙÐØ Ó ÒØ ÖÑ       Ӵĵµ¸
    ÒÓØ´ Ú      ÔÓÖ 
 ÖӴĵµ¸
    Ø ÖÑ Ò    Ò     ØÓ Ý Ö ×ÙÐØ Ó´Äµº

        En los apartados de este ejercicio se definen de las relaciones auxiliares.

    1. Definir la relación ÑÔ       Þ    ÔÓÖ       ØÓ´ ĵ que se verifique si el primer elemento de la lista Ä es
       un dígito.

    2. Definir la relación Ø Ò ÓÔ Ö 
 ÓÒ × 
ÓÒ× 
ÙØ Ú ×´ ĵ que se verifique si la lista Ä contiene
       dos operaciones consecutivas.

    3. Definir la relación Ø Ò Ö ×ÙÐØ Ó ÒØ ÖÑ                  Ó´ Ä) que se verifique si la lista Ä contiene el sím-
       bolo en una posición que no es la última.

    4. Definir la relación Ú        ÔÓÖ 
 ÖÓ´ ĵ que se verifique si en la lista Ä aparecen de manera con-
       secutiva el símbolo » y un cero.

    5. Definir la relación Ø ÖÑ Ò    Ò       ØÓ Ý Ö ×ÙÐØ           Ó´ ĵ que se verifique si en la lista Ä los últi-
       mos elementos son un dígito y el símbolo .

        Solución:

  ÑÔ       Þ   ÔÓÖ     ØÓ´        Ä℄µ    ¹
          ×      ØÓ´ µº

Ø     Ò     ÓÔ   Ö 
 ÓÒ × 
ÓÒ× 
ÙØ Ú ×´Äµ          ¹
          ÔÔ Ò   ´ ¸ ¸      ℄¸Äµ¸
          × ÓÔ   Ö 
 Ò´ µ¸
          × ÓÔ   Ö 
 Ò´ µº

Ø     Ò     Ö ×ÙÐØ Ó ÒØ ÖÑ   Ӵĵ             ¹
          ÔÔ Ò ´ ¸ ¸     ℄¸Äµº

    Ú        ÔÓÖ 
 ÖӴĵ      ¹
          ÔÔ Ò ´ ¸ »¸¼        ℄¸Äµº

Ø ÖÑ Ò   Ò      ØÓ Ý Ö ×ÙÐØ              Ӵĵ     ¹
   Ö Ú Ö× ´Ä¸ ¸     ℄µ¸
    ×      ØÓ´ µº


Ejercicio 7.12 Calcular el número de posibles listas de acciones válidas de longitud 3.
7.3. Problema de las subastas                                                                            103


    Solución: El número Æ de listas de acciones válidad de longitud 3 se calcula mediante la
consulta

    ¹      Ò Ðд ĸ´Ð Ò Ø ´ ĸ¿µ¸          

 ÓÒ × Ú Ð       ×´ ĵµ¸ Ä Ä¿µ¸ Ð Ò Ø ´ Ä Ä¿¸Æµº
   Æ      ½¼¼

Ejercicio 7.13 Definir la relación 
 Ð
ÙÐÓ´·Æ¸·Å¸¹Äµ que se verifique si Ä es una lista de Å acciones
válidas que aplicadas al estado inicial da como resultado el número Æ. Por ejemplo,

     ¹ 
 Ð
ÙÐÓ´ ¸¾¸Äµº
   Ä      ¸ ℄
   ÆÓ
     ¹ 
 Ð
ÙÐÓ´ ¸¿¸Äµº
   Ä     ¼¸ ¸ ℄
   ÆÓ
     ¹ 
 Ð
ÙÐÓ´ ¸ ¸Äµº
   Ä     ¼¸ ¼¸ ¸ ℄
   Ä     ¼¸ ·¸ ¸ ℄
   Ä     ½¸ ·¸ ¸ ℄
   Ä     ½¸ ¶¸ ¸ ℄
   Ä     ¾¸ ·¸ ¿¸ ℄
      ×

       Solución:


 Ð
ÙÐӴƸŸĵ ¹
    ×Ø Ó Ò 
 д ½µ¸
   Ð Ò Ø ´Ä¸Åµ¸
    

 ÓÒ × Ú Ð   ״ĵ¸
   ØÖ Ò× 
 ÓÒ ×´ ½¸Ä¸ Ƹ ¸ ¸Æ℄µº



7.3. Problema de las subastas
Ejercicio 7.14 En una subasta se hacen distintas ofertas. Cada oferta incluye un lote de productos y un
precio por dicho lote. Las ofertas realizadas se representan mediante la relación Ó ÖØ ´Ç¸Ä¸Èµ que se
verifica si Ç es una oferta por el lote Ä con un coste È. Por ejemplo, Ó ÖØ ´ ¸ ½¸¾¸¿℄¸¿¼µ representa la
oferta en la que se puja por el lote compuesto por los objetos ½, ¾ y ¿ por un valor de ¿¼ euros.
     Para la aceptación de las ofertas se observan las siguientes reglas:

        No puede aceptar dos ofertas que contienen un mismo objeto en sus lotes.

        Se prefieren las ofertas de mayor ganancia.

      Definir la relación 
 ÔØ       ´¹Äµ que se verifique si Ä es una lista de ofertas aceptadas. Por ejemplo,
si las ofertas realizadas se definen por
104                                         Capítulo 7. Aplicaciones de programación declarativa



Ó     ÖØ   ´ ¸   ½¸¾¸¿℄¸¿¼µº
Ó     ÖØ   ´ ¸   ½¸¾¸¿℄¸¾¼µº
Ó     ÖØ   ´
¸    ℄¸¾¼µº
Ó     ÖØ   ´ ¸   ¾¸ ℄¸¾¼µº
Ó     ÖØ   ´ ¸   ½¸¾℄¸¾¼µº

entonces,

      ¹    
 ÔØ   ´Äµº
    Ä        ¸ 
℄

        Solución: La definición de 
 ÔØ       es

 
 ÔØ    ´Äµ ¹
    
 ÔØ Ð ´Äµ¸
      Ò Ò
 ´Ä¸ µ¸
   ÒÓØ´´ 
 ÔØ Ð ´Ä½µ¸             Ò Ò
   ´Ä½¸ ½µ¸   ½   µµº

    La relación 
 ÔØ Ð ´ ĵ se verifica si Ä es una lista de ofertas aceptable; es decir, una lista
de ofertas que no contienen objetos comunes en sus lotes. Por ejemplo, con la definición anterior
de Ó ÖØ ×»¿,

      ¹    
 ÔØ Ð ´Äµº
    Ä         ¸ 
℄
    Ä         ℄
    Ä         ¸ 
℄
    Ä         ℄
    Ä       
¸ ℄
    Ä       
℄
    Ä         ℄
    Ä         ℄
    Ä       ℄
    ÆÓ


 
 ÔØ Ð ´Äµ ¹
   Ð ×Ø     Ó ÖØ ×´Ä½µ¸
   ×Ù 
ÓÒ ÙÒØӴĸĽµ¸
    × 
 ÔØ Ð ´Äµº

    La relación Ð ×Ø       Ó ÖØ ×´¹Äµ se verifica si Ä es la lista de todas las ofertas. Por ejemplo,
con la definición anterior de Ó ÖØ ×»¿,

      ¹ Ð ×Ø         Ó ÖØ ×´Äµº
    Ä      ¸      ¸ 
¸ ¸ ℄
7.3. Problema de las subastas                                                                105



Ð ×Ø               Ó ÖØ ×´Äµ ¹
          Ò       ÐÐ´Ç¸Ó ÖØ ´Ç¸ ¸ µ¸Äµº


      La relación ×Ù 
ÓÒ ÙÒØÓ´ Ľ¸·Ä¾µ se verifica si Ľ es un subconjunto de ľ. Por ejemplo,

       ¹ ×Ù 
ÓÒ ÙÒØӴĸ        ¸ ¸
℄µº
     Ä       ¸ ¸ 
℄
     Ä       ¸ ℄
     Ä       ¸ 
℄
     Ä       ℄
     Ä       ¸ 
℄
     Ä       ℄
     Ä     
℄
     Ä     ℄
     ÆÓ


×Ù 
ÓÒ ÙÒØÓ´ ℄¸ ℄µº
×Ù 
ÓÒ ÙÒØÓ´    Ľ℄¸   ľ℄µ              ¹
   ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µº
×Ù 
ÓÒ ÙÒØӴĽ¸    ľ℄µ ¹
   ×Ù 
ÓÒ ÙÒØӴĽ¸Ä¾µº


    La relación × 
 ÔØ Ð ´·Äµ se verifica si la lista de ofertas Ä es aceptable; es decir, no
contiene ofertas con objetos comunes en sus lotes. Por ejemplo, con la definición anterior de
Ó ÖØ ×»¿,

      ¹       ×   
 ÔØ   Ð ´ 
¸ ℄µº
     ÆÓ
      ¹       ×   
 ÔØ   Ð ´ 
¸ ℄µº
       ×


 ×     
 ÔØ Ð ´Äµ ¹
      ÒÓØ´ × Ò 
 ÔØ Ð ´Äµµº


      La relación × Ò 
 ÔØ Ð ´·Äµ se verifica si Ä es una lista de ofertas inaceptable; es de-
cir, contiene ofertas con objetos comunes en sus lotes. Por ejemplo, con la definición anterior de
Ó ÖØ ×»¿,

      ¹       ×   Ò 
 ÔØ   Ð ´ 
¸ ℄µº
       ×
      ¹       ×   Ò 
 ÔØ   Ð ´ 
¸ ℄µº
     ÆÓ
106                                         Capítulo 7. Aplicaciones de programación declarativa



 ×     Ò 
 ÔØ Ð ´Äµ ¹
      Ñ Ñ Ö´Ç½¸Äµ¸
      Ñ Ñ Ö´Ç¾¸Äµ¸
      ǽ    Ǿ¸
      Ó ÖØ ´Ç½¸Ä½¸ µ¸
      Ó ÖØ ´Ç¾¸Ä¾¸ µ¸
      × ×ÓÐ Ô Ò´Ä½¸Ä¾µº

   La relación × ×ÓÐ Ô Ò´·Ä½¸·Ä¾µ se verifica si Ľ y ľ se solapan; es decir, tienen elementos
comunes. Por ejemplo,

      ¹ ×    ×ÓÐ Ô Ò´    ¸ ¸
℄¸   ¸ ¸ ℄µº
        ×
      ¹ ×    ×ÓÐ Ô Ò´    ¸ ¸
℄¸   ¸ ℄µº
     ÆÓ


×     ×ÓÐ Ô Ò´Ä½¸Ä¾µ      ¹
      Ñ Ñ Ö´ ¸Ä½µ¸
      Ñ Ñ Ö´ ¸Ä¾µº

    La relación Ò Ò
 ´·Ä¸¹ µ se verifica si la ganancia de la lista de ofertas L es . Por ejemplo,
con la definición anterior de Ó ÖØ ×»¿,

      ¹     Ò Ò
   ´   ¸
℄¸ µº
            ¼


    Ò Ò
 ´ ℄¸¼µº
    Ò Ò
 ´ Ç Ä℄¸ µ ¹
     Ó ÖØ ´Ç¸ ¸ ½µ¸
       Ò Ò
 ´Ä¸ ¾µ¸
        × ½· ¾º
Bibliografía

 [1] J. A. Alonso.     Introducción a la programación lógica con Prolog, 2006.                    En
       ØØÔ »»ÛÛÛº
׺Ù׺ ×»   ÐÓÒ×Ó»ÔÙ Ð 
 
 ÓÒ ×»¾¼¼ ¹ ÒØ ÔÖÓÐÓ ºÔ .

 [2] J. A. Alonso.       Temas de “Programación declarativa” (2005-06), 2006.                     En
       ØØÔ »»ÛÛÛº
׺Ù׺ ×»   ÐÓÒ×Ó»ÔÙ Ð 
 
 ÓÒ ×»¾¼¼ ¹¼ ¹È ¹Ø Ñ ×ºÔ .

 [3] K. R. Apt. From logic programming to Prolog. Prentice Hall, 1996.

 [4] P. Blackburn, J. Bos, and K. Striegnitz. Learn Prolog Now!, 2001. En Bib y en Red.

 [5] I. Bratko. Prolog Programming for Artificial Intelligence. Addison–Wesley, 3 edition, 2001.

 [6] W. F. Clocksin. Clause and Effect (Prolog Programming for the Working Programmer). Springer–
     Verlag, 1997.

 [7] W. F. Clocksin and C. S. Mellish. Programming in Prolog. Springer–Verlag, 4 edition, 1994.

 [8] M. A. Covington, D. Nute, and A. Vellino. Prolog Programming in Depth. Prentice Hall, 1997.

 [9] Y. Deeville. Logic Programmng (Systematic Program Development). Addison–Wesley, 1990.

[10] J. P. Delahaye. Cours de Prolog avec Turbo Prolog (Eléments fondamentaux). Eyrolles, 1988.

[11] U. Nilsson and J. Maluszynski. Logic, Programming and Prolog.            2 edition, 2000.    En
      ØØÔ »»ÛÛÛº   ºÐ Ùº× » ÙÐ Ò »ÐÔÔ .

[12] R. A. O’Keefe. The Cratf of Prolog. The MIT Press, 1990.

[13] P. Ross. Advanced Prolog: Techniques and Examples. Addison-Wesley, 1989.

[14] P. Schnupp, D. Merritt, and S. S. Muchnick. Adventure in Prolog. Springer–Verlag, 1990.

[15] L. Sterling and E. Shapiro. L’art de Prolog. Masson, 1990.

[16] T. Van Le. Techniques of Prolog Programming (with implementation of logical negation and quanti-
     fied goals). John Wiley, 1993.




                                                107

								
To top