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