Usted y un amigo se perdieron en la línea en un concierto, y ninguno de los dos está seguro de cuál de ustedes está más adelante. Formalmente, cada uno está en alguna coordenada entera y solo puede caminar hacia una coordenada más alta o permanecer en su lugar.
Suponiendo que usted y su amigo estén siguiendo exactamente el mismo algoritmo (y no, no pueden decir "if (name ==" R B ") hacen algo :)), y la distancia inicial entre ustedes dos fue (que no es conocido por ti).
¿Cuál es el algoritmo que minimiza la distancia de caminata esperada hasta que usted y su amigo se encuentren?
Puede suponer que tanto su amigo como usted se mueven a la misma velocidad constante.
Un ejemplo de algoritmo simple sería algo como:
En la etapa (a partir de ):
- Camina pasos hacia la derecha wp o espereunidades de tiempo de lo contrario.
Para ver este algoritmo hace que los amigos se encuentren con probabilidad 1 considere lo que sucede en la etapa . Incluso si el amigo que estaba paso adelante siempre caminaba y el otro siempre permanecía en su lugar, la distancia entre los dos sería:
Por lo tanto, en la iteración , el amigo que elige caminar cubrirá la distancia de 3 log 3 x + 1 = 3 x , por lo tanto, con probabilidad 1 , el amigo que está detrás se pondrá al día y se encontrarán.
Una optimización simple (para reducir la distancia a pie) sería, en lugar de caminar pasos, caminar c x pasos, donde c viene dada por: 2 + 1
Por lo tanto, la óptima para este algoritmo es c = 3 + √
Desafortunadamente, aunque este algoritmo garantiza que los amigos se encontrarán con la probabilidad 1, la distancia de caminata esperada es infinita, que es algo que me gustaría evitar si es posible.
¿Hay un algoritmo más eficiente?