Участник:Vlad SG — различия между версиями
Vlad SG (обсуждение | вклад) |
Vlad SG (обсуждение | вклад) (Добавлен источник) |
||
Строка 48: | Строка 48: | ||
− | == Вероятностный алгоритм == | + | == Вероятностный алгоритм (англ. ''random marking algorithm'')== |
+ | В данном алгоритме, у каждого элемента, хранящегося в кэше, может быть метка. Изначально меток ни на одном элементе нет. | ||
+ | |||
+ | Когда в кэш поступает запрос: | ||
+ | * Если кэш попадание, то просто помечаем значение. | ||
+ | * Если кэш промах | ||
+ | *# Если все элементы уже помечены, снимаем пометки со всех значений. | ||
+ | *# Берём случайное не помеченное значение и вытесняeм его, а новое значение помечаем. | ||
+ | |||
+ | == Оценка времени работы алгоритма == | ||
+ | 1 | ||
== Источники == | == Источники == | ||
* [https://www.cs.cmu.edu/~sleator/papers/competitive-paging.pdf A. Fiat, R. M. Karp, M. Luby, L. A. McGeoch, D. D. Sleator, N. E. Young, Competitive Paging Algorithms, Journal of Algorithms 12, 685-699 (1991)] | * [https://www.cs.cmu.edu/~sleator/papers/competitive-paging.pdf A. Fiat, R. M. Karp, M. Luby, L. A. McGeoch, D. D. Sleator, N. E. Young, Competitive Paging Algorithms, Journal of Algorithms 12, 685-699 (1991)] | ||
+ | * [http://static.cs.brown.edu/courses/csci2950-w/ranpagingNotes.pdf Lecture notes for Brown CS251 - Randomized paging algorithms] | ||
[[Категория: Алгоритмы и структуры данных]] | [[Категория: Алгоритмы и структуры данных]] |
Версия 07:52, 27 января 2022
Содержание
Формулировка
Пусть задана последовательность из
запросов к внешней памяти. Необходимо решить для каждого запроса: сохранить его значение в кэш размера или оставить его во внешней памяти.Основные определения
Определение: |
Кэш попадание (англ. cache hit) — результат обрабатываемого запроса уже хранится в кэше и его можно вернуть мгновенно. |
Определение: |
Кэш промах (англ. cache miss) — результат обрабатываемого запроса отсутствует в кэше и чтобы его получить необходимо обращаться к внешней памяти. При получении ответа мы так же можем сохранить новое значение в кэш, вытеснив(удалив) некоторое старое. |
Определение: |
Временем работы алгоритма кэширования будем называть количество кэш промахов случившихся при обработке всех запросов. |
При анализе случайных алгоритмов будем использовать матожидание количества кэш промахов при всех возможных случайных выборах, но для фиксированной последовательности запросов.
Определение: |
Онлайн алгоритм (англ. on-line algorithm) — алгоритм, который при обработке запроса не знает следующих запросов. |
Определение: |
Оффлайн алгоритм (англ. off-line algorithm) — алгоритм, которому на вход даются все запросы сразу. |
Определение: |
-оптимальность — свойство онлайн алгоритма, означающее что время работы этого алгоритма на любых входных данных не более чем в раз больше, чем у любого оффлайнового, с точностью до аддитивной константы. |
Проблема детерминированных алгоритмов
Теорема (О нижней оценке): |
Любой -оптимальный онлайн детерминированный алгоритм кэширования имеет . |
Доказательство: |
Обозначим и как время работы оптимального и детерминированного алгоритма на входе . По определению -оптимальности имеем . Покажем, что достаточно построить для любого такую последовательность запросов , что . Так как , получаем . С другой стороны можно квантор раскрыть для значения : , а потом снова перейти к пределу . Перепишем неравенства в следующем виде , откуда очевидно, что .Теперь построим . В последовательности будем использовать только различных запросов. Первыми запросами возьмём любые различные, а дальше, каждым следующим запросом поставим тот, результата которого нет в данный момент в кэше детерминированного алгоритма. Это хоть и не явное, но корректное задание последовательности, потому что имея алгоритм, мы можем вычислить каждый запрос в на основе предыдущих. Очевидно, что .Посмотрим как на будет работать следующий, возможно оптимальный оффлайн алгоритм (индекс mopt). Первые k элементов алгоритм добавит в кэш, так как они все различные. Когда случается промах, алгоритм среди значений в кэше и только что обработанного результата вытесняет то, которое в последующих запросах встречается первый раз как можно позже или не встречается совсем. При таком выборе, следующий кэш промах случится не менее чем через запросов. Предположим, что это не так, и кэш промах случился через запросов. Так как количество различных запросов на 1 больше размера кэша, то этот промах произошёл на запросе, который мы вытеснили из кэша в предыдущий раз. Из следует, что есть запросы, которые мы не встретили среди первых , а значит их первое вхождение будет после того значения, которое мы вытеснили. Получили противоречие, а значит предположение не верно. Оценим время работы возможно оптимального оффлайн алгоритма . Последнее неравенство выполнено, т.к. . Очевидно , откудаТеорема доказана. |
Вероятностный алгоритм (англ. random marking algorithm)
В данном алгоритме, у каждого элемента, хранящегося в кэше, может быть метка. Изначально меток ни на одном элементе нет.
Когда в кэш поступает запрос:
- Если кэш попадание, то просто помечаем значение.
- Если кэш промах
- Если все элементы уже помечены, снимаем пометки со всех значений.
- Берём случайное не помеченное значение и вытесняeм его, а новое значение помечаем.
Оценка времени работы алгоритма
1