Ответ 1
Этот потоковый алгоритм создает следующую структуру.
-
Найдите рандомизированный алгоритм потоковой передачи, выход которого (как случайная величина) имеет желаемое ожидание, но обычно имеет высокую дисперсию (т.е. шум).
-
Чтобы уменьшить дисперсию/шум, параллельно запускайте несколько независимых копий и объедините их выходы.
Обычно 1 более интересен, чем 2. Этот алгоритм 2 действительно несколько нестандартен, но я буду говорить только о 1.
Предположим, что мы обрабатываем ввод
a b c a b a .
С тремя счетчиками нет необходимости в хеше.
a: 3, b: 2, c: 1
Предположим, однако, что мы имеем только один. Существует восемь возможных функций h : {a, b, c} -> {+1, -1}
. Вот таблица результатов.
h |
abc | X = counter
----+--------------
+++ | +3 +2 +1 = 6
++- | +3 +2 -1 = 4
+-- | +3 -2 -1 = 0
+-+ | +3 -2 +1 = 2
--+ | -3 -2 +1 = -4
--- | -3 -2 -1 = -6
-+- | -3 +2 -1 = -2
-++ | -3 +2 +1 = 0
Теперь мы можем вычислить ожидания
(6 + 4 + 0 + 2) - (-4 + -6 + -2 + 0)
E[h(a) X] = ------------------------------------ = 24/8 = 3
8
(6 + 4 + -2 + 0) - (0 + 2 + -4 + -6)
E[h(b) X] = ------------------------------------ = 16/8 = 2
8
(6 + 2 + -4 + 0) - (4 + 0 + -6 + -2)
E[h(c) X] = ------------------------------------ = 8/8 = 1 .
8
Что здесь происходит? Для a
, скажем, мы можем разложить X = Y + Z
, где Y
- изменение суммы для a
s, а Z
- сумма для не a
s. По линейности ожидания имеем
E[h(a) X] = E[h(a) Y] + E[h(a) Z] .
E[h(a) Y]
представляет собой сумму с термином для каждого вхождения a
, то есть h(a)^2 = 1
, поэтому E[h(a) Y]
- количество вхождений a
. Другой член E[h(a) Z]
равен нулю; даже при заданном h(a)
, каждое другое значение хэша одинаково вероятно плюс или минус один, и поэтому вносит нуль в ожидании.
Фактически, хеш-функция не должна быть однородной случайной, и хорошо: не было бы способа ее сохранить. Достаточно, чтобы хэш-функция была попарно независимой (любые два отдельных хэш-значения независимы). Для нашего простого примера достаточно случайного выбора следующих четырех функций.
abc
+++
+--
-+-
--+
Я оставлю вам новые расчеты.