SlideShare a Scribd company logo
с/к “Эффективные алгоритмы”
      Лекция 21: Алгоритмы, обрабатывающие вход по
                     мере поступления

                                      А. Куликов

                             Computer Science клуб при ПОМИ
                           http://logic.pdmi.ras.ru/∼infclub/




А. Куликов (CS клуб при ПОМИ)       21. Online алгоритмы        1 / 42
План лекции



1   Введение




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   2 / 42
План лекции



1   Введение


2   Задача кэширования




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   2 / 42
План лекции



1   Введение


2   Задача кэширования


3   Задача о покрытии множествами




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   2 / 42
План лекции



1   Введение


2   Задача кэширования


3   Задача о покрытии множествами




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   3 / 42
Введение


Введение




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   4 / 42
Введение


Введение
      Все рассмотренные нами до сегодняшнего дня алгоритмы
      получали свои входные данные сразу.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы         4 / 42
Введение


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




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              4 / 42
Введение


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




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              4 / 42
Введение


Введение
      Все рассмотренные нами до сегодняшнего дня алгоритмы
      получали свои входные данные сразу.
      На практике же сущесвуют задачи, которые нужно решать, не
      зная заранее все входные данные.
      Например, системная программа, контролирующая работу
      операционной системы, должна производить некоторые действия
      (принимать решения, записывать что-то на выход) до того, как
      поступят все данные.
      Такие алгоритмы называются алгоритмами, работающими в
      реальном времени, или online-алгоритмами.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              4 / 42
Оценка эффективности



Оценка эффективности




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   5 / 42
Оценка эффективности



Оценка эффективности
      Как правило, online-алгоритм получает последовательность
      запросов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             5 / 42
Оценка эффективности



Оценка эффективности
      Как правило, online-алгоритм получает последовательность
      запросов.
      По каждому из запросов он должен предоставить некоторый
      сервис до того, как получит следующий запрос.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             5 / 42
Оценка эффективности



Оценка эффективности
      Как правило, online-алгоритм получает последовательность
      запросов.
      По каждому из запросов он должен предоставить некоторый
      сервис до того, как получит следующий запрос.
      Обычно есть несколько возможностей предоставить сервис,
      каждой из которых сопоставлена некоторая стоимость.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             5 / 42
Оценка эффективности


Определение




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   6 / 42
Оценка эффективности


Определение
      Online алгоритм A называется c-оптимальным (c-competitive),
      если для любой последовательности запросов r и любого
      алгоритма B, которому вся последовательност запросов дается
      сразу,
                         costA (r ) ≤ c · costB (r ) + c1 .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                6 / 42
Оценка эффективности


Определение
      Online алгоритм A называется c-оптимальным (c-competitive),
      если для любой последовательности запросов r и любого
      алгоритма B, которому вся последовательност запросов дается
      сразу,
                         costA (r ) ≤ c · costB (r ) + c1 .


      Коэффициентом оптимальности (competitiveness coefficient) cA
      алгоритма A называется инфимум таких c, что A c-оптимален.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 6 / 42
Аренда лыж

Аренда лыж




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.
      Вы решили кататься, пока позволяет погода, поэтому заранее не
      знаете, сколько именно (вы не верите прогнозам погоды).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.
      Вы решили кататься, пока позволяет погода, поэтому заранее не
      знаете, сколько именно (вы не верите прогнозам погоды).
      У вас нет лыж, но есть две возможности: арендовать лыжи за 10
      руб. в сутки или купить лыжи за 150 руб.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.
      Вы решили кататься, пока позволяет погода, поэтому заранее не
      знаете, сколько именно (вы не верите прогнозам погоды).
      У вас нет лыж, но есть две возможности: арендовать лыжи за 10
      руб. в сутки или купить лыжи за 150 руб.
      Если вы купите лыжи в первый же день, а на следующий день все
      расстает, вы потратите много денег.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.
      Вы решили кататься, пока позволяет погода, поэтому заранее не
      знаете, сколько именно (вы не верите прогнозам погоды).
      У вас нет лыж, но есть две возможности: арендовать лыжи за 10
      руб. в сутки или купить лыжи за 150 руб.
      Если вы купите лыжи в первый же день, а на следующий день все
      расстает, вы потратите много денег.
      С другой стороны, если вы решите каждый день брать лыжи на
      прокат, то за два месяца вы потратите стоимость четырех пар
      лыж.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              7 / 42
Аренда лыж

Аренда лыж
      Представьте себя на горнолыжном курорте.
      Вы решили кататься, пока позволяет погода, поэтому заранее не
      знаете, сколько именно (вы не верите прогнозам погоды).
      У вас нет лыж, но есть две возможности: арендовать лыжи за 10
      руб. в сутки или купить лыжи за 150 руб.
      Если вы купите лыжи в первый же день, а на следующий день все
      расстает, вы потратите много денег.
      С другой стороны, если вы решите каждый день брать лыжи на
      прокат, то за два месяца вы потратите стоимость четырех пар
      лыж.
      Что же вам делать?


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              7 / 42
Поиск припаркованной машины




Поиск припаркованной машины




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   8 / 42
Поиск припаркованной машины




Поиск припаркованной машины
      Рассеянный профессор, выйдя из института, осознал, что не
      помнит, где припарковал свою машину.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              8 / 42
Поиск припаркованной машины




Поиск припаркованной машины
      Рассеянный профессор, выйдя из института, осознал, что не
      помнит, где припарковал свою машину.
      Будем считать, что здание института круглое и машина
      припаркована рядом с ним.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              8 / 42
Поиск припаркованной машины




Поиск припаркованной машины
      Рассеянный профессор, выйдя из института, осознал, что не
      помнит, где припарковал свою машину.
      Будем считать, что здание института круглое и машина
      припаркована рядом с ним.
      Что же делать профессору?




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              8 / 42
Online-алгоритм


Online-алгоритм




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   9 / 42
Online-алгоритм


Online-алгоритм
      Заметим, что online-алгоритм для задачи аренды лыж полностью
      задается днем N, в который нужно купить лыжи (после этого
      платить не нужно).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            9 / 42
Online-алгоритм


Online-алгоритм
      Заметим, что online-алгоритм для задачи аренды лыж полностью
      задается днем N, в который нужно купить лыжи (после этого
      платить не нужно).
      Итак, какое же N оптимально?




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            9 / 42
Online-алгоритм


Online-алгоритм
      Заметим, что online-алгоритм для задачи аренды лыж полностью
      задается днем N, в который нужно купить лыжи (после этого
      платить не нужно).
      Итак, какое же N оптимально?
      Если N мало, мы рискуем купить лыжи и уехать с ними на
      следующий день домой.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            9 / 42
Online-алгоритм


Online-алгоритм
      Заметим, что online-алгоритм для задачи аренды лыж полностью
      задается днем N, в который нужно купить лыжи (после этого
      платить не нужно).
      Итак, какое же N оптимально?
      Если N мало, мы рискуем купить лыжи и уехать с ними на
      следующий день домой.
      Если же N велико, мы рискуем прокатать до покупки несколько
      стоимостей лыж.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            9 / 42
2-оптимальный online-алгоритм




2-оптимальный online-алгоритм




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   10 / 42
2-оптимальный online-алгоритм




2-оптимальный online-алгоритм
      2-оптимальный алгоритм: брать лыжи в прокат первые 14 дней, а
      на 15-й день купить их.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            10 / 42
2-оптимальный online-алгоритм




2-оптимальный online-алгоритм
      2-оптимальный алгоритм: брать лыжи в прокат первые 14 дней, а
      на 15-й день купить их.
      Легко видеть, что данный алгоритм 2-оптимален.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            10 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   11 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины
      Рассмотрим такой алгоритм: профессор сходит направо на
      расстояние 1, потом вернется и сходит налево на расстояние 2,
      потом опять вернется и сходит направо на расстояние 4, и так
      далее до тех пор, пока не найдется машина.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              11 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины
      Рассмотрим такой алгоритм: профессор сходит направо на
      расстояние 1, потом вернется и сходит налево на расстояние 2,
      потом опять вернется и сходит направо на расстояние 4, и так
      далее до тех пор, пока не найдется машина.
      Покажем, что данный алгоритм 9-оптимален.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              11 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины
      Рассмотрим такой алгоритм: профессор сходит направо на
      расстояние 1, потом вернется и сходит налево на расстояние 2,
      потом опять вернется и сходит направо на расстояние 4, и так
      далее до тех пор, пока не найдется машина.
      Покажем, что данный алгоритм 9-оптимален.
      Неприятнее всего профессору тогда, когда он не дошел
      маленького  до своей машины на одной из итераций.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              11 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины
      Рассмотрим такой алгоритм: профессор сходит направо на
      расстояние 1, потом вернется и сходит налево на расстояние 2,
      потом опять вернется и сходит направо на расстояние 4, и так
      далее до тех пор, пока не найдется машина.
      Покажем, что данный алгоритм 9-оптимален.
      Неприятнее всего профессору тогда, когда он не дошел
      маленького  до своей машины на одной из итераций.
      В такой ситуации ему придется вернуться назад, сходить в
      противоположную сторону и только потом найти машину.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              11 / 42
Online-алгоритм для поиска припаркованной машины
Online-алгоритм для поиска припаркованной машины
      Рассмотрим такой алгоритм: профессор сходит направо на
      расстояние 1, потом вернется и сходит налево на расстояние 2,
      потом опять вернется и сходит направо на расстояние 4, и так
      далее до тех пор, пока не найдется машина.
      Покажем, что данный алгоритм 9-оптимален.
      Неприятнее всего профессору тогда, когда он не дошел
      маленького  до своей машины на одной из итераций.
      В такой ситуации ему придется вернуться назад, сходить в
      противоположную сторону и только потом найти машину.
      Пусть расстояние до машины равно 2i+1 + . Тогда ему придется
      пройти

      2·(1+2+· · ·+2i+2 )+2i+1 + = 2·(2i+3 −1)+2i+1 + = 9·2i+1 +−2.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 11 / 42
План лекции



1   Введение


2   Задача кэширования


3   Задача о покрытии множествами




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   12 / 42
Задача кэширования (paging problem)
Задача кэширования (paging problem)




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   13 / 42
Задача кэширования (paging problem)
Задача кэширования (paging problem)
      У компьютера есть два вида памяти: дисковая, большая по
      объему, но медленная, и оперативная, быстрая, но меньше по
      объему.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы               13 / 42
Задача кэширования (paging problem)
Задача кэширования (paging problem)
      У компьютера есть два вида памяти: дисковая, большая по
      объему, но медленная, и оперативная, быстрая, но меньше по
      объему.
      Все операции над данными (в частности, запуск программ)
      производятся в оперативной памяти; дисковая память
      используется лишь для их хранения.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы               13 / 42
Задача кэширования (paging problem)
Задача кэширования (paging problem)
      У компьютера есть два вида памяти: дисковая, большая по
      объему, но медленная, и оперативная, быстрая, но меньше по
      объему.
      Все операции над данными (в частности, запуск программ)
      производятся в оперативной памяти; дисковая память
      используется лишь для их хранения.
      Если обращения к одному и тому же месту дисковой памяти
      повторяются, можно сэкономить время на том, что выделить в
      оперативной памяти определенное место (кэш), в которой
      сохранять считанные данные.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы               13 / 42
Задача кэширования (paging problem)
Задача кэширования (paging problem)
      У компьютера есть два вида памяти: дисковая, большая по
      объему, но медленная, и оперативная, быстрая, но меньше по
      объему.
      Все операции над данными (в частности, запуск программ)
      производятся в оперативной памяти; дисковая память
      используется лишь для их хранения.
      Если обращения к одному и тому же месту дисковой памяти
      повторяются, можно сэкономить время на том, что выделить в
      оперативной памяти определенное место (кэш), в которой
      сохранять считанные данные.
      Поскольку объем кэша ограничен, периодически придется стирать
      из него данные (записывать на их место другие); качество
      алгоритма определяется тем, насколько он сможет предугадать,
      какие данные еще понадобятся (и их не следует стирать), а
      какие — нет.
А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы               13 / 42
Формальная постановка задачи

Формальная постановка задачи




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   14 / 42
Формальная постановка задачи

Формальная постановка задачи
      Вся память (и дисковая, и оперативная) разбита на блоки равной
      длины.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             14 / 42
Формальная постановка задачи

Формальная постановка задачи
      Вся память (и дисковая, и оперативная) разбита на блоки равной
      длины.
      Блоки пронумерованы, причем кэш состоит из k блоков, а диск —
      из t блоков.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             14 / 42
