Изменения

Перейти к: навигация, поиск

Quotient filter

2 байта добавлено, 13:04, 14 ноября 2016
Поиск
Пусть мы ищем ключ <tex>K</tex>. Смотрим в ячейку с индексом <tex>h_q</tex>, это каноническая ячейка для частного <tex>h_q</tex>. Если в этой ячейке бит занятости не единица, то элемент точно не содержится в множестве.
Если бит занятости единица, то нам нужно найти пробег для <tex>h_q</tex>. Так как начало нужного пробега может быть сдвинуто, найдем начало кластера. Идем влево от ячейки с индексом <tex>h_q</tex> и ищем первую с битом сдвига равным нулю, эта ячейка и будет началом кластера. Пока мы идем влево от ячейки с индексом <tex>h_q</tex> будем поддерживать счетчик, который бедет показывать сколько пробегов нам нужно будет пропустить от начала кластера. Каждая ячейка с битом занятости равным единице увеличивает счетчик на <tex>1</tex>. После того как мы нашли начало кластера, пойдем от него влевовправо, каждая ячейка с битом продолжения равным нулю говорит о завершении пробега, когда счетчик станет равным нулю мы найдем нужный нам пробег для частного <tex>h_q</tex>. Если в этом пробеге содержится <tex>h_r</tex>, то <tex>K</tex>, вероятно, содержится в множестве, иначе <tex>K</tex> точно не содержится в множестве.
=== Вставка ===
Анонимный участник

Навигация