Un problema de saltamontes en cuarentena

Por Adán Medrano

Nota de Leo: Esta es una entrada invitada de Adán Medrano Martín del Campo. Nos platicará de un problema de saltamontes (de hecho, de dos) y de funciones en los enteros.

TuCasa

TuCasa

TuCasa

Esto nos aconsejó muy atinadamente el Dr. Hugo López-Gatell Ramírez hace unos pocos días, ya que México y la mayoría del mundo está en cuarentena a causa de la enfermedad COVID19.

Cada vez más y más personas buscamos nuevas actividades para hacer en casa. Junto con Leo Martínez, David Torres (aka Gato) y Pablo Meré, administro el grupo de facebook InsOMMnia, el cual sirve de plataforma para discutir y realizar actividades olímpicamente productivas. A modo de amenizar la cuarentena, hice un video en vivo explicando la solución a un problema que me pareció particularmente agradable por varias razones:

En esta entrada, quisiera platicarles el problema y su solución. Antes de esto, recordemos el problema que apareció en la OMM 2019.

La Momia: OMM 2019

Problema 5. Sean a>b dos números enteros positivos, primos relativos entre sí. En un camino recto, en el cual está marcado cada centímetro n, para todo entero n, un saltamontes hará algunos saltos comenzando en la marca de 0 cm y siguiendo las siguientes reglas:

  • Cuando cierto minuto sea múltiplo de a y no múltiplo de b, saltará a centímetros hacia adelante.
  • Cuando cierto minuto sea múltiplo de b y no múltiplo de a, saltará b centímetros hacia atrás.
  • Cuando cierto minuto sea múltiplo de a y múltiplo de b, saltará ab centímetros hacia adelante.
  • Cuando un minuto no es múltiplo de a ni de b, el saltamontes no se mueve del lugar en el que está.

Determina todas las marcas a las que puede llegar el saltamontes.

Nota de Leo: Este es un excelente problema para explorarse buscando un patrón.

Sin dar un spoiler de la solución a dicho problema, el enunciado puede traducirse al siguiente problema de equivalente.

Problema 5′: Sean a>b enteros primos positivos primos relativos entre sí y sea f:NZ la función dada por
f(n)=anabnb.
Determina la imagen de f.

Uno puede jugar un poco con la función definida arriba, y llegar a la respuesta usando propiedades de dicha función. El objetivo de mostrarles este enunciado equivalente, es que muchas veces ciertos problemas que hablan de ciertos procesos pueden describirse (y resolverse) en términos de funciones construidas apropiadamente.

El problema que resolveremos cae en la categoría opuesta, pues es un problema sobre una función, al cual se le puede dar una interpretación de un saltamontes haciendo… algo.

El Vampiro: Romania TST 2019