Формальная постановка задачи

Формальная постановка задачи
      Вся память (и дисковая, и оперативная) разбита на блоки равной
      длины.
      Блоки пронумерованы, причем кэш состоит из k блоков, а диск —
      из t блоков.
      На очередном шаге к нам поступает запрос на какой-то блок с
      диска; если этот блок в кэше уже имеется, нам достаточно
      сообщить его номер в кэше; если нет, нам надо предварительно
      решить, в какое место кэша записать этот блок и сделать это,
      считав блок с диска.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             14 / 42
Формальная постановка задачи

Формальная постановка задачи
      Вся память (и дисковая, и оперативная) разбита на блоки равной
      длины.
      Блоки пронумерованы, причем кэш состоит из k блоков, а диск —
      из t блоков.
      На очередном шаге к нам поступает запрос на какой-то блок с
      диска; если этот блок в кэше уже имеется, нам достаточно
      сообщить его номер в кэше; если нет, нам надо предварительно
      решить, в какое место кэша записать этот блок и сделать это,
      считав блок с диска.
      Время работы алгоритма измеряется количеством считываний с
      диска.



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             14 / 42
Формальная постановка задачи

Формальная постановка задачи
      Вся память (и дисковая, и оперативная) разбита на блоки равной
      длины.
      Блоки пронумерованы, причем кэш состоит из k блоков, а диск —
      из t блоков.
      На очередном шаге к нам поступает запрос на какой-то блок с
      диска; если этот блок в кэше уже имеется, нам достаточно
      сообщить его номер в кэше; если нет, нам надо предварительно
      решить, в какое место кэша записать этот блок и сделать это,
      считав блок с диска.
      Время работы алгоритма измеряется количеством считываний с
      диска.
      Будем считать, что в начальный момент времени кэш пуст.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             14 / 42
Известные эвристики


Известные эвристики




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   15 / 42
Известные эвристики


Известные эвристики
      Когда приходит запрос на блок, которого нет в кэше,
      online-алгоритму приходится стереть какой-нибудь блок из кэша и
      на его место записать запрошенный блок.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              15 / 42
Известные эвристики


Известные эвристики
      Когда приходит запрос на блок, которого нет в кэше,
      online-алгоритму приходится стереть какой-нибудь блок из кэша и
      на его место записать запрошенный блок.
      Стандартные эвристики выбора такого блока:




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              15 / 42
Известные эвристики


Известные эвристики
      Когда приходит запрос на блок, которого нет в кэше,
      online-алгоритму приходится стереть какой-нибудь блок из кэша и
      на его место записать запрошенный блок.
      Стандартные эвристики выбора такого блока:
      Least Recently Used, LRU: стереть блок, последний запрос на
                   которой был раньше всего.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                15 / 42
Известные эвристики


Известные эвристики
      Когда приходит запрос на блок, которого нет в кэше,
      online-алгоритму приходится стереть какой-нибудь блок из кэша и
      на его место записать запрошенный блок.
      Стандартные эвристики выбора такого блока:
      Least Recently Used, LRU: стереть блок, последний запрос на
                      которой был раньше всего.
      First-in, First-out, FIFO: стереть блок, находящийся в кэше
                      дольше всего.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                15 / 42
Известные эвристики


Известные эвристики
      Когда приходит запрос на блок, которого нет в кэше,
      online-алгоритму приходится стереть какой-нибудь блок из кэша и
      на его место записать запрошенный блок.
      Стандартные эвристики выбора такого блока:
      Least Recently Used, LRU: стереть блок, последний запрос на
                      которой был раньше всего.
      First-in, First-out, FIFO: стереть блок, находящийся в кэше
                      дольше всего.
      Least Frequently Used, LFU: стереть блок, который запрашивался
                      реже всего.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              15 / 42
Оптимальный offline-алгоритм


Алгоритм MIN
При запросе блока, которого нет в кэше, стереть из кэша тот блок,
запрос на который будет в будущем позже всего.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                16 / 42
Оптимальный offline-алгоритм


Алгоритм MIN
При запросе блока, которого нет в кэше, стереть из кэша тот блок,
запрос на который будет в будущем позже всего.

Упражнения
Пусть диск состоит из t = k + 1 блока.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                16 / 42
Оптимальный offline-алгоритм


Алгоритм MIN
При запросе блока, которого нет в кэше, стереть из кэша тот блок,
запрос на который будет в будущем позже всего.

Упражнения
Пусть диск состоит из t = k + 1 блока.
      Показать, что для любого детерминированного offline-алгоритма
      A для задачи кэширования существует последовательность из N
      запросов r , такая что costA (r ) = N.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                16 / 42
Оптимальный offline-алгоритм


Алгоритм MIN
При запросе блока, которого нет в кэше, стереть из кэша тот блок,
запрос на который будет в будущем позже всего.

Упражнения
Пусть диск состоит из t = k + 1 блока.
      Показать, что для любого детерминированного offline-алгоритма
      A для задачи кэширования существует последовательность из N
      запросов r , такая что costA (r ) = N.
      Показать, что для любой последовательности из N запросов r
      costMIN (r ) = N/k.



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                16 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   17 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.

Идеи доказательства




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   17 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.

Идеи доказательства
      Мы покажем, что существует offline-алгоритм B и
      последовательность запросов r со следующими условиями.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы           17 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.

Идеи доказательства
      Мы покажем, что существует offline-алгоритм B и
      последовательность запросов r со следующими условиями.
      Последовательность делится на периоды, где под периодом
      понимается максимальная последовательность, содержащая
      запросы на k различных блоков.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            17 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.

Идеи доказательства
      Мы покажем, что существует offline-алгоритм B и
      последовательность запросов r со следующими условиями.
      Последовательность делится на периоды, где под периодом
      понимается максимальная последовательность, содержащая
      запросы на k различных блоков.
      За каждый период A делает k считываний с диска, а B — всего
      один.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            17 / 42
Нижняя оценка для детерминированных алгоритмов
Лемма
Для любого детерминированного алгоритма A для задачи
кэширования cA ≥ k.

Идеи доказательства
      Мы покажем, что существует offline-алгоритм B и
      последовательность запросов r со следующими условиями.
      Последовательность делится на периоды, где под периодом
      понимается максимальная последовательность, содержащая
      запросы на k различных блоков.
      За каждый период A делает k считываний с диска, а B — всего
      один.
      Последовательность строится по алгоритму A (каждый
      следующий запрос всегда можно сделать на блок, которого точно
      нет в кэше алгоритма A).
А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            17 / 42
Случайные числа


Случайные числа




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   18 / 42
Случайные числа


Случайные числа
      Итак, детерминированные online-алгоритмы не особо хороши.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              18 / 42
Случайные числа


Случайные числа
      Итак, детерминированные online-алгоритмы не особо хороши.
      Можем ли мы улучшить алгоритм, позволив ему пользоваться
      случайными числами?




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              18 / 42
Случайные числа


Случайные числа
      Итак, детерминированные online-алгоритмы не особо хороши.
      Можем ли мы улучшить алгоритм, позволив ему пользоваться
      случайными числами?
      Для этого сначала нужно понять, из какого класса берется
      противник (алгоритм, относительно которого мы оцениваем наш
      алгоритм).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              18 / 42
Случайные числа


Случайные числа
      Итак, детерминированные online-алгоритмы не особо хороши.
      Можем ли мы улучшить алгоритм, позволив ему пользоваться
      случайными числами?
      Для этого сначала нужно понять, из какого класса берется
      противник (алгоритм, относительно которого мы оцениваем наш
      алгоритм).
      Противник выдает всю последовательность сразу? Или же
      постепенно, смотря на наши ответы?




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              18 / 42
Случайные числа


Случайные числа
      Итак, детерминированные online-алгоритмы не особо хороши.
      Можем ли мы улучшить алгоритм, позволив ему пользоваться
      случайными числами?
      Для этого сначала нужно понять, из какого класса берется
      противник (алгоритм, относительно которого мы оцениваем наш
      алгоритм).
      Противник выдает всю последовательность сразу? Или же
      постепенно, смотря на наши ответы?
      Если он смотрит на наши ответы, то сразу ли он сам отвечает на
      свои запросы?



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              18 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы          19 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы          19 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.
Забывчивый противник (oblivious adversary) порождает всю
           последовательность заранее.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы          19 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.
Забывчивый противник (oblivious adversary) порождает всю
           последовательность заранее.
Активный offline-противник (adaptive offline adversary) порождает
            последовательность запросов, смотря на наши ответы.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            19 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.
Забывчивый противник (oblivious adversary) порождает всю
           последовательность заранее.
Активный offline-противник (adaptive offline adversary) порождает
            последовательность запросов, смотря на наши ответы.
Активный online-противник (adaptive online adversary) порождает
           последовательность запросов, смотря на наши ответы, но
           обязан сразу выдавать ответы на свои запросы.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            19 / 42
Модели противников
Модели противников
Будем считать, что все перечисленные ниже типы противников могут
знать наш алгоритм, но не знают случайных чисел, которыми мы
пользуемся.
Забывчивый противник (oblivious adversary) порождает всю
           последовательность заранее.
Активный offline-противник (adaptive offline adversary) порождает
            последовательность запросов, смотря на наши ответы.
Активный online-противник (adaptive online adversary) порождает
           последовательность запросов, смотря на наши ответы, но
           обязан сразу выдавать ответы на свои запросы.

Замечание
Мы рассмотрим самую слабую из данных моделей, то есть
забывчивого противника.
А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            19 / 42
Забывчивый противник




Забывчивый противник




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   20 / 42
Забывчивый противник




Забывчивый противник
      Мы будем строить вероятностный алгоритм и оценивать его
      относительно забывчивого противника.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            20 / 42
Забывчивый противник




Забывчивый противник
      Мы будем строить вероятностный алгоритм и оценивать его
      относительно забывчивого противника.
      Поскольку наш алгоритм вероятностный, мы будем оценивать
      мат. ожидание количества сделанных им считываний с диска.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              20 / 42
Алгоритм Marker

Алгоритм
Marker




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.
      Все время работы разделяется на периоды.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.
      Все время работы разделяется на периоды.
      В начале каждого периода все блоки кэша помечены 0.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы        21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.
      Все время работы разделяется на периоды.
      В начале каждого периода все блоки кэша помечены 0.
      Если приходит запрос на блок, который есть в кэше, помечаем
      этот блок 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.
      Все время работы разделяется на периоды.
      В начале каждого периода все блоки кэша помечены 0.
      Если приходит запрос на блок, который есть в кэше, помечаем
      этот блок 1.
      Если же запрошенного блока нет, случайным образом выберем
      блок из помеченных 0, считаем туда требуемый блок и пометим
      этот блок 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                21 / 42
Алгоритм Marker

Алгоритм
Marker
      Каждый блок кэша будем помечать 0 или 1.
      Все время работы разделяется на периоды.
      В начале каждого периода все блоки кэша помечены 0.
      Если приходит запрос на блок, который есть в кэше, помечаем
      этот блок 1.
      Если же запрошенного блока нет, случайным образом выберем
      блок из помеченных 0, считаем туда требуемый блок и пометим
      этот блок 1.
      Если пришел запрос на блок, которого в кэше нет, и все блоки
      помечены 1, обнулим все пометки и начнем новый период.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 21 / 42
Оценка оптимальности

Лемма
Алгоритм Marker является 2Hk -оптимальным относительно
забывчивого противника.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы     22 / 42
Оценка оптимальности

Лемма
Алгоритм Marker является 2Hk -оптимальным относительно
забывчивого противника.

Типы запросов




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы     22 / 42
Оценка оптимальности

Лемма
Алгоритм Marker является 2Hk -оптимальным относительно
забывчивого противника.

Типы запросов
Помеченный — запрос на блок, образ которого находится в кэше и
          помечен 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы         22 / 42
Оценка оптимальности

Лемма
Алгоритм Marker является 2Hk -оптимальным относительно
забывчивого противника.

Типы запросов
Помеченный — запрос на блок, образ которого находится в кэше и
          помечен 1.
Устаревший — запрос на блок, образ которого находится в кэше и
           помечен 0 (блок, оставшийся в кэше с предыдущего
           периода), или на блок, которого в кэше нет, но который
           там был на предыдущем периоде.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы           22 / 42
Оценка оптимальности

Лемма
Алгоритм Marker является 2Hk -оптимальным относительно
забывчивого противника.

Типы запросов
Помеченный — запрос на блок, образ которого находится в кэше и
          помечен 1.
