Ви з другом програли один одного на концерті, і не впевнені, хто з вас попереду. Формально кожен має деяку цілу координату і може йти лише до вищої координати або залишатися на місці.
Якщо припустити, що ви та ваш друг дотримуєтесь точно такого ж алгоритму (і ні, ви можете не сказати "якщо (ім'я ==" R B ") щось робити :)), а початкова відстань між вами двома була (що не вам відомі).
Який алгоритм мінімізує очікувану відстань пішки, поки ви та ваш друг не зустрінетесь?
Ви можете припустити, що і ваш друг, і ви самі рухаєтесь з однаковою постійною швидкістю.
Приклад простого алгоритму - це щось на зразок:
На стадії (починаючи з ):0
- Пройдіть кроки праворуч wp або чекайтеодиниць часу інакше.
Щоб побачити цей алгоритм, змушує друзів зустрічатися з ймовірністю 1 розглянути, що відбувається на етапі . Навіть якщо один , який був й кроком попереду завжди йшов і інший завжди залишався на місці, відстань між ними буде: х + 1 + 3 + 9 + ... + 3 журнал 3 х = 2 х + х - 1
Тому при ітерації друг, який вирішив піти, пройде відстань 3 log 3 x + 1 = 3 x , отже, ймовірність 1 , друг, який позаду, наздожене, і вони зустрінуться.
Проста оптимізація (зменшити відстань пішки) була б замість того, щоб ходити кроки, ходити c x кроками, де c задано: 2 + 1
Отже, оптимальним для цього алгоритму є c = 3 + √
На жаль, хоча цей алгоритм гарантує, що друзі зустрінуться з вірогідністю 1, очікувана піша відстань нескінченна, чого б я хотів уникнути, якщо це можливо.
Чи є більш ефективний алгоритм?