Problema: Sean a<b<c enteros positivos y sea f:NN una función dada por
f(n)={nan>cf(f(n+b))nc
Determina la cantidad de enteros positivos n tales que f(n)=n.

«Y eso qué tiene que ver con un saltamontes?» podrías pensar en este momento. ¡Ha ha! Mira ahora este problema de saltamontes.

Problema’: Sean a<b<c enteros positivos. Un saltamontes se encuentra sobre un entero n>0 en la recta real positiva, donde hay pasto en los enteros positivos menores o iguales que c, y lava en los enteros mayores a c. Inicialmente, el saltamontes tiene una vida, y mientras el saltamontes tenga al menos una vida, se dispondrá a saltar de la siguiente manera:

  • Si el saltamontes se encuentra en el pasto, el saltamontes gana una vida y salta b enteros hacia adelante.
  • Si el saltamontes se encuentra en la lava, el saltamontes pierde una vida y salta a enteros hacia atrás.

Cuando el saltamontes tiene 0 vidas, este muere y deja de moverse. Determina todas las posiciones iniciales del saltamontes tal que el saltamontes morirá en su posición inicial.

Saltamontes, lava, pasto y vidas
Problema visto como vidas, pasto, lava y saltamontes.

A que no se lo esperaban. (Honestamente yo tampoco, pero últimamente tengo más tiempo libre). Tal vez este problema inspire algún mini juego en alguna entrega futura de The Legend of Zelda.

Y, ¿cómo resolvemos algo así?

El Santo: venciendo a la momia y al vampiro

Spoiler Alert:

A continuación resolveremos los problemas, en caso que estés intentándolos y no quieras ver sus soluciones

La clave para ambos problemas es: ¡usar residuos y propiedades de las funciones en juego!

Solución al problema 5 del nacional

Notemos que al dividir n entre a y entre b, obtenemos
n=ana+ra y n=bnb+rb
donde

0raa1 y 0rbb1
son precisamente los residuos que resultan de la división. Notemos entonces que

f(n)=anabnb=(nbnb)(nana)=rbra

por lo que f(n) simplemente depende de la diferencia entre rb y ra. Por el Teorema Chino del Residuo, o simplemente mirando exclusivamente a los múltiplos de a y de b entre 1 y ab, aparecen como diferencia todos los posibles enteros en el intervalo

[a+1,b1]
lo cual compone la imagen de f, que es lo que buscábamos.

◻

¡Genial! Mirar los residuos fue clave en el problema de saltamontes del nacional. En particular, no lo usamos en nuestra solución, pero f resulta ser una función periódica, con periodo ab. Esto es gracias a que a y b son primos relativos, y por lo tanto cada pareja de residuos ra,rb se repiten exactamente cada ab enteros.

La periodicidad será una propiedad clave en la solución del problema del selectivo rumano. Comenzamos mostrando una exploración del problema.

Exploración del problema del selectivo rumano

Los puntos n tales que f(n)=n son llamados puntos fijos. En la formulación como problema de saltamontes, corresponden a que el saltamontes muera justo donde empezó: «muera» es que ya no haya f, empieza con una vida, osea una f.

Notemos que si n>c, entonces n no es un punto fijo, pues

f(n)=nan.
Esto nos dice que los puntos fijos son menores o iguales que c. Ahora, notemos que (recordemos que a<b<c)

f(c)=f(f(c+b))=f(c+ba)=c+b2a

y esto nos lleva a considerar que números cercanos a c, dentro de un intervalo de tamaño ba, tendrán un valor similar. En efecto, si 0r<ba entonces

f(cr)=f(f(cr+b))=f(cr+ba)=cr+b2a.
Ahora, veamos que restando ba a c, perdemos este patrón, pues

f(cb+a)=f(f(c+a))=f(c)=c+b2a
¡Hemos regresado a un valor ya conocido! Esto nos lleva a la hipótesis de que f es periódica con periodo ba en el intervalo [1,c]. Formalicemos estas observaciones.

Un par de lemas para el problema rumano

La manera de enunciar formalmente las observaciones anteriores esto es, por ejemplo, via el siguiente lema:

Lema 1: Sea n=crk(ba) un entero positivo menor o igual que c donde k0 y 0r<ba. Entonces
f(n)=cr+b2a.

(Prueba del lema 1): Procederemos por descenso en los enteros positivos. Construiremos una secuencia de valores iguales, con distinta cantidad de f’s compuestas, de la siguiente manera: comenzamos con
z0=n=crk(ba)
y definimos

zi+1={ziazi>czi+bzic

para todo i0. Además, escribiremos

zi=cryib+xia
donde x0=y0=k, y ambas secuencias {xi} y {yi} decrecen, definiendo

xi+1={xi1zi>cxizic y

yi+1={yizi>cyi1zic
Habiendo definido esto, tenemos que

f(n)=f(1+xiyi)(zi)
para todo i0.


Observemos que si yi=1 entonces zi=cr+b+xia>c si se cumple que xi1. Más aún, observemos el siguiente lema:

Lema 2: Para todo i0, tenemos que yi0 implica que yi+1xi+1.

(Prueba del lema 2): Procedemos por inducción. Para i=0 esto es claro, pues
y1=k1<k=x1.
Ahora, supongamos que xiyi0. Si xi>yi entonces

xi+1xi1yiyi+1.
Si xi=yi entonces tenemos que

zi=cryi(ba)c
por lo que zi+1=zi+b y esto implica que

xi+1=xi>yi1=yi+1.

◻

Hemos probado pues que las secuencias {xi} y {yi} decrecen, y mientras yi0, tendremos que xi+1yi+1. ¿Cómo hemos de proseguir con esto?

La clave es notar la existencia de la menor m tal que ym=1, donde es claro que ym1=0. Si m=1 entonces y0=x0=k=0, y ya hemos cubierto ese caso arriba, así que asumiremos que m>1. Tenemos que ym20 por lo que, por el lema 2,

xm1ym1=0
y como ym=ym11 entonces xm=xm10. Esto implica que

zm=cr+b+xmacr+b>c
por lo que para todo j>m se tiene que xj+1=xj1

zm+xm+1=cr+ba
y tenemos que ym+xm+1=xm+xm+1=1, lo que muestra que

f(n)=f(zm+xm+1)=f(cr+ba)=cr+b2a.

◻

Juntando todo

Vaya, después de arduo trabajo hemos mostrado la periodicidad de f. Lo que falta únicamente, es usar esto para hacer una conclusión sobre los puntos fijos. Notemos que los únicos valores de f en el dominio [1,c] son cr+b2a para 0r<ba, así que solo estos valores pueden ser puntos fijos de f. De hecho, cada uno de esos valores es un punto fijo si y solo si podemos encontrar una k0 tal que

crk(ba)=cr+b2a, lo cual sucede si y sólo si (k+1)(ba)=a, o bien justo cuando baa, por lo que si ba divide a a, todos nuestros ba valores son puntos fijos, y si ba no divide a a, ningún valor es un punto fijo. Hemos concluido entonces.

◻

Antes de regresar a la cuarentena

Espero que hayan pasado un rato agradable pensando en este problema, y espero que hayan entendido 4 lecciones:

  • Quédate en casa
  • Quédate en casa
  • Quédate en casa
  • Es una buena idea usar residuos y secuencias jugando con enteros.

Con esto me despido y, ¡hasta la próxima!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.