Проблема с прокатом лыж.
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
В информатике проблема аренды лыж — это название класса задач, в которых есть выбор между продолжением оплаты повторяющихся затрат или уплатой единовременных затрат, которые устраняют или уменьшают повторяющиеся затраты. [1]
Проблема
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2020 г. ) |
Многие онлайн-задачи имеют подзадачу, называемую проблемой аренды или покупки. Учитывая высокие первоначальные затраты или менее дорогие повторяющиеся затраты, без знания того, как будут развиваться события в будущем, в какой момент лучше оплатить первоначальные затраты, чтобы избежать дальнейших повторяющихся затрат?
Рассмотрим человека, который решает покататься на лыжах, но на неопределенное количество дней. Прокат лыж стоит 1 доллар в день, а покупка пары лыж — 10 долларов. Если человек заранее знает, сколько дней он хочет кататься на лыжах, то точка безубыточности составит 10 дней. Менее 10 дней предпочтительна аренда, а более 10 дней – покупка. Однако без предварительного знания того, как долго человек будет кататься на лыжах, точка безубыточности неясна. Хороший алгоритм минимизирует соотношение стоимости, когда количество дней заранее известно, к стоимости, когда количество дней заранее неизвестно. [2] Прокат лыж [3] [4] является одним из примеров этого класса проблем.
Алгоритм безубыточности
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2020 г. ) |
Алгоритм безубыточности предписывает арендовать лыжи на 9 дней и купить лыжи утром 10-го дня, если вы еще готовы кататься на лыжах. [5] Если вам придется прекратить кататься на лыжах в течение первых 9 дней, это будет стоить столько же, сколько вы заплатили бы, если бы знали, сколько дней вы будете кататься на лыжах. Если человеку придется прекратить кататься на лыжах после 10-го дня, его затраты составят 19 долларов, что на 90% больше, чем он заплатил бы, если бы заранее знал количество дней, в течение которых он будет кататься на лыжах. Это худший случай для алгоритма безубыточности.
Алгоритм безубыточности известен как лучший детерминированный алгоритм для решения этой задачи.
Рандомизированный алгоритм
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2020 г. ) |
Человек может подбросить монетку. Если выпадает решка, она покупает лыжи на восьмой день; в противном случае она покупает лыжи на 10-й день. Это пример рандомизированного алгоритма . Ожидаемая стоимость не более чем на 80% превышает сумму, которую человек заплатил бы, если бы знал, сколько дней он будет кататься на лыжах, независимо от того, сколько дней он катается на лыжах. В частности, если человек катается на лыжах 10 дней, ее ожидаемая стоимость составит 1/2 [7+10] + 1/2 [9+10] = 18 долларов, всего лишь 80% превышения вместо 90%.
Рандомизированный алгоритм можно понимать как совокупность различных алгоритмов, каждый из которых выполняется с заданной вероятностью. Мы определяем ожидаемый коэффициент конкуренции в данном случае i как:
, где - это коэффициент конкуренции, например, i, учитывая .
Следовательно, коэффициент конкуренции рандомизированного алгоритма определяется наихудшим значением по всем данным случаям. В случае с прокатом лыж подбрасыванием монеты мы отмечаем, что рандомизированный алгоритм имеет 2 возможных ответвления: если монета выпадает орлом, мы покупаем в день 8, в противном случае мы покупаем в день 10. Мы можем назвать ветви и , соответственно. , для .
,
, и
, для .
Таким образом, коэффициент конкуренции рандомизированного алгоритма подбрасывания монеты с прокатом лыж составляет 1,8.
Лучший рандомизированный алгоритм против ничего не замечающего противника состоит в том, чтобы случайным образом выбрать какой-нибудь день i в соответствии со следующим распределением p, арендовать его на i-1 дней и купить лыжи утром дня i, если кто-то еще готов кататься на лыжах. Карлин и др. [3] впервые представил этот алгоритм с распределением где покупка лыж стоит $ и аренда стоит 1 доллар. Его ожидаемая стоимость не превосходит e/(e-1) В 1,58 раза больше, чем заплатили бы, если бы знали, сколько дней придется кататься на лыжах. Ни один рандомизированный алгоритм не сможет добиться большего.
Приложения
[ редактировать ]Этот раздел нуждается в дополнительных цитатах для проверки . ( Июль 2020 г. ) |
- Снупи-кэширование : [3] несколько кэшей используют одно и то же пространство памяти, разделенное на блоки. Когда кеш записывает в блок, кеш-память, разделяющая этот блок, тратит 1 цикл шины на обновление. Эти кеши могут сделать блок недействительным, чтобы избежать затрат на обновление. Но существует штраф в p циклов шины за аннулирование блока из кэша, которому вскоре после этого потребуется доступ к нему. Мы можем разбить последовательности запросов записи для нескольких кешей на последовательности запросов для двух кешей. Один кэш выполняет последовательность операций записи в блок. Другой кэш должен решить, следует ли обновляться, оплачивая 1 цикл шины за операцию, или сделать блок недействительным, заплатив p циклов шины за будущий запрос на чтение самого себя. Проблема с двумя кэшами и одним блоком слежения за кешированием — это всего лишь проблема проката лыж.
- TCP-подтверждение : [6] Поток пакетов прибывает в пункт назначения и требует подтверждения протоколом TCP по прибытии. Однако мы можем использовать один пакет подтверждения для одновременного подтверждения нескольких ожидающих пакетов, тем самым уменьшая накладные расходы на подтверждения. С другой стороны, слишком большая задержка подтверждений может помешать механизмам контроля перегрузки TCP, и поэтому мы не должны допускать слишком большого увеличения задержки между временем прибытия пакета и временем отправки подтверждения. Карлин и др. [7] описал семейство входных данных с одним параметром, называемое базовыми входными данными, и показал, что при ограничении этими базовыми входными данными проблема подтверждения TCP ведет себя так же, как проблема аренды лыж.
- Планирование общего времени завершения : [2] Мы хотим запланировать задания с фиксированным временем обработки на m одинаковых машинах. Время обработки задания j равно p j . Каждое задание становится известно планировщику в момент его выпуска r j . Цель состоит в том, чтобы минимизировать сумму времени завершения для всех заданий. Упрощенная задача — это одна машина со следующими входными данными: в момент времени 0 поступает задание со временем обработки 1; k заданий со временем обработки 0 приходят в неизвестное время. Нам нужно выбрать время начала для первого задания. Ожидание требует затрат 1 доллара за единицу времени, однако запуск первого задания до того, как последующие k заданий могут повлечь за собой дополнительные затраты в размере k в худшем случае. Эту упрощенную задачу можно рассматривать как непрерывную версию проблемы аренды лыж.
- Рефакторинг против работы с плохим дизайном . При разработке программного обеспечения инженерам приходится выбирать между трудностями и риском ошибок при работе со слишком сложным дизайном и уменьшением сложности проекта перед внесением изменений. Дополнительные затраты на каждое изменение в старом дизайне — это стоимость «аренды», стоимость рефакторинга — это стоимость «покупки». «Сколько раз приходится работать с плохим дизайном, прежде чем его исправить?» проблема с прокатом лыж.
См. также
[ редактировать ]- Противник (онлайн-алгоритм)
- Конкурентный анализ (онлайн-алгоритм)
- Онлайн-алгоритм
- Оптимальная остановка
- Доказательство в худшем случае
Ссылки
[ редактировать ]- ^ Блюм, Аврим. «cos 521: Лекция 24 по разработке расширенных алгоритмов: Онлайн-алгоритмы» (PDF) . Компьютерные науки Принстонского университета . Принстонский университет . Проверено 16 июля 2022 г.
- ^ Jump up to: а б Стивен С. Сейден. Игра в угадайку и рандомизированные онлайн-алгоритмы. Ежегодный симпозиум ACM по теории вычислений, 2000 г. http://portal.acm.org/citation.cfm?id=335385.
- ^ Jump up to: а б с А. Р. Карлин , М. С. Манасс, Л. А. МакГеоч и С. Овицкий. Конкурентные рандомизированные алгоритмы для решения неоднородных задач. В материалах первого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам, Сан-Франциско, Калифорния, 22–24 января 1990 г., стр. 301–309. Также в Algorithmica, 11(6): 542-571, 1994. http://courses.csail.mit.edu/6.895/fall03/handouts/papers/karlin.pdf.
- ^ Клэр Матье . Брауновский университет. Примечание к лекции: http://www.cs.brown.edu/~claire/Talks/skirental.pdf
- ^ А. Р. Карлин , М. Манасс, Л. Рудольф и Д. Слиатор. Конкурентное шпионское кэширование. Алгоритмика, 3(1): 79-119, 1988.
- ^ Дули, Дэниел Р.; Голдман, Салли А .; Скотт, Стивен Д. (1998). «Динамическая задержка подтверждения TCP: теория и практика (расширенное резюме)». В Виттере, Джеффри Скотт (ред.). Материалы тридцатого ежегодного симпозиума ACM по теории вычислений, Даллас, Техас, США, 23-26 мая 1998 г. {АКМ}. стр. 389–398. дои : 10.1145/276698.276792 .
- ^ Анна Р. Карлин , Клэр Кеньон и Дана Рэндалл. Динамическое TCP-подтверждение и другие истории про e/(e-1). Тридцать третий ежегодный симпозиум ACM по теории вычислений (STOC), 2001. Algorithmica. http://www.cs.brown.edu/people/claire/Publis/ACKpaper.ps