Устаревший — запрос на блок, образ которого находится в кэше и
           помечен 0 (блок, оставшийся в кэше с предыдущего
           периода), или на блок, которого в кэше нет, но который
           там был на предыдущем периоде.
      Чистый — запрос на блок, которого в кэше нет и не было на
             предыдущем периоде.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              22 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы     23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.
            SO,i , SM,i — множества блоков в кэшах противника и нашего
            алгоритма, соответственно.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                     23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.
            SO,i , SM,i — множества блоков в кэшах противника и нашего
            алгоритма, соответственно.
            dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го
            периода, соответственно.




А. Куликов (CS клуб при ПОМИ)     21. Online алгоритмы                          23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.
            SO,i , SM,i — множества блоков в кэшах противника и нашего
            алгоритма, соответственно.
            dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го
            периода, соответственно.
      Наш алгоритм обязан подгрузить li блоков.




А. Куликов (CS клуб при ПОМИ)     21. Online алгоритмы                          23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.
            SO,i , SM,i — множества блоков в кэшах противника и нашего
            алгоритма, соответственно.
            dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го
            периода, соответственно.
      Наш алгоритм обязан подгрузить li блоков.
      Значит, противник подгрузит хотя бы li − dI ,i блоков: он может
      выиграть у нас только за счет того, что у него в начале периода
      будут блоки, на которые поступят запросы.




А. Куликов (CS клуб при ПОМИ)     21. Online алгоритмы                          23 / 42
Оценка кол-ва считываний противника
Оценка кол-ва считываний противника
      Обозначения:
            li — кол-во чистых запросов за i-й период.
            SO,i , SM,i — множества блоков в кэшах противника и нашего
            алгоритма, соответственно.
            dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го
            периода, соответственно.
      Наш алгоритм обязан подгрузить li блоков.
      Значит, противник подгрузит хотя бы li − dI ,i блоков: он может
      выиграть у нас только за счет того, что у него в начале периода
      будут блоки, на которые поступят запросы.
      Это кол-во также составляет не менее dF ,i : все блоки, лежащие к
      концу периода в кэше нашего алгоритма, были запрошены;
      значит, они должны были побывать и в кэше противника; если же
      кого-то из них там не оказалось, значит, на его место был
      загружен другой блок; кол-во таких загрузок не менее dF ,i .
А. Куликов (CS клуб при ПОМИ)     21. Online алгоритмы                          23 / 42
Оценка кол-ва считываний противника (продолжение)

Оценка кол-ва считываний противника




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   24 / 42
Оценка кол-ва считываний противника (продолжение)

Оценка кол-ва считываний противника
      Итак, количества считываний противника за i-й период
      составляет не менее
                                                        li − dI ,i + dF ,i
                           max{li − dI ,i , dF ,i } ≥                      .
                                                                 2




А. Куликов (CS клуб при ПОМИ)        21. Online алгоритмы                      24 / 42
Оценка кол-ва считываний противника (продолжение)

Оценка кол-ва считываний противника
      Итак, количества считываний противника за i-й период
      составляет не менее
                                                               li − dI ,i + dF ,i
                              max{li − dI ,i , dF ,i } ≥                          .
                                                                        2


      Просуммировав по всем перидоам, получим нижнюю оценку на
      общее число загрузок, совершенных противником:
                             ∑︁ li − dI ,i + dF ,i   ∑︁ li   dF ,n  L
                                                   =       +       ≥ ,
                                         2              2     2     2
                              i                            i
                 ∑︀
      где L =       i li .



А. Куликов (CS клуб при ПОМИ)           21. Online алгоритмы                          24 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.
      При устаревшем запросе мы обращаемся к блоку, который на
      предыдущем периоде был в кэше, но есть ли он там сейчас, мы
      сказать не можем (он мог быть выгружен).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.
      При устаревшем запросе мы обращаемся к блоку, который на
      предыдущем периоде был в кэше, но есть ли он там сейчас, мы
      сказать не можем (он мог быть выгружен).
      Посчитаем вероятность того, что j-й устаревший запрос
      происходит на блок, которого нет в кэше.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.
      При устаревшем запросе мы обращаемся к блоку, который на
      предыдущем периоде был в кэше, но есть ли он там сейчас, мы
      сказать не можем (он мог быть выгружен).
      Посчитаем вероятность того, что j-й устаревший запрос
      происходит на блок, которого нет в кэше.
      Вспомним, что для каждого устаревшего блока в начале периода
      был соответствующий блок.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.
      При устаревшем запросе мы обращаемся к блоку, который на
      предыдущем периоде был в кэше, но есть ли он там сейчас, мы
      сказать не можем (он мог быть выгружен).
      Посчитаем вероятность того, что j-й устаревший запрос
      происходит на блок, которого нет в кэше.
      Вспомним, что для каждого устаревшего блока в начале периода
      был соответствующий блок.
      Пусть X — множество позиций кэша, в которых в начале периода
      были блоки из первых j − 1 устаревших запросов.



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма
Оценка кол-ва считываний алгоритма
      Алгоритм подгружает новый блок на каждый чистый запрос.
      На помеченные ничего подгружать не нужно.
      В i-м периоде ровно k − li устаревших запросов.
      При устаревшем запросе мы обращаемся к блоку, который на
      предыдущем периоде был в кэше, но есть ли он там сейчас, мы
      сказать не можем (он мог быть выгружен).
      Посчитаем вероятность того, что j-й устаревший запрос
      происходит на блок, которого нет в кэше.
      Вспомним, что для каждого устаревшего блока в начале периода
      был соответствующий блок.
      Пусть X — множество позиций кэша, в которых в начале периода
      были блоки из первых j − 1 устаревших запросов.
      Ясно, что перед j-м устаревшим запросом все эти позиции
      помечены 1.
А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            25 / 42
Оценка кол-ва считываний алгоритма (продолжение)



Оценка кол-ва считываний алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   26 / 42
Оценка кол-ва считываний алгоритма (продолжение)



Оценка кол-ва считываний алгоритма
      Каждая позиция из X могла быть помечена 1 либо при
      нахождении соответствующего устаревшего блока, либо при
      загрузке туда чистого блока.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            26 / 42
Оценка кол-ва считываний алгоритма (продолжение)



Оценка кол-ва считываний алгоритма
      Каждая позиция из X могла быть помечена 1 либо при
      нахождении соответствующего устаревшего блока, либо при
      загрузке туда чистого блока.
      Тогда из множества X (в котором наш блок и лежит) не более l
      раз производилась случайная выборка.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             26 / 42
Оценка кол-ва считываний алгоритма (продолжение)



Оценка кол-ва считываний алгоритма
      Каждая позиция из X могла быть помечена 1 либо при
      нахождении соответствующего устаревшего блока, либо при
      загрузке туда чистого блока.
      Тогда из множества X (в котором наш блок и лежит) не более l
      раз производилась случайная выборка.
      Посчитаем веротяность того, что наш блок при этом выживет.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы               26 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   27 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма
      Пусть |X | = k − j + 1 = K .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   27 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма
      Пусть |X | = k − j + 1 = K .
      Тогда вероятность ему выжить на первом шаге не менее
      K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            27 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма
      Пусть |X | = k − j + 1 = K .
      Тогда вероятность ему выжить на первом шаге не менее
      K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д.
      Перемножив, получим, что вероятность выжить за все l выборок
      хотя бы (K − l )/K .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            27 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма
      Пусть |X | = k − j + 1 = K .
      Тогда вероятность ему выжить на первом шаге не менее
      K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д.
      Перемножив, получим, что вероятность выжить за все l выборок
      хотя бы (K − l )/K .
                                      l     l
      Значит, с вероятностью не более K = k−j+1 алгоритму придется
      считать блок при j-м устаревшем запросе.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            27 / 42
Оценка кол-ва считываний алгоритма (продолжение)
Оценка кол-ва считываний алгоритма
      Пусть |X | = k − j + 1 = K .
      Тогда вероятность ему выжить на первом шаге не менее
      K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д.
      Перемножив, получим, что вероятность выжить за все l выборок
      хотя бы (K − l )/K .
                                      l     l
      Значит, с вероятностью не более K = k−j+1 алгоритму придется
      считать блок при j-м устаревшем запросе.
      Тогда мат. ожидание количества считываний при устаревших
      запросах не превосходит

                        li     li            li
                           +      + ··· +        = li · (Hk − Hli ).
                        k    k −1         li + 1



А. Куликов (CS клуб при ПОМИ)      21. Online алгоритмы                27 / 42
Оценка кол-ва считываний алгоритма (продолжение)

Оценка кол-ва считываний алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   28 / 42
Оценка кол-ва считываний алгоритма (продолжение)

Оценка кол-ва считываний алгоритма
      Таким образом, мат. ожидание общего числа загрузок за i-й
      период (включая li чистых загрузок) будет не более

                                li · (1 + Hk − Hli ) ≤ li · Hk .




А. Куликов (CS клуб при ПОМИ)       21. Online алгоритмы           28 / 42
Оценка кол-ва считываний алгоритма (продолжение)

Оценка кол-ва считываний алгоритма
      Таким образом, мат. ожидание общего числа загрузок за i-й
      период (включая li чистых загрузок) будет не более

                                li · (1 + Hk − Hli ) ≤ li · Hk .


      Просуммировав по всем периодам, получим, что мат. ожидание
      общего числа загрузок нашего алгоритма не более L · Hk .




А. Куликов (CS клуб при ПОМИ)       21. Online алгоритмы           28 / 42
Оценка кол-ва считываний алгоритма (продолжение)

Оценка кол-ва считываний алгоритма
      Таким образом, мат. ожидание общего числа загрузок за i-й
      период (включая li чистых загрузок) будет не более

                                li · (1 + Hk − Hli ) ≤ li · Hk .


      Просуммировав по всем периодам, получим, что мат. ожидание
      общего числа загрузок нашего алгоритма не более L · Hk .
      Вспомнив, что наш противник делает хотя бы L/2 загрузок,
      получаем требуемую оценку на оптимальность.




А. Куликов (CS клуб при ПОМИ)       21. Online алгоритмы           28 / 42
План лекции



1   Введение


2   Задача кэширования


3   Задача о покрытии множествами




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   29 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .
      Online-вариант задачи о покрытии множествами (online set cover
      problem) определяется как следующая игра между алгоритмом и
      его противником:




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                 30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .
      Online-вариант задачи о покрытии множествами (online set cover
      problem) определяется как следующая игра между алгоритмом и
      его противником:
            противник дает алгоритму элементы множества X по одному;




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                   30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .
      Online-вариант задачи о покрытии множествами (online set cover
      problem) определяется как следующая игра между алгоритмом и
      его противником:
            противник дает алгоритму элементы множества X по одному;
            на каждый элемент алгоритм должен ответить множеством из ,
            покрывающим этот элемент;




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                  30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .
      Online-вариант задачи о покрытии множествами (online set cover
      problem) определяется как следующая игра между алгоритмом и
      его противником:
            противник дает алгоритму элементы множества X по одному;
            на каждый элемент алгоритм должен ответить множеством из ,
            покрывающим этот элемент;
            противник дает алгоритму не все X , а некоторое его подмножество
            X ⊆ X ′ ; алгоритм знает заранее X и , но не знает X ′ ;



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                    30 / 42
Online-вариант задачи о покрытии множествами

Online-вариант задачи о покрытии множествами
      Пусть дано множество X = {1, 2, . . . , n} и множество его
      подмножеств , || = m, каждому из которых присвоен вес 1.
      Считаем, что все подмножества в объединении покрывают X .
      Покрытием (cover) называется множество подмножеств , в
      объединении покрывющих X .
      Online-вариант задачи о покрытии множествами (online set cover
      problem) определяется как следующая игра между алгоритмом и
      его противником:
            противник дает алгоритму элементы множества X по одному;
            на каждый элемент алгоритм должен ответить множеством из ,
            покрывающим этот элемент;
            противник дает алгоритму не все X , а некоторое его подмножество
            X ⊆ X ′ ; алгоритм знает заранее X и , но не знает X ′ ;
            цель алгоритма — минимизировать количество множеств.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                    30 / 42
Оценка качества алгоритма



Оценка качества алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   31 / 42
Оценка качества алгоритма



Оценка качества алгоритма
      Эффективность алгоритма будем оценивать относительно
      активного offline-противника.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы         31 / 42
Оценка качества алгоритма



Оценка качества алгоритма
      Эффективность алгоритма будем оценивать относительно
      активного offline-противника.
      То есть после того, как противник выдал алгоритму все элементы
      из X ′ , он сам выдает некоторое решение для X ′ .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             31 / 42
