Você e um amigo se perderam na fila para um concerto, e nenhum deles tem certeza de qual deles está mais à frente. Formalmente, cada um está em alguma coordenada inteira e só pode caminhar em direção a uma coordenada mais alta ou permanecer no local.
Supondo que você e seu amigo estejam seguindo exatamente o mesmo algoritmo (e não, você não pode dizer "if (name ==" R B ") faça algo :)), e a distância inicial entre vocês dois foi (que não é conhecido por você).
Qual é o algoritmo que minimiza a curta distância esperada até você e seu amigo se encontrarem?
Você pode assumir que seu amigo e você estão se movendo na mesma velocidade constante.
Um exemplo de algoritmo simples seria algo como:
No estágio (a partir de ):0
- Ande etapas para a direita wp ou aguarde unidades de tempo.1 3n
Para ver esse algoritmo faz com que os amigos se encontrem com probabilidade 1, considere o que acontece no estágio . Mesmo que o amigo que estava passo à frente sempre andasse e o outro sempre estivesse no lugar, a distância entre os dois seria: x x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x - 1
Portanto, na , o amigo que escolher andar percorrerá a distância de , portanto, com probabilidade , o amigo que está por trás alcançará e eles se encontrarão.3 log 3 x + 1 = 3 x 1
Uma otimização simples (para reduzir a distância a pé) seria, em vez de andar etapas, andar etapas, em que é dada por: c x c 2 + 1
Portanto, o ideal para esse algoritmo é
Infelizmente, embora esse algoritmo garanta que os amigos encontrarão a probabilidade 1, a distância esperada é infinita, o que é algo que eu gostaria de evitar, se possível.
Existe um algoritmo mais eficiente?