Вы и друг потеряли друг друга в очереди на концерт, и никто не уверен, кто из вас еще впереди. Формально каждый из них имеет некоторую целочисленную координату и может идти только к более высокой координате или оставаться на месте.
Предполагая, что вы и ваш друг придерживаетесь одного и того же алгоритма (и нет, вы не можете сказать «если (name ==« R B ») что-то делаете :)), и начальное расстояние между вами было (что не известно вам).
Каков алгоритм, который минимизирует ожидаемое расстояние ходьбы, пока вы и ваш друг не встретитесь?
Вы можете предположить, что и ваш друг, и вы движетесь с одинаковой постоянной скоростью.
Пример простого алгоритма будет выглядеть примерно так:
На этапе (начиная с 0 ):
- Прогулка шагов к правильному сор 1 или подождите3nединиц времени в противном случае.
Чтобы увидеть, что этот алгоритм заставляет друзей встретиться с вероятностью 1, подумайте, что происходит на этапе . Даже если друг, который был на x шаг впереди, всегда шел, а другой всегда оставался на месте, расстояние между ними было бы: x + 1 + 3 + 9 + … + 3 log 3 x = 2 x + x - 1
Следовательно, на итерации друг, который выбирает прогулку, преодолеет расстояние 3 log 3 x + 1 = 3 x , следовательно, с вероятностью 1 , друг, который позади, догонит, и они встретятся.
Простая оптимизация (для уменьшения пройденного расстояния) состояла бы в том, чтобы вместо шаговых шагов пройти х х шагов, где с определяется как: 2 + 1
Таким образом, оптимальная для этого алгоритма является C = 3 + √
К сожалению, хотя этот алгоритм гарантирует, что друзья встретятся с вероятностью 1, ожидаемое расстояние ходьбы бесконечно, чего я бы хотел избежать, если это возможно.
Есть ли более эффективный алгоритм?
Ответы:
На каждом шаге оба друга пройдут 2 k шагов. Если k < log 2 ( x ) + 1 , они не встретятся на этом шаге, однако, если k > = log 2 ( x ) + 1 , они встретятся тогда и только тогда, когда они не нарисуют одно и то же число. Вероятность того, что этого не происходит только 1 / 3 на каждом шаге.k 2k k<log2(x)+1 k>=log2(x)+1 1/3
Следовательно, ожидаемое расстояние ходьбы (ограничено сверху):
Который конечен и равен, если верить моей математике с салфетками, .2⌈log2(x)⌉+3−2≤16x
источник