Оценка качества алгоритма



Оценка качества алгоритма
      Эффективность алгоритма будем оценивать относительно
      активного offline-противника.
      То есть после того, как противник выдал алгоритму все элементы
      из X ′ , он сам выдает некоторое решение для X ′ .
      Мы будем доказывать верхнуюю оценку на коэффициент
      оптимальности алгоритма, то есть показывать, что построенное
      алгоритмом множество всегда несильно больше оптимального.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             31 / 42
Пример применения задачи



Пример применения задачи




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   32 / 42
Пример применения задачи



Пример применения задачи
      Рассмотрим сеть серверов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   32 / 42
Пример применения задачи



Пример применения задачи
      Рассмотрим сеть серверов.
      Есть потенциальное множество клиентов, и каждый сервер
      способен предоставить некоторый сервис какому-то подмножеству
      клиентов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            32 / 42
Пример применения задачи



Пример применения задачи
      Рассмотрим сеть серверов.
      Есть потенциальное множество клиентов, и каждый сервер
      способен предоставить некоторый сервис какому-то подмножеству
      клиентов.
      Запуску каждого сервера присвоена некоторая цена.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            32 / 42
Пример применения задачи



Пример применения задачи
      Рассмотрим сеть серверов.
      Есть потенциальное множество клиентов, и каждый сервер
      способен предоставить некоторый сервис какому-то подмножеству
      клиентов.
      Запуску каждого сервера присвоена некоторая цена.
      Клиенты присылают запросы последовательно, и отвечать на них
      нужно сразу.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            32 / 42
Основные идеи алгоритма



Основные идеи алгоритма




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   33 / 42
Основные идеи алгоритма



Основные идеи алгоритма
      Каждому множеству присвоим некоторый вес.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   33 / 42
Основные идеи алгоритма



Основные идеи алгоритма
      Каждому множеству присвоим некоторый вес.
      При приходе очередного элемента веса всех множеств,
      содержащих данный элемент, некоторым образом
      пересчитываются.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы        33 / 42
Основные идеи алгоритма



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




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы          33 / 42
Более формально


Более формально




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы         34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.
      В течение работы алгоритма веса могут только увеличиваться.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.
      В течение работы алгоритма веса могут только увеличиваться.
                                 1
      Изначально wS =           2m   для каждого S ∈ .




А. Куликов (CS клуб при ПОМИ)          21. Online алгоритмы     34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.
      В течение работы алгоритма веса могут только увеличиваться.
                                 1
      Изначально wS =           2m   для каждого S ∈ .
      Через  будем обозначать текущее покрытие, а через C —
      текущее множество покрытых элементов.




А. Куликов (CS клуб при ПОМИ)          21. Online алгоритмы     34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.
      В течение работы алгоритма веса могут только увеличиваться.
                                 1
      Изначально wS =           2m   для каждого S ∈ .
      Через  будем обозначать текущее покрытие, а через C —
      текущее множество покрытых элементов.
                         ∑︀
      Вес элемента: wj = S∈j wS , где j = {S ∈  : j ∈ S}.




А. Куликов (CS клуб при ПОМИ)          21. Online алгоритмы       34 / 42
Более формально


Более формально
      Для каждого множества будем поддерживать вес wS > 0.
      В течение работы алгоритма веса могут только увеличиваться.
                                 1
      Изначально wS =           2m   для каждого S ∈ .
      Через  будем обозначать текущее покрытие, а через C —
      текущее множество покрытых элементов.
                         ∑︀
      Вес элемента: wj = S∈j wS , где j = {S ∈  : j ∈ S}.
      Потенциал:                                 ∑︁
                                          Φ=            n2wj .
                                                 j̸∈C




А. Куликов (CS клуб при ПОМИ)          21. Online алгоритмы       34 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   35 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)
      Если wj ≥ 1, выйти.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   35 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)
      Если wj ≥ 1, выйти.
      В противном случае пересчитываем веса:




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   35 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)
      Если wj ≥ 1, выйти.
      В противном случае пересчитываем веса:
            Пусть k — минимальное натуральное число, для которого 2k wj > 1
            (ясно, что 2k wj < 2).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                   35 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)
      Если wj ≥ 1, выйти.
      В противном случае пересчитываем веса:
            Пусть k — минимальное натуральное число, для которого 2k wj > 1
            (ясно, что 2k wj < 2).
            Для каждого S ∈ j wS = 2k wS .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                   35 / 42
Алгоритм


Алгоритм
Online-Set-Cover(j)
      Если wj ≥ 1, выйти.
      В противном случае пересчитываем веса:
            Пусть k — минимальное натуральное число, для которого 2k wj > 1
            (ясно, что 2k wj < 2).
            Для каждого S ∈ j wS = 2k wS .
            Выбрать из j не более 4 log n множеств в , так чтобы значение
            потенциала не превосходило значения потенциала до пересчета
            весов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                     35 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).

Доказательство




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).

Доказательство
      Для любого множества S на каждой итерации wS ≤ 2, поскольку
      wj ≤ 2 для всех элементов j.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).

Доказательство
      Для любого множества S на каждой итерации wS ≤ 2, поскольку
      wj ≤ 2 для всех элементов j.
      Пересчет весов происходит только в случае, если wj < 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).

Доказательство
      Для любого множества S на каждой итерации wS ≤ 2, поскольку
      wj ≤ 2 для всех элементов j.
      Пересчет весов происходит только в случае, если wj < 1.
      При пересчете весов вес хотя бы одного из множеств покрытия
      opt умножается на число, не меньшее 2.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Анализ количества итераций
Лемма
Количество итераций, на которых происходит пересчет весов, не
превосходит |opt | · (log m + 2).

Доказательство
      Для любого множества S на каждой итерации wS ≤ 2, поскольку
      wj ≤ 2 для всех элементов j.
      Пересчет весов происходит только в случае, если wj < 1.
      При пересчете весов вес хотя бы одного из множеств покрытия
      opt умножается на число, не меньшее 2.
                                                         1
      Проскольку изначально вес каждого множества равен 2m , а в
      конце — не более 2, то каждое множество может участвовать не
      более чем в log(4m) увеличениях.


А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            36 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.

Доказательство




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.

Доказательство
      Для каждого S ∈ j через wS и wS + S будем обозначать вес S
      до и после пересчета.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.

Доказательство
      Для каждого S ∈ j через wS и wS + S будем обозначать вес S
      до и после пересчета.
                 ∑︀
      Пусть j = S∈j S .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.

Доказательство
      Для каждого S ∈ j через wS и wS + S будем обозначать вес S
      до и после пересчета.
                 ∑︀
      Пусть j = S∈j S .
      Алгоритм ∑︀
                поддерживает неравенство
      wj + j = S∈j (wS + S ) ≤ 2.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Оценка потенциала

Лемма
Всегда найдутся такие 4 log n множеств при пересчете весов, при
выборе которых потенциал не увеличится.

Доказательство
      Для каждого S ∈ j через wS и wS + S будем обозначать вес S
      до и после пересчета.
                 ∑︀
      Пусть j = S∈j S .
      Алгоритм ∑︀
                поддерживает неравенство
      wj + j = S∈j (wS + S ) ≤ 2.
      Покажем теперь, что всегда найдутся нужные 4 log n множеств.



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы              37 / 42
Доказательство (продолжение)


Доказательство




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:
            Повторить 4 log n раз: выбрать случайно не более одного
            множества из j , так что каждое множество S ∈ j выбирается с
            вероятностью S /2.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                      38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:
            Повторить 4 log n раз: выбрать случайно не более одного
            множества из j , так что каждое множество S ∈ j выбирается с
            вероятностью S /2.
      Такая процедура корректна, поскольку j /2 ≤ 1.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                      38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:
            Повторить 4 log n раз: выбрать случайно не более одного
            множества из j , так что каждое множество S ∈ j выбирается с
            вероятностью S /2.
      Такая процедура корректна, поскольку j /2 ≤ 1.
      Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не
      покрыт).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                      38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:
            Повторить 4 log n раз: выбрать случайно не более одного
            множества из j , так что каждое множество S ∈ j выбирается с
            вероятностью S /2.
      Такая процедура корректна, поскольку j /2 ≤ 1.
      Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не
      покрыт).
      Его вклад в потенциал до пересчета весов равен n2wj ′ .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                      38 / 42
Доказательство (продолжение)


Доказательство
      Рассмотрим такую процедуру:
            Повторить 4 log n раз: выбрать случайно не более одного
            множества из j , так что каждое множество S ∈ j выбирается с
            вероятностью S /2.
      Такая процедура корректна, поскольку j /2 ≤ 1.
      Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не
      покрыт).
      Его вклад в потенциал до пересчета весов равен n2wj ′ .
      При каждом случайном выборе множества вероятность того, что
                                                    j ′
      выбранное множество не содержит j ′ равна 1 − 2 .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                      38 / 42
Доказательство (продолжение)
Доказательство




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   39 / 42
Доказательство (продолжение)
Доказательство
      Вероятность же того, что ни одно из случайно выбранных
      множеств его не содержит равна

                                     j ′ 4 log n
                                (︂        )︂
                                  1−               ≤ n−2j ′ .
                                      2




А. Куликов (CS клуб при ПОМИ)      21. Online алгоритмы           39 / 42
Доказательство (продолжение)
Доказательство
      Вероятность же того, что ни одно из случайно выбранных
      множеств его не содержит равна

                                     j ′ 4 log n
                                (︂        )︂
                                  1−               ≤ n−2j ′ .
                                      2


      Таким образом, мат. ожидание вклада элемента j ′ в потенциал
      после пересчета весов равно

                                n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ .




А. Куликов (CS клуб при ПОМИ)      21. Online алгоритмы                39 / 42
Доказательство (продолжение)
Доказательство
      Вероятность же того, что ни одно из случайно выбранных
      множеств его не содержит равна

                                     j ′ 4 log n
                                (︂        )︂
                                  1−               ≤ n−2j ′ .
                                      2


      Таким образом, мат. ожидание вклада элемента j ′ в потенциал
      после пересчета весов равно

                                n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ .


      Значит, мат. ожидание значения потенциала не превосходит
      значения потенциала изначально.

А. Куликов (CS клуб при ПОМИ)      21. Online алгоритмы                39 / 42
Доказательство (продолжение)
Доказательство
      Вероятность же того, что ни одно из случайно выбранных
      множеств его не содержит равна

                                     j ′ 4 log n
                                (︂        )︂
                                  1−               ≤ n−2j ′ .
                                      2


      Таким образом, мат. ожидание вклада элемента j ′ в потенциал
      после пересчета весов равно

                                n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ .


      Значит, мат. ожидание значения потенциала не превосходит
      значения потенциала изначально.
      А тогда найдутся и соответствующие 4 log n множеств.
А. Куликов (CS клуб при ПОМИ)      21. Online алгоритмы                39 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы      40 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).

Доказательство




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы      40 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).

Доказательство
      Изначально значение потенциала не превосходит n2 .




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы       40 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).

Доказательство
      Изначально значение потенциала не превосходит n2 .
      Потенциал также не увеличивается.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы       40 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).

Доказательство
      Изначально значение потенциала не превосходит n2 .
      Потенциал также не увеличивается.
      Значит, если wj ≥ 1, то n2wj ≥ 1 и j ∈ C , то есть алгоритм выдает
      покрытие.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                40 / 42
Доказательство корректности

Теорема
Алгоритм Online-Set-Cover корректно выдает покрытие X ′
размера O(|opt log m log n|).

Доказательство
      Изначально значение потенциала не превосходит n2 .
      Потенциал также не увеличивается.
      Значит, если wj ≥ 1, то n2wj ≥ 1 и j ∈ C , то есть алгоритм выдает
      покрытие.
      На каждой итерации выбирается не более 4 log n множеств, всего
      же итераций не более |opt (log m + 2).



А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы                40 / 42
Что мы узнали за сегодня?


Что мы узнали за сегодня?




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   41 / 42
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Online-алгоритм — алгоритм, обрабатывающий вход по мере
      поступления.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы            41 / 42
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Online-алгоритм — алгоритм, обрабатывающий вход по мере
      поступления.
      Эффективность online-алгоритма оценивается относительно
      алгоритма, заранее знающего последовательность запросов.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             41 / 42
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Online-алгоритм — алгоритм, обрабатывающий вход по мере
      поступления.
      Эффективность online-алгоритма оценивается относительно
      алгоритма, заранее знающего последовательность запросов.
      2Hk -оптимальный относительно забывчивого противника
      алгоритм для задачи кэширования.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             41 / 42
