Vous et un ami vous êtes perdus sur la ligne à un concert, et vous ne savez pas lequel d'entre vous est plus avancé. Formellement, chacun a une coordonnée entière et ne peut marcher que vers une coordonnée plus élevée ou rester en place.
En supposant que vous et votre ami suivez exactement le même algorithme (et non, vous ne pouvez pas dire "si (nom ==" R B ") faites quelque chose :)), et la distance initiale entre vous deux était (ce qui n'est pas que vous connaissez).
Quel est l'algorithme qui minimise la distance de marche attendue jusqu'à ce que vous et votre ami vous rencontriez?
Vous pouvez supposer que votre ami et vous-même évoluez à la même vitesse constante.
Un exemple d'algorithme simple serait quelque chose comme:
Au stade (à partir de 0 ):
- Marcher pas à droite wp 1 ou attendre3nunités de temps autrement.
Pour voir cet algorithme, les amis rencontrent la probabilité 1 de considérer ce qui se passe au stade . Même si l'ami qui était x en avance marchait toujours et que l'autre restait toujours en place, la distance entre les deux serait: x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x - 1
Par conséquent, à l' itération , l'ami qui choisit de marcher couvrira une distance de 3 log 3 x + 1 = 3 x , donc avec probabilité 1 , l'ami qui est derrière rattrapera son retard et se rencontrera.
Une optimisation simple (pour réduire la distance de marche) serait, au lieu de marcher pas, marcher c x pas, où est donné par: 2 + 1
D'où le c optimal pour cet algorithme est
Malheureusement, alors que cet algorithme garantit que les amis rencontreront la probabilité 1, la distance de marche attendue est infinie, ce que j'aimerais éviter si possible.
Existe-t-il un algorithme plus efficace?
Réponses:
À chaque étape , les deux amis marcheront 2 k étapes. Si k < log 2 ( x ) + 1 , ils ne se rencontreront pas pendant cette étape, cependant si k > = log 2 ( x ) + 1 , ils se rencontreront si et seulement s'ils ne tirent pas le même nombre. La probabilité que cela ne se produise pas n'est que de 1 /k 2k k<log2(x)+1 k>=log2(x)+1 à chaque étape.1/3
Par conséquent, la distance de marche attendue est (délimitée ci-dessus par):
Ce qui est fini, et égal, si mes mathématiques de serviette sont fiables, à .2⌈log2(x)⌉+3−2≤16x
Soit dit en passant, si est la variable aléatoire représentant la distance parcourue, nous avons toujours que ∀ D > 0 , P ( d > D ) > 0 , c'est-à-dire que la distance est illimitée et peut finir par être arbitrairement élevée. Heureusement, cette probabilité disparaît assez rapidement pour garantir que la somme infinie ∑ ∞ D = 0 P ( d = D ) ⋅ D = E [ d ] converge. Ayant une limite supérieure finie pour dd ∀D>0,P(d>D)>0 ∑∞D=0P(d=D)⋅D=E[d] d est une propriété beaucoup plus solide et je pense qu'il n'est pas possible de trouver une solution satisfaisante.
la source