Потерянный в одностороннем концерте

16

Вы и друг потеряли друг друга в очереди на концерт, и никто не уверен, кто из вас еще впереди. Формально каждый из них имеет некоторую целочисленную координату и может идти только к более высокой координате или оставаться на месте.

Предполагая, что вы и ваш друг придерживаетесь одного и того же алгоритма (и нет, вы не можете сказать «если (name ==« R B ») что-то делаете :)), и начальное расстояние между вами было (что не известно вам).x

Каков алгоритм, который минимизирует ожидаемое расстояние ходьбы, пока вы и ваш друг не встретитесь?


Вы можете предположить, что и ваш друг, и вы движетесь с одинаковой постоянной скоростью.


Пример простого алгоритма будет выглядеть примерно так:

  1. На этапе (начиная с 0 ):n0

    • Прогулка шагов к правильному сор 13n или подождите3nединиц времени в противном случае.123n

Чтобы увидеть, что этот алгоритм заставляет друзей встретиться с вероятностью 1, подумайте, что происходит на этапе . Даже если друг, который был на x шаг впереди, всегда шел, а другой всегда оставался на месте, расстояние между ними было бы: x + 1 + 3 + 9 + + 3 log 3 x = 2 x + x - 1(log3x+1)x

x+1+3+9++3log3x=2x+x123x

Следовательно, на итерации друг, который выбирает прогулку, преодолеет расстояние 3 log 3 x + 1 = 3 x , следовательно, с вероятностью 1log3x+13log3x+1=3x , друг, который позади, догонит, и они встретятся.14


Простая оптимизация (для уменьшения пройденного расстояния) состояла бы в том, чтобы вместо шаговых шагов пройти х х шагов, где с определяется как: 2 + 13xcxc

2+1c1=c

Таким образом, оптимальная для этого алгоритма является C = 3 + c c=3+522.618

К сожалению, хотя этот алгоритм гарантирует, что друзья встретятся с вероятностью 1, ожидаемое расстояние ходьбы бесконечно, чего я бы хотел избежать, если это возможно.

Есть ли более эффективный алгоритм?

RB
источник
Когда вы говорите «ожидаемое расстояние ходьбы» - вы имеете в виду в худшем случае, где алгоритм является вероятностным, или вы также предполагаете некоторое распределение на входах? Кроме того - вы требуете, чтобы ваш алгоритм всегда был правильным, или чтобы быть правильным wp 1? (или меньше?) - обратите внимание, что алгоритм, который вы здесь представляете, может никогда не остановиться (но wp 0)
Шал
Это похоже на проблему линейного поиска ( en.wikipedia.org/wiki/Linear_search_problem ).
Юваль Фильмус
2
@Shaull - поскольку оба друга следуют одному и тому же алгоритму, он должен быть вероятностным, иначе они никогда не встретятся. Ожидание превышает рандомизацию алгоритма.
РБ
В своем алгоритме вы имеете в виду прогулку единицу времени вправо с постоянной скоростью C ? Ходьба 2 n шагов может не говорить 2 ^ n раз. 2nC2n
吖 奇 说 АРХИ ШУō
@ 0a-archy - мы предполагаем, что оба движутся с одинаковой скоростью (пусть это будет 1 для этого вопроса). Идея в алгоритме, который я дал, состоит в том, что вы либо проходите2nшагов, либо ждете эквивалентного времени, поэтому каждая итерация начинается одновременно для обоих игроков. steptime unit2n
РБ

Ответы:

4

На шаге нарисуйте случайное число q равномерно между 1 , 2 и 3 .kq123

  • если , пройти 2 k - 1 , подождать 2 k + 1 , пройти 2 k - 1q=12k12k+12k1
  • если , подождите 2 k - 1 , пройдитесь 2 k - 1 , подождите 2 k , пройдитесь 2 k - 1 , подождите 2 k - 1q=22k12k12k2k12k1
  • если , подождите 2 k , пройдите 2 k , подождите 2 kq=32k2k2k

На каждом шаге оба друга пройдут 2 k шагов. Если k < log 2 ( x ) + 1 , они не встретятся на этом шаге, однако, если k > = log 2 ( x ) + 1 , они встретятся тогда и только тогда, когда они не нарисуют одно и то же число. Вероятность того, что этого не происходит только 1 / 3 на каждом шаге.k2kk<log2(x)+1k>=log2(x)+11/3

Следовательно, ожидаемое расстояние ходьбы (ограничено сверху):

2(k=0log2(x)2k+3log2(x)k=log2(x)+1(23)k)

Который конечен и равен, если верить моей математике с салфетками, .2log2(x)+3216x

dD>0,P(d>D)>0D=0P(d=D)D=E[d]d это гораздо более сильное свойство, и я считаю, что невозможно найти решение, удовлетворяющее его.

Дэвид Даррлман
источник