Что мы узнали за сегодня?


Что мы узнали за сегодня?
      Online-алгоритм — алгоритм, обрабатывающий вход по мере
      поступления.
      Эффективность online-алгоритма оценивается относительно
      алгоритма, заранее знающего последовательность запросов.
      2Hk -оптимальный относительно забывчивого противника
      алгоритм для задачи кэширования.
      O(log m log n)-оптимальный относительно активного
      offline-противника алгоритм для задачи о покрытии множествами.




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы             41 / 42
Спасибо за внимание!




А. Куликов (CS клуб при ПОМИ)   21. Online алгоритмы   42 / 42

More Related Content

Viewers also liked (6)

PPTX
Capacitación, entrenamiento y desarrollo.rocio chuquillampa
rociochuquillampa2014
 
DOCX
Mutual fund
Himanshu Joshi
 
PPTX
Funções inorgânicas bases
Rafael Nishikawa
 
PPTX
I'm The King of The Castle Revision
stgregseng
 
PPTX
DIRT Mat final PPT version
stgregseng
 
PPTX
Company Management policy (Case study)
AMU
 
Capacitación, entrenamiento y desarrollo.rocio chuquillampa
rociochuquillampa2014
 
Mutual fund
Himanshu Joshi
 
Funções inorgânicas bases
Rafael Nishikawa
 
I'm The King of The Castle Revision
stgregseng
 
DIRT Mat final PPT version
stgregseng
 
Company Management policy (Case study)
AMU
 

More from Computer Science Club (20)

PDF
20141223 kuznetsov distributed
Computer Science Club
 
PDF
Computer Vision
Computer Science Club
 
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
PDF
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
PDF
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
PDF
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
PDF
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
PDF
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
PDF
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
PDF
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
PDF
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
PDF
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
PDF
20140223-SuffixTrees-lecture01-03
Computer Science Club
 
PDF
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 
PDF
20131106 h10 lecture6_matiyasevich
Computer Science Club
 
PDF
20131027 h10 lecture5_matiyasevich
Computer Science Club
 
PDF
20131027 h10 lecture5_matiyasevich
Computer Science Club
 
PDF
20131013 h10 lecture4_matiyasevich
Computer Science Club
 
PDF
20131006 h10 lecture3_matiyasevich
Computer Science Club
 
PDF
20131006 h10 lecture3_matiyasevich
Computer Science Club
 
20141223 kuznetsov distributed
Computer Science Club
 
Computer Vision
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
Computer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
Computer Science Club
 
20140511 parallel programming_kalishenko_lecture12
Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
Computer Science Club
 
20140223-SuffixTrees-lecture01-03
Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
Computer Science Club
 
20131106 h10 lecture6_matiyasevich
Computer Science Club
 
20131027 h10 lecture5_matiyasevich
Computer Science Club
 
20131027 h10 lecture5_matiyasevich
Computer Science Club
 
20131013 h10 lecture4_matiyasevich
Computer Science Club
 
20131006 h10 lecture3_matiyasevich
Computer Science Club
 
20131006 h10 lecture3_matiyasevich
Computer Science Club
 
Ad

