Техника частичного каскадирования — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(Добавлен первый способ решения)
Строка 1: Строка 1:
 
'''Техника частичного каскадирования''' (англ. ''fractional cascading technique'') {{---}} это способ организации структуры данных, который предназначен для быстрого итеративного поиска в <tex> k </tex> каталогах.
 
'''Техника частичного каскадирования''' (англ. ''fractional cascading technique'') {{---}} это способ организации структуры данных, который предназначен для быстрого итеративного поиска в <tex> k </tex> каталогах.
 +
 +
{{Задача
 +
|definition = Дано <tex> k </tex> каталогов <tex> C_i </tex>, каталог <tex>i</tex> представляет собой упорядоченный массив размера <tex> n_i </tex>. Поступают запросы, которые представляют собой один элемент <tex> x </tex>. Требуется для каждого запроса определить в каждом каталоге элемент меньше либо равный <tex> x </tex>. 
 +
}}
 +
 +
== Различные подходы к решению ==
 +
 +
Пусть <tex> n = \sum\limits_{i = 1}^k n_i </tex>.
 +
<br>
 +
1) Пусть пришел запрос <tex> x </tex>. Пробежимся по всем каталогам. Пусть мы находимся в <tex> i</tex>-ом каталоге, тогда мы можем ответить на запрос для данного каталога за <tex> O(\log n_i) </tex> используя бинарный поиск. Так как каталогов <tex> k </tex> штук, то в итоге мы обработаем запрос за <tex> O(k \log n) </tex>. Для хранения всех каталогов понадобится <tex> \Theta(n) </tex> памяти.
 +
<br>

Версия 01:01, 30 мая 2017

Техника частичного каскадирования (англ. fractional cascading technique) — это способ организации структуры данных, который предназначен для быстрого итеративного поиска в [math] k [/math] каталогах.


Задача:
Дано [math] k [/math] каталогов [math] C_i [/math], каталог [math]i[/math] представляет собой упорядоченный массив размера [math] n_i [/math]. Поступают запросы, которые представляют собой один элемент [math] x [/math]. Требуется для каждого запроса определить в каждом каталоге элемент меньше либо равный [math] x [/math].


Различные подходы к решению

Пусть [math] n = \sum\limits_{i = 1}^k n_i [/math].
1) Пусть пришел запрос [math] x [/math]. Пробежимся по всем каталогам. Пусть мы находимся в [math] i[/math]-ом каталоге, тогда мы можем ответить на запрос для данного каталога за [math] O(\log n_i) [/math] используя бинарный поиск. Так как каталогов [math] k [/math] штук, то в итоге мы обработаем запрос за [math] O(k \log n) [/math]. Для хранения всех каталогов понадобится [math] \Theta(n) [/math] памяти.