20080406 efficientalgorithms kulikov_lecture21

  • 1. с/к “Эффективные алгоритмы” Лекция 21: Алгоритмы, обрабатывающие вход по мере поступления А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/∼infclub/ А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 1 / 42
  • 2. План лекции 1 Введение А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 2 / 42
  • 3. План лекции 1 Введение 2 Задача кэширования А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 2 / 42
  • 4. План лекции 1 Введение 2 Задача кэширования 3 Задача о покрытии множествами А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 2 / 42
  • 5. План лекции 1 Введение 2 Задача кэширования 3 Задача о покрытии множествами А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 3 / 42
  • 6. Введение Введение А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 4 / 42
  • 7. Введение Введение Все рассмотренные нами до сегодняшнего дня алгоритмы получали свои входные данные сразу. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 4 / 42
  • 8. Введение Введение Все рассмотренные нами до сегодняшнего дня алгоритмы получали свои входные данные сразу. На практике же сущесвуют задачи, которые нужно решать, не зная заранее все входные данные. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 4 / 42
  • 9. Введение Введение Все рассмотренные нами до сегодняшнего дня алгоритмы получали свои входные данные сразу. На практике же сущесвуют задачи, которые нужно решать, не зная заранее все входные данные. Например, системная программа, контролирующая работу операционной системы, должна производить некоторые действия (принимать решения, записывать что-то на выход) до того, как поступят все данные. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 4 / 42
  • 10. Введение Введение Все рассмотренные нами до сегодняшнего дня алгоритмы получали свои входные данные сразу. На практике же сущесвуют задачи, которые нужно решать, не зная заранее все входные данные. Например, системная программа, контролирующая работу операционной системы, должна производить некоторые действия (принимать решения, записывать что-то на выход) до того, как поступят все данные. Такие алгоритмы называются алгоритмами, работающими в реальном времени, или online-алгоритмами. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 4 / 42
  • 11. Оценка эффективности Оценка эффективности А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 5 / 42
  • 12. Оценка эффективности Оценка эффективности Как правило, online-алгоритм получает последовательность запросов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 5 / 42
  • 13. Оценка эффективности Оценка эффективности Как правило, online-алгоритм получает последовательность запросов. По каждому из запросов он должен предоставить некоторый сервис до того, как получит следующий запрос. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 5 / 42
  • 14. Оценка эффективности Оценка эффективности Как правило, online-алгоритм получает последовательность запросов. По каждому из запросов он должен предоставить некоторый сервис до того, как получит следующий запрос. Обычно есть несколько возможностей предоставить сервис, каждой из которых сопоставлена некоторая стоимость. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 5 / 42
  • 15. Оценка эффективности Определение А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 6 / 42
  • 16. Оценка эффективности Определение Online алгоритм A называется c-оптимальным (c-competitive), если для любой последовательности запросов r и любого алгоритма B, которому вся последовательност запросов дается сразу, costA (r ) ≤ c · costB (r ) + c1 . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 6 / 42
  • 17. Оценка эффективности Определение Online алгоритм A называется c-оптимальным (c-competitive), если для любой последовательности запросов r и любого алгоритма B, которому вся последовательност запросов дается сразу, costA (r ) ≤ c · costB (r ) + c1 . Коэффициентом оптимальности (competitiveness coefficient) cA алгоритма A называется инфимум таких c, что A c-оптимален. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 6 / 42
  • 18. Аренда лыж Аренда лыж А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 19. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 20. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. Вы решили кататься, пока позволяет погода, поэтому заранее не знаете, сколько именно (вы не верите прогнозам погоды). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 21. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. Вы решили кататься, пока позволяет погода, поэтому заранее не знаете, сколько именно (вы не верите прогнозам погоды). У вас нет лыж, но есть две возможности: арендовать лыжи за 10 руб. в сутки или купить лыжи за 150 руб. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 22. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. Вы решили кататься, пока позволяет погода, поэтому заранее не знаете, сколько именно (вы не верите прогнозам погоды). У вас нет лыж, но есть две возможности: арендовать лыжи за 10 руб. в сутки или купить лыжи за 150 руб. Если вы купите лыжи в первый же день, а на следующий день все расстает, вы потратите много денег. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 23. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. Вы решили кататься, пока позволяет погода, поэтому заранее не знаете, сколько именно (вы не верите прогнозам погоды). У вас нет лыж, но есть две возможности: арендовать лыжи за 10 руб. в сутки или купить лыжи за 150 руб. Если вы купите лыжи в первый же день, а на следующий день все расстает, вы потратите много денег. С другой стороны, если вы решите каждый день брать лыжи на прокат, то за два месяца вы потратите стоимость четырех пар лыж. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 24. Аренда лыж Аренда лыж Представьте себя на горнолыжном курорте. Вы решили кататься, пока позволяет погода, поэтому заранее не знаете, сколько именно (вы не верите прогнозам погоды). У вас нет лыж, но есть две возможности: арендовать лыжи за 10 руб. в сутки или купить лыжи за 150 руб. Если вы купите лыжи в первый же день, а на следующий день все расстает, вы потратите много денег. С другой стороны, если вы решите каждый день брать лыжи на прокат, то за два месяца вы потратите стоимость четырех пар лыж. Что же вам делать? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 7 / 42
  • 25. Поиск припаркованной машины Поиск припаркованной машины А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 8 / 42
  • 26. Поиск припаркованной машины Поиск припаркованной машины Рассеянный профессор, выйдя из института, осознал, что не помнит, где припарковал свою машину. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 8 / 42
  • 27. Поиск припаркованной машины Поиск припаркованной машины Рассеянный профессор, выйдя из института, осознал, что не помнит, где припарковал свою машину. Будем считать, что здание института круглое и машина припаркована рядом с ним. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 8 / 42
  • 28. Поиск припаркованной машины Поиск припаркованной машины Рассеянный профессор, выйдя из института, осознал, что не помнит, где припарковал свою машину. Будем считать, что здание института круглое и машина припаркована рядом с ним. Что же делать профессору? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 8 / 42
  • 29. Online-алгоритм Online-алгоритм А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 9 / 42
  • 30. Online-алгоритм Online-алгоритм Заметим, что online-алгоритм для задачи аренды лыж полностью задается днем N, в который нужно купить лыжи (после этого платить не нужно). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 9 / 42
  • 31. Online-алгоритм Online-алгоритм Заметим, что online-алгоритм для задачи аренды лыж полностью задается днем N, в который нужно купить лыжи (после этого платить не нужно). Итак, какое же N оптимально? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 9 / 42
  • 32. Online-алгоритм Online-алгоритм Заметим, что online-алгоритм для задачи аренды лыж полностью задается днем N, в который нужно купить лыжи (после этого платить не нужно). Итак, какое же N оптимально? Если N мало, мы рискуем купить лыжи и уехать с ними на следующий день домой. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 9 / 42
  • 33. Online-алгоритм Online-алгоритм Заметим, что online-алгоритм для задачи аренды лыж полностью задается днем N, в который нужно купить лыжи (после этого платить не нужно). Итак, какое же N оптимально? Если N мало, мы рискуем купить лыжи и уехать с ними на следующий день домой. Если же N велико, мы рискуем прокатать до покупки несколько стоимостей лыж. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 9 / 42
  • 34. 2-оптимальный online-алгоритм 2-оптимальный online-алгоритм А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 10 / 42
  • 35. 2-оптимальный online-алгоритм 2-оптимальный online-алгоритм 2-оптимальный алгоритм: брать лыжи в прокат первые 14 дней, а на 15-й день купить их. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 10 / 42
  • 36. 2-оптимальный online-алгоритм 2-оптимальный online-алгоритм 2-оптимальный алгоритм: брать лыжи в прокат первые 14 дней, а на 15-й день купить их. Легко видеть, что данный алгоритм 2-оптимален. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 10 / 42
  • 37. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 38. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины Рассмотрим такой алгоритм: профессор сходит направо на расстояние 1, потом вернется и сходит налево на расстояние 2, потом опять вернется и сходит направо на расстояние 4, и так далее до тех пор, пока не найдется машина. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 39. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины Рассмотрим такой алгоритм: профессор сходит направо на расстояние 1, потом вернется и сходит налево на расстояние 2, потом опять вернется и сходит направо на расстояние 4, и так далее до тех пор, пока не найдется машина. Покажем, что данный алгоритм 9-оптимален. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 40. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины Рассмотрим такой алгоритм: профессор сходит направо на расстояние 1, потом вернется и сходит налево на расстояние 2, потом опять вернется и сходит направо на расстояние 4, и так далее до тех пор, пока не найдется машина. Покажем, что данный алгоритм 9-оптимален. Неприятнее всего профессору тогда, когда он не дошел маленького до своей машины на одной из итераций. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 41. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины Рассмотрим такой алгоритм: профессор сходит направо на расстояние 1, потом вернется и сходит налево на расстояние 2, потом опять вернется и сходит направо на расстояние 4, и так далее до тех пор, пока не найдется машина. Покажем, что данный алгоритм 9-оптимален. Неприятнее всего профессору тогда, когда он не дошел маленького до своей машины на одной из итераций. В такой ситуации ему придется вернуться назад, сходить в противоположную сторону и только потом найти машину. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 42. Online-алгоритм для поиска припаркованной машины Online-алгоритм для поиска припаркованной машины Рассмотрим такой алгоритм: профессор сходит направо на расстояние 1, потом вернется и сходит налево на расстояние 2, потом опять вернется и сходит направо на расстояние 4, и так далее до тех пор, пока не найдется машина. Покажем, что данный алгоритм 9-оптимален. Неприятнее всего профессору тогда, когда он не дошел маленького до своей машины на одной из итераций. В такой ситуации ему придется вернуться назад, сходить в противоположную сторону и только потом найти машину. Пусть расстояние до машины равно 2i+1 + . Тогда ему придется пройти 2·(1+2+· · ·+2i+2 )+2i+1 + = 2·(2i+3 −1)+2i+1 + = 9·2i+1 +−2. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 11 / 42
  • 43. План лекции 1 Введение 2 Задача кэширования 3 Задача о покрытии множествами А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 12 / 42
  • 44. Задача кэширования (paging problem) Задача кэширования (paging problem) А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 13 / 42
  • 45. Задача кэширования (paging problem) Задача кэширования (paging problem) У компьютера есть два вида памяти: дисковая, большая по объему, но медленная, и оперативная, быстрая, но меньше по объему. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 13 / 42
  • 46. Задача кэширования (paging problem) Задача кэширования (paging problem) У компьютера есть два вида памяти: дисковая, большая по объему, но медленная, и оперативная, быстрая, но меньше по объему. Все операции над данными (в частности, запуск программ) производятся в оперативной памяти; дисковая память используется лишь для их хранения. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 13 / 42
  • 47. Задача кэширования (paging problem) Задача кэширования (paging problem) У компьютера есть два вида памяти: дисковая, большая по объему, но медленная, и оперативная, быстрая, но меньше по объему. Все операции над данными (в частности, запуск программ) производятся в оперативной памяти; дисковая память используется лишь для их хранения. Если обращения к одному и тому же месту дисковой памяти повторяются, можно сэкономить время на том, что выделить в оперативной памяти определенное место (кэш), в которой сохранять считанные данные. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 13 / 42
  • 48. Задача кэширования (paging problem) Задача кэширования (paging problem) У компьютера есть два вида памяти: дисковая, большая по объему, но медленная, и оперативная, быстрая, но меньше по объему. Все операции над данными (в частности, запуск программ) производятся в оперативной памяти; дисковая память используется лишь для их хранения. Если обращения к одному и тому же месту дисковой памяти повторяются, можно сэкономить время на том, что выделить в оперативной памяти определенное место (кэш), в которой сохранять считанные данные. Поскольку объем кэша ограничен, периодически придется стирать из него данные (записывать на их место другие); качество алгоритма определяется тем, насколько он сможет предугадать, какие данные еще понадобятся (и их не следует стирать), а какие — нет. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 13 / 42
  • 49. Формальная постановка задачи Формальная постановка задачи А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 50. Формальная постановка задачи Формальная постановка задачи Вся память (и дисковая, и оперативная) разбита на блоки равной длины. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 51. Формальная постановка задачи Формальная постановка задачи Вся память (и дисковая, и оперативная) разбита на блоки равной длины. Блоки пронумерованы, причем кэш состоит из k блоков, а диск — из t блоков. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 52. Формальная постановка задачи Формальная постановка задачи Вся память (и дисковая, и оперативная) разбита на блоки равной длины. Блоки пронумерованы, причем кэш состоит из k блоков, а диск — из t блоков. На очередном шаге к нам поступает запрос на какой-то блок с диска; если этот блок в кэше уже имеется, нам достаточно сообщить его номер в кэше; если нет, нам надо предварительно решить, в какое место кэша записать этот блок и сделать это, считав блок с диска. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 53. Формальная постановка задачи Формальная постановка задачи Вся память (и дисковая, и оперативная) разбита на блоки равной длины. Блоки пронумерованы, причем кэш состоит из k блоков, а диск — из t блоков. На очередном шаге к нам поступает запрос на какой-то блок с диска; если этот блок в кэше уже имеется, нам достаточно сообщить его номер в кэше; если нет, нам надо предварительно решить, в какое место кэша записать этот блок и сделать это, считав блок с диска. Время работы алгоритма измеряется количеством считываний с диска. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 54. Формальная постановка задачи Формальная постановка задачи Вся память (и дисковая, и оперативная) разбита на блоки равной длины. Блоки пронумерованы, причем кэш состоит из k блоков, а диск — из t блоков. На очередном шаге к нам поступает запрос на какой-то блок с диска; если этот блок в кэше уже имеется, нам достаточно сообщить его номер в кэше; если нет, нам надо предварительно решить, в какое место кэша записать этот блок и сделать это, считав блок с диска. Время работы алгоритма измеряется количеством считываний с диска. Будем считать, что в начальный момент времени кэш пуст. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 14 / 42
  • 55. Известные эвристики Известные эвристики А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 56. Известные эвристики Известные эвристики Когда приходит запрос на блок, которого нет в кэше, online-алгоритму приходится стереть какой-нибудь блок из кэша и на его место записать запрошенный блок. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 57. Известные эвристики Известные эвристики Когда приходит запрос на блок, которого нет в кэше, online-алгоритму приходится стереть какой-нибудь блок из кэша и на его место записать запрошенный блок. Стандартные эвристики выбора такого блока: А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 58. Известные эвристики Известные эвристики Когда приходит запрос на блок, которого нет в кэше, online-алгоритму приходится стереть какой-нибудь блок из кэша и на его место записать запрошенный блок. Стандартные эвристики выбора такого блока: Least Recently Used, LRU: стереть блок, последний запрос на которой был раньше всего. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 59. Известные эвристики Известные эвристики Когда приходит запрос на блок, которого нет в кэше, online-алгоритму приходится стереть какой-нибудь блок из кэша и на его место записать запрошенный блок. Стандартные эвристики выбора такого блока: Least Recently Used, LRU: стереть блок, последний запрос на которой был раньше всего. First-in, First-out, FIFO: стереть блок, находящийся в кэше дольше всего. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 60. Известные эвристики Известные эвристики Когда приходит запрос на блок, которого нет в кэше, online-алгоритму приходится стереть какой-нибудь блок из кэша и на его место записать запрошенный блок. Стандартные эвристики выбора такого блока: Least Recently Used, LRU: стереть блок, последний запрос на которой был раньше всего. First-in, First-out, FIFO: стереть блок, находящийся в кэше дольше всего. Least Frequently Used, LFU: стереть блок, который запрашивался реже всего. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 15 / 42
  • 61. Оптимальный offline-алгоритм Алгоритм MIN При запросе блока, которого нет в кэше, стереть из кэша тот блок, запрос на который будет в будущем позже всего. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 16 / 42
  • 62. Оптимальный offline-алгоритм Алгоритм MIN При запросе блока, которого нет в кэше, стереть из кэша тот блок, запрос на который будет в будущем позже всего. Упражнения Пусть диск состоит из t = k + 1 блока. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 16 / 42
  • 63. Оптимальный offline-алгоритм Алгоритм MIN При запросе блока, которого нет в кэше, стереть из кэша тот блок, запрос на который будет в будущем позже всего. Упражнения Пусть диск состоит из t = k + 1 блока. Показать, что для любого детерминированного offline-алгоритма A для задачи кэширования существует последовательность из N запросов r , такая что costA (r ) = N. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 16 / 42
  • 64. Оптимальный offline-алгоритм Алгоритм MIN При запросе блока, которого нет в кэше, стереть из кэша тот блок, запрос на который будет в будущем позже всего. Упражнения Пусть диск состоит из t = k + 1 блока. Показать, что для любого детерминированного offline-алгоритма A для задачи кэширования существует последовательность из N запросов r , такая что costA (r ) = N. Показать, что для любой последовательности из N запросов r costMIN (r ) = N/k. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 16 / 42
  • 65. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 66. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. Идеи доказательства А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 67. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. Идеи доказательства Мы покажем, что существует offline-алгоритм B и последовательность запросов r со следующими условиями. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 68. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. Идеи доказательства Мы покажем, что существует offline-алгоритм B и последовательность запросов r со следующими условиями. Последовательность делится на периоды, где под периодом понимается максимальная последовательность, содержащая запросы на k различных блоков. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 69. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. Идеи доказательства Мы покажем, что существует offline-алгоритм B и последовательность запросов r со следующими условиями. Последовательность делится на периоды, где под периодом понимается максимальная последовательность, содержащая запросы на k различных блоков. За каждый период A делает k считываний с диска, а B — всего один. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 70. Нижняя оценка для детерминированных алгоритмов Лемма Для любого детерминированного алгоритма A для задачи кэширования cA ≥ k. Идеи доказательства Мы покажем, что существует offline-алгоритм B и последовательность запросов r со следующими условиями. Последовательность делится на периоды, где под периодом понимается максимальная последовательность, содержащая запросы на k различных блоков. За каждый период A делает k считываний с диска, а B — всего один. Последовательность строится по алгоритму A (каждый следующий запрос всегда можно сделать на блок, которого точно нет в кэше алгоритма A). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 17 / 42
  • 71. Случайные числа Случайные числа А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 72. Случайные числа Случайные числа Итак, детерминированные online-алгоритмы не особо хороши. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 73. Случайные числа Случайные числа Итак, детерминированные online-алгоритмы не особо хороши. Можем ли мы улучшить алгоритм, позволив ему пользоваться случайными числами? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 74. Случайные числа Случайные числа Итак, детерминированные online-алгоритмы не особо хороши. Можем ли мы улучшить алгоритм, позволив ему пользоваться случайными числами? Для этого сначала нужно понять, из какого класса берется противник (алгоритм, относительно которого мы оцениваем наш алгоритм). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 75. Случайные числа Случайные числа Итак, детерминированные online-алгоритмы не особо хороши. Можем ли мы улучшить алгоритм, позволив ему пользоваться случайными числами? Для этого сначала нужно понять, из какого класса берется противник (алгоритм, относительно которого мы оцениваем наш алгоритм). Противник выдает всю последовательность сразу? Или же постепенно, смотря на наши ответы? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 76. Случайные числа Случайные числа Итак, детерминированные online-алгоритмы не особо хороши. Можем ли мы улучшить алгоритм, позволив ему пользоваться случайными числами? Для этого сначала нужно понять, из какого класса берется противник (алгоритм, относительно которого мы оцениваем наш алгоритм). Противник выдает всю последовательность сразу? Или же постепенно, смотря на наши ответы? Если он смотрит на наши ответы, то сразу ли он сам отвечает на свои запросы? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 18 / 42
  • 77. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 78. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 79. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. Забывчивый противник (oblivious adversary) порождает всю последовательность заранее. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 80. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. Забывчивый противник (oblivious adversary) порождает всю последовательность заранее. Активный offline-противник (adaptive offline adversary) порождает последовательность запросов, смотря на наши ответы. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 81. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. Забывчивый противник (oblivious adversary) порождает всю последовательность заранее. Активный offline-противник (adaptive offline adversary) порождает последовательность запросов, смотря на наши ответы. Активный online-противник (adaptive online adversary) порождает последовательность запросов, смотря на наши ответы, но обязан сразу выдавать ответы на свои запросы. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 82. Модели противников Модели противников Будем считать, что все перечисленные ниже типы противников могут знать наш алгоритм, но не знают случайных чисел, которыми мы пользуемся. Забывчивый противник (oblivious adversary) порождает всю последовательность заранее. Активный offline-противник (adaptive offline adversary) порождает последовательность запросов, смотря на наши ответы. Активный online-противник (adaptive online adversary) порождает последовательность запросов, смотря на наши ответы, но обязан сразу выдавать ответы на свои запросы. Замечание Мы рассмотрим самую слабую из данных моделей, то есть забывчивого противника. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 19 / 42
  • 83. Забывчивый противник Забывчивый противник А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 20 / 42
  • 84. Забывчивый противник Забывчивый противник Мы будем строить вероятностный алгоритм и оценивать его относительно забывчивого противника. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 20 / 42
  • 85. Забывчивый противник Забывчивый противник Мы будем строить вероятностный алгоритм и оценивать его относительно забывчивого противника. Поскольку наш алгоритм вероятностный, мы будем оценивать мат. ожидание количества сделанных им считываний с диска. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 20 / 42
  • 86. Алгоритм Marker Алгоритм Marker А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 87. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 88. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. Все время работы разделяется на периоды. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 89. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. Все время работы разделяется на периоды. В начале каждого периода все блоки кэша помечены 0. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 90. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. Все время работы разделяется на периоды. В начале каждого периода все блоки кэша помечены 0. Если приходит запрос на блок, который есть в кэше, помечаем этот блок 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 91. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. Все время работы разделяется на периоды. В начале каждого периода все блоки кэша помечены 0. Если приходит запрос на блок, который есть в кэше, помечаем этот блок 1. Если же запрошенного блока нет, случайным образом выберем блок из помеченных 0, считаем туда требуемый блок и пометим этот блок 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 92. Алгоритм Marker Алгоритм Marker Каждый блок кэша будем помечать 0 или 1. Все время работы разделяется на периоды. В начале каждого периода все блоки кэша помечены 0. Если приходит запрос на блок, который есть в кэше, помечаем этот блок 1. Если же запрошенного блока нет, случайным образом выберем блок из помеченных 0, считаем туда требуемый блок и пометим этот блок 1. Если пришел запрос на блок, которого в кэше нет, и все блоки помечены 1, обнулим все пометки и начнем новый период. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 21 / 42
  • 93. Оценка оптимальности Лемма Алгоритм Marker является 2Hk -оптимальным относительно забывчивого противника. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 22 / 42
  • 94. Оценка оптимальности Лемма Алгоритм Marker является 2Hk -оптимальным относительно забывчивого противника. Типы запросов А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 22 / 42
  • 95. Оценка оптимальности Лемма Алгоритм Marker является 2Hk -оптимальным относительно забывчивого противника. Типы запросов Помеченный — запрос на блок, образ которого находится в кэше и помечен 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 22 / 42
  • 96. Оценка оптимальности Лемма Алгоритм Marker является 2Hk -оптимальным относительно забывчивого противника. Типы запросов Помеченный — запрос на блок, образ которого находится в кэше и помечен 1. Устаревший — запрос на блок, образ которого находится в кэше и помечен 0 (блок, оставшийся в кэше с предыдущего периода), или на блок, которого в кэше нет, но который там был на предыдущем периоде. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 22 / 42
  • 97. Оценка оптимальности Лемма Алгоритм Marker является 2Hk -оптимальным относительно забывчивого противника. Типы запросов Помеченный — запрос на блок, образ которого находится в кэше и помечен 1. Устаревший — запрос на блок, образ которого находится в кэше и помечен 0 (блок, оставшийся в кэше с предыдущего периода), или на блок, которого в кэше нет, но который там был на предыдущем периоде. Чистый — запрос на блок, которого в кэше нет и не было на предыдущем периоде. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 22 / 42
  • 98. Оценка кол-ва считываний противника Оценка кол-ва считываний противника А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 99. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 100. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 101. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. SO,i , SM,i — множества блоков в кэшах противника и нашего алгоритма, соответственно. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 102. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. SO,i , SM,i — множества блоков в кэшах противника и нашего алгоритма, соответственно. dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го периода, соответственно. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 103. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. SO,i , SM,i — множества блоков в кэшах противника и нашего алгоритма, соответственно. dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го периода, соответственно. Наш алгоритм обязан подгрузить li блоков. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 104. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. SO,i , SM,i — множества блоков в кэшах противника и нашего алгоритма, соответственно. dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го периода, соответственно. Наш алгоритм обязан подгрузить li блоков. Значит, противник подгрузит хотя бы li − dI ,i блоков: он может выиграть у нас только за счет того, что у него в начале периода будут блоки, на которые поступят запросы. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 105. Оценка кол-ва считываний противника Оценка кол-ва считываний противника Обозначения: li — кол-во чистых запросов за i-й период. SO,i , SM,i — множества блоков в кэшах противника и нашего алгоритма, соответственно. dI ,i , dF ,i — значения величины |SO,i ∖ SM,i | в начале и конце i-го периода, соответственно. Наш алгоритм обязан подгрузить li блоков. Значит, противник подгрузит хотя бы li − dI ,i блоков: он может выиграть у нас только за счет того, что у него в начале периода будут блоки, на которые поступят запросы. Это кол-во также составляет не менее dF ,i : все блоки, лежащие к концу периода в кэше нашего алгоритма, были запрошены; значит, они должны были побывать и в кэше противника; если же кого-то из них там не оказалось, значит, на его место был загружен другой блок; кол-во таких загрузок не менее dF ,i . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 23 / 42
  • 106. Оценка кол-ва считываний противника (продолжение) Оценка кол-ва считываний противника А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 24 / 42
  • 107. Оценка кол-ва считываний противника (продолжение) Оценка кол-ва считываний противника Итак, количества считываний противника за i-й период составляет не менее li − dI ,i + dF ,i max{li − dI ,i , dF ,i } ≥ . 2 А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 24 / 42
  • 108. Оценка кол-ва считываний противника (продолжение) Оценка кол-ва считываний противника Итак, количества считываний противника за i-й период составляет не менее li − dI ,i + dF ,i max{li − dI ,i , dF ,i } ≥ . 2 Просуммировав по всем перидоам, получим нижнюю оценку на общее число загрузок, совершенных противником: ∑︁ li − dI ,i + dF ,i ∑︁ li dF ,n L = + ≥ , 2 2 2 2 i i ∑︀ где L = i li . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 24 / 42
  • 109. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 110. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 111. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 112. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 113. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. При устаревшем запросе мы обращаемся к блоку, который на предыдущем периоде был в кэше, но есть ли он там сейчас, мы сказать не можем (он мог быть выгружен). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 114. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. При устаревшем запросе мы обращаемся к блоку, который на предыдущем периоде был в кэше, но есть ли он там сейчас, мы сказать не можем (он мог быть выгружен). Посчитаем вероятность того, что j-й устаревший запрос происходит на блок, которого нет в кэше. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 115. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. При устаревшем запросе мы обращаемся к блоку, который на предыдущем периоде был в кэше, но есть ли он там сейчас, мы сказать не можем (он мог быть выгружен). Посчитаем вероятность того, что j-й устаревший запрос происходит на блок, которого нет в кэше. Вспомним, что для каждого устаревшего блока в начале периода был соответствующий блок. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 116. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. При устаревшем запросе мы обращаемся к блоку, который на предыдущем периоде был в кэше, но есть ли он там сейчас, мы сказать не можем (он мог быть выгружен). Посчитаем вероятность того, что j-й устаревший запрос происходит на блок, которого нет в кэше. Вспомним, что для каждого устаревшего блока в начале периода был соответствующий блок. Пусть X — множество позиций кэша, в которых в начале периода были блоки из первых j − 1 устаревших запросов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 117. Оценка кол-ва считываний алгоритма Оценка кол-ва считываний алгоритма Алгоритм подгружает новый блок на каждый чистый запрос. На помеченные ничего подгружать не нужно. В i-м периоде ровно k − li устаревших запросов. При устаревшем запросе мы обращаемся к блоку, который на предыдущем периоде был в кэше, но есть ли он там сейчас, мы сказать не можем (он мог быть выгружен). Посчитаем вероятность того, что j-й устаревший запрос происходит на блок, которого нет в кэше. Вспомним, что для каждого устаревшего блока в начале периода был соответствующий блок. Пусть X — множество позиций кэша, в которых в начале периода были блоки из первых j − 1 устаревших запросов. Ясно, что перед j-м устаревшим запросом все эти позиции помечены 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 25 / 42
  • 118. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 26 / 42
  • 119. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Каждая позиция из X могла быть помечена 1 либо при нахождении соответствующего устаревшего блока, либо при загрузке туда чистого блока. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 26 / 42
  • 120. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Каждая позиция из X могла быть помечена 1 либо при нахождении соответствующего устаревшего блока, либо при загрузке туда чистого блока. Тогда из множества X (в котором наш блок и лежит) не более l раз производилась случайная выборка. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 26 / 42
  • 121. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Каждая позиция из X могла быть помечена 1 либо при нахождении соответствующего устаревшего блока, либо при загрузке туда чистого блока. Тогда из множества X (в котором наш блок и лежит) не более l раз производилась случайная выборка. Посчитаем веротяность того, что наш блок при этом выживет. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 26 / 42
  • 122. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 123. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Пусть |X | = k − j + 1 = K . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 124. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Пусть |X | = k − j + 1 = K . Тогда вероятность ему выжить на первом шаге не менее K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 125. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Пусть |X | = k − j + 1 = K . Тогда вероятность ему выжить на первом шаге не менее K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д. Перемножив, получим, что вероятность выжить за все l выборок хотя бы (K − l )/K . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 126. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Пусть |X | = k − j + 1 = K . Тогда вероятность ему выжить на первом шаге не менее K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д. Перемножив, получим, что вероятность выжить за все l выборок хотя бы (K − l )/K . l l Значит, с вероятностью не более K = k−j+1 алгоритму придется считать блок при j-м устаревшем запросе. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 127. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Пусть |X | = k − j + 1 = K . Тогда вероятность ему выжить на первом шаге не менее K /(K − 1), на втором — не менее (K − 1)/(K − 2) и т.д. Перемножив, получим, что вероятность выжить за все l выборок хотя бы (K − l )/K . l l Значит, с вероятностью не более K = k−j+1 алгоритму придется считать блок при j-м устаревшем запросе. Тогда мат. ожидание количества считываний при устаревших запросах не превосходит li li li + + ··· + = li · (Hk − Hli ). k k −1 li + 1 А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 27 / 42
  • 128. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 28 / 42
  • 129. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Таким образом, мат. ожидание общего числа загрузок за i-й период (включая li чистых загрузок) будет не более li · (1 + Hk − Hli ) ≤ li · Hk . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 28 / 42
  • 130. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Таким образом, мат. ожидание общего числа загрузок за i-й период (включая li чистых загрузок) будет не более li · (1 + Hk − Hli ) ≤ li · Hk . Просуммировав по всем периодам, получим, что мат. ожидание общего числа загрузок нашего алгоритма не более L · Hk . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 28 / 42
  • 131. Оценка кол-ва считываний алгоритма (продолжение) Оценка кол-ва считываний алгоритма Таким образом, мат. ожидание общего числа загрузок за i-й период (включая li чистых загрузок) будет не более li · (1 + Hk − Hli ) ≤ li · Hk . Просуммировав по всем периодам, получим, что мат. ожидание общего числа загрузок нашего алгоритма не более L · Hk . Вспомнив, что наш противник делает хотя бы L/2 загрузок, получаем требуемую оценку на оптимальность. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 28 / 42
  • 132. План лекции 1 Введение 2 Задача кэширования 3 Задача о покрытии множествами А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 29 / 42
  • 133. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 134. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 135. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 136. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . Online-вариант задачи о покрытии множествами (online set cover problem) определяется как следующая игра между алгоритмом и его противником: А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 137. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . Online-вариант задачи о покрытии множествами (online set cover problem) определяется как следующая игра между алгоритмом и его противником: противник дает алгоритму элементы множества X по одному; А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 138. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . Online-вариант задачи о покрытии множествами (online set cover problem) определяется как следующая игра между алгоритмом и его противником: противник дает алгоритму элементы множества X по одному; на каждый элемент алгоритм должен ответить множеством из , покрывающим этот элемент; А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 139. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . Online-вариант задачи о покрытии множествами (online set cover problem) определяется как следующая игра между алгоритмом и его противником: противник дает алгоритму элементы множества X по одному; на каждый элемент алгоритм должен ответить множеством из , покрывающим этот элемент; противник дает алгоритму не все X , а некоторое его подмножество X ⊆ X ′ ; алгоритм знает заранее X и , но не знает X ′ ; А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 140. Online-вариант задачи о покрытии множествами Online-вариант задачи о покрытии множествами Пусть дано множество X = {1, 2, . . . , n} и множество его подмножеств , || = m, каждому из которых присвоен вес 1. Считаем, что все подмножества в объединении покрывают X . Покрытием (cover) называется множество подмножеств , в объединении покрывющих X . Online-вариант задачи о покрытии множествами (online set cover problem) определяется как следующая игра между алгоритмом и его противником: противник дает алгоритму элементы множества X по одному; на каждый элемент алгоритм должен ответить множеством из , покрывающим этот элемент; противник дает алгоритму не все X , а некоторое его подмножество X ⊆ X ′ ; алгоритм знает заранее X и , но не знает X ′ ; цель алгоритма — минимизировать количество множеств. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 30 / 42
  • 141. Оценка качества алгоритма Оценка качества алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 31 / 42
  • 142. Оценка качества алгоритма Оценка качества алгоритма Эффективность алгоритма будем оценивать относительно активного offline-противника. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 31 / 42
  • 143. Оценка качества алгоритма Оценка качества алгоритма Эффективность алгоритма будем оценивать относительно активного offline-противника. То есть после того, как противник выдал алгоритму все элементы из X ′ , он сам выдает некоторое решение для X ′ . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 31 / 42
  • 144. Оценка качества алгоритма Оценка качества алгоритма Эффективность алгоритма будем оценивать относительно активного offline-противника. То есть после того, как противник выдал алгоритму все элементы из X ′ , он сам выдает некоторое решение для X ′ . Мы будем доказывать верхнуюю оценку на коэффициент оптимальности алгоритма, то есть показывать, что построенное алгоритмом множество всегда несильно больше оптимального. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 31 / 42
  • 145. Пример применения задачи Пример применения задачи А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 32 / 42
  • 146. Пример применения задачи Пример применения задачи Рассмотрим сеть серверов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 32 / 42
  • 147. Пример применения задачи Пример применения задачи Рассмотрим сеть серверов. Есть потенциальное множество клиентов, и каждый сервер способен предоставить некоторый сервис какому-то подмножеству клиентов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 32 / 42
  • 148. Пример применения задачи Пример применения задачи Рассмотрим сеть серверов. Есть потенциальное множество клиентов, и каждый сервер способен предоставить некоторый сервис какому-то подмножеству клиентов. Запуску каждого сервера присвоена некоторая цена. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 32 / 42
  • 149. Пример применения задачи Пример применения задачи Рассмотрим сеть серверов. Есть потенциальное множество клиентов, и каждый сервер способен предоставить некоторый сервис какому-то подмножеству клиентов. Запуску каждого сервера присвоена некоторая цена. Клиенты присылают запросы последовательно, и отвечать на них нужно сразу. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 32 / 42
  • 150. Основные идеи алгоритма Основные идеи алгоритма А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 33 / 42
  • 151. Основные идеи алгоритма Основные идеи алгоритма Каждому множеству присвоим некоторый вес. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 33 / 42
  • 152. Основные идеи алгоритма Основные идеи алгоритма Каждому множеству присвоим некоторый вес. При приходе очередного элемента веса всех множеств, содержащих данный элемент, некоторым образом пересчитываются. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 33 / 42
  • 153. Основные идеи алгоритма Основные идеи алгоритма Каждому множеству присвоим некоторый вес. При приходе очередного элемента веса всех множеств, содержащих данный элемент, некоторым образом пересчитываются. Каждое из этих множеств будет выбрано алгоритмом на этом шаге с вероятностью, примерно пропорциональной увеличению его веса. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 33 / 42
  • 154. Более формально Более формально А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 155. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 156. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. В течение работы алгоритма веса могут только увеличиваться. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 157. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. В течение работы алгоритма веса могут только увеличиваться. 1 Изначально wS = 2m для каждого S ∈ . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 158. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. В течение работы алгоритма веса могут только увеличиваться. 1 Изначально wS = 2m для каждого S ∈ . Через будем обозначать текущее покрытие, а через C — текущее множество покрытых элементов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 159. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. В течение работы алгоритма веса могут только увеличиваться. 1 Изначально wS = 2m для каждого S ∈ . Через будем обозначать текущее покрытие, а через C — текущее множество покрытых элементов. ∑︀ Вес элемента: wj = S∈j wS , где j = {S ∈ : j ∈ S}. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 160. Более формально Более формально Для каждого множества будем поддерживать вес wS > 0. В течение работы алгоритма веса могут только увеличиваться. 1 Изначально wS = 2m для каждого S ∈ . Через будем обозначать текущее покрытие, а через C — текущее множество покрытых элементов. ∑︀ Вес элемента: wj = S∈j wS , где j = {S ∈ : j ∈ S}. Потенциал: ∑︁ Φ= n2wj . j̸∈C А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 34 / 42
  • 161. Алгоритм Алгоритм Online-Set-Cover(j) А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 162. Алгоритм Алгоритм Online-Set-Cover(j) Если wj ≥ 1, выйти. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 163. Алгоритм Алгоритм Online-Set-Cover(j) Если wj ≥ 1, выйти. В противном случае пересчитываем веса: А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 164. Алгоритм Алгоритм Online-Set-Cover(j) Если wj ≥ 1, выйти. В противном случае пересчитываем веса: Пусть k — минимальное натуральное число, для которого 2k wj > 1 (ясно, что 2k wj < 2). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 165. Алгоритм Алгоритм Online-Set-Cover(j) Если wj ≥ 1, выйти. В противном случае пересчитываем веса: Пусть k — минимальное натуральное число, для которого 2k wj > 1 (ясно, что 2k wj < 2). Для каждого S ∈ j wS = 2k wS . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 166. Алгоритм Алгоритм Online-Set-Cover(j) Если wj ≥ 1, выйти. В противном случае пересчитываем веса: Пусть k — минимальное натуральное число, для которого 2k wj > 1 (ясно, что 2k wj < 2). Для каждого S ∈ j wS = 2k wS . Выбрать из j не более 4 log n множеств в , так чтобы значение потенциала не превосходило значения потенциала до пересчета весов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 35 / 42
  • 167. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 168. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). Доказательство А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 169. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). Доказательство Для любого множества S на каждой итерации wS ≤ 2, поскольку wj ≤ 2 для всех элементов j. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 170. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). Доказательство Для любого множества S на каждой итерации wS ≤ 2, поскольку wj ≤ 2 для всех элементов j. Пересчет весов происходит только в случае, если wj < 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 171. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). Доказательство Для любого множества S на каждой итерации wS ≤ 2, поскольку wj ≤ 2 для всех элементов j. Пересчет весов происходит только в случае, если wj < 1. При пересчете весов вес хотя бы одного из множеств покрытия opt умножается на число, не меньшее 2. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 172. Анализ количества итераций Лемма Количество итераций, на которых происходит пересчет весов, не превосходит |opt | · (log m + 2). Доказательство Для любого множества S на каждой итерации wS ≤ 2, поскольку wj ≤ 2 для всех элементов j. Пересчет весов происходит только в случае, если wj < 1. При пересчете весов вес хотя бы одного из множеств покрытия opt умножается на число, не меньшее 2. 1 Проскольку изначально вес каждого множества равен 2m , а в конце — не более 2, то каждое множество может участвовать не более чем в log(4m) увеличениях. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 36 / 42
  • 173. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 174. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. Доказательство А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 175. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. Доказательство Для каждого S ∈ j через wS и wS + S будем обозначать вес S до и после пересчета. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 176. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. Доказательство Для каждого S ∈ j через wS и wS + S будем обозначать вес S до и после пересчета. ∑︀ Пусть j = S∈j S . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 177. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. Доказательство Для каждого S ∈ j через wS и wS + S будем обозначать вес S до и после пересчета. ∑︀ Пусть j = S∈j S . Алгоритм ∑︀ поддерживает неравенство wj + j = S∈j (wS + S ) ≤ 2. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 178. Оценка потенциала Лемма Всегда найдутся такие 4 log n множеств при пересчете весов, при выборе которых потенциал не увеличится. Доказательство Для каждого S ∈ j через wS и wS + S будем обозначать вес S до и после пересчета. ∑︀ Пусть j = S∈j S . Алгоритм ∑︀ поддерживает неравенство wj + j = S∈j (wS + S ) ≤ 2. Покажем теперь, что всегда найдутся нужные 4 log n множеств. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 37 / 42
  • 179. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 180. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 181. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: Повторить 4 log n раз: выбрать случайно не более одного множества из j , так что каждое множество S ∈ j выбирается с вероятностью S /2. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 182. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: Повторить 4 log n раз: выбрать случайно не более одного множества из j , так что каждое множество S ∈ j выбирается с вероятностью S /2. Такая процедура корректна, поскольку j /2 ≤ 1. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 183. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: Повторить 4 log n раз: выбрать случайно не более одного множества из j , так что каждое множество S ∈ j выбирается с вероятностью S /2. Такая процедура корректна, поскольку j /2 ≤ 1. Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не покрыт). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 184. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: Повторить 4 log n раз: выбрать случайно не более одного множества из j , так что каждое множество S ∈ j выбирается с вероятностью S /2. Такая процедура корректна, поскольку j /2 ≤ 1. Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не покрыт). Его вклад в потенциал до пересчета весов равен n2wj ′ . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 185. Доказательство (продолжение) Доказательство Рассмотрим такую процедуру: Повторить 4 log n раз: выбрать случайно не более одного множества из j , так что каждое множество S ∈ j выбирается с вероятностью S /2. Такая процедура корректна, поскольку j /2 ≤ 1. Рассмотрим элемент j ′ ∈ X , такой что j ′ ̸∈ C (то есть еще не покрыт). Его вклад в потенциал до пересчета весов равен n2wj ′ . При каждом случайном выборе множества вероятность того, что j ′ выбранное множество не содержит j ′ равна 1 − 2 . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 38 / 42
  • 186. Доказательство (продолжение) Доказательство А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 39 / 42
  • 187. Доказательство (продолжение) Доказательство Вероятность же того, что ни одно из случайно выбранных множеств его не содержит равна j ′ 4 log n (︂ )︂ 1− ≤ n−2j ′ . 2 А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 39 / 42
  • 188. Доказательство (продолжение) Доказательство Вероятность же того, что ни одно из случайно выбранных множеств его не содержит равна j ′ 4 log n (︂ )︂ 1− ≤ n−2j ′ . 2 Таким образом, мат. ожидание вклада элемента j ′ в потенциал после пересчета весов равно n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 39 / 42
  • 189. Доказательство (продолжение) Доказательство Вероятность же того, что ни одно из случайно выбранных множеств его не содержит равна j ′ 4 log n (︂ )︂ 1− ≤ n−2j ′ . 2 Таким образом, мат. ожидание вклада элемента j ′ в потенциал после пересчета весов равно n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ . Значит, мат. ожидание значения потенциала не превосходит значения потенциала изначально. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 39 / 42
  • 190. Доказательство (продолжение) Доказательство Вероятность же того, что ни одно из случайно выбранных множеств его не содержит равна j ′ 4 log n (︂ )︂ 1− ≤ n−2j ′ . 2 Таким образом, мат. ожидание вклада элемента j ′ в потенциал после пересчета весов равно n−2j ′ n2(wj ′ +j ′ ) = n2wj ′ . Значит, мат. ожидание значения потенциала не превосходит значения потенциала изначально. А тогда найдутся и соответствующие 4 log n множеств. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 39 / 42
  • 191. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 192. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). Доказательство А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 193. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). Доказательство Изначально значение потенциала не превосходит n2 . А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 194. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). Доказательство Изначально значение потенциала не превосходит n2 . Потенциал также не увеличивается. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 195. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). Доказательство Изначально значение потенциала не превосходит n2 . Потенциал также не увеличивается. Значит, если wj ≥ 1, то n2wj ≥ 1 и j ∈ C , то есть алгоритм выдает покрытие. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 196. Доказательство корректности Теорема Алгоритм Online-Set-Cover корректно выдает покрытие X ′ размера O(|opt log m log n|). Доказательство Изначально значение потенциала не превосходит n2 . Потенциал также не увеличивается. Значит, если wj ≥ 1, то n2wj ≥ 1 и j ∈ C , то есть алгоритм выдает покрытие. На каждой итерации выбирается не более 4 log n множеств, всего же итераций не более |opt (log m + 2). А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 40 / 42
  • 197. Что мы узнали за сегодня? Что мы узнали за сегодня? А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 41 / 42
  • 198. Что мы узнали за сегодня? Что мы узнали за сегодня? Online-алгоритм — алгоритм, обрабатывающий вход по мере поступления. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 41 / 42
  • 199. Что мы узнали за сегодня? Что мы узнали за сегодня? Online-алгоритм — алгоритм, обрабатывающий вход по мере поступления. Эффективность online-алгоритма оценивается относительно алгоритма, заранее знающего последовательность запросов. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 41 / 42
  • 200. Что мы узнали за сегодня? Что мы узнали за сегодня? Online-алгоритм — алгоритм, обрабатывающий вход по мере поступления. Эффективность online-алгоритма оценивается относительно алгоритма, заранее знающего последовательность запросов. 2Hk -оптимальный относительно забывчивого противника алгоритм для задачи кэширования. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 41 / 42
  • 201. Что мы узнали за сегодня? Что мы узнали за сегодня? Online-алгоритм — алгоритм, обрабатывающий вход по мере поступления. Эффективность online-алгоритма оценивается относительно алгоритма, заранее знающего последовательность запросов. 2Hk -оптимальный относительно забывчивого противника алгоритм для задачи кэширования. O(log m log n)-оптимальный относительно активного offline-противника алгоритм для задачи о покрытии множествами. А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 41 / 42
  • 202. Спасибо за внимание! А. Куликов (CS клуб при ПОМИ) 21. Online алгоритмы 42 / 42