Алгоритм потоковой передачи

Класс алгоритмов, работающих с потоками данных

В информатике потоковые алгоритмы — это алгоритмы обработки потоков данных , в которых входные данные представлены в виде последовательности элементов и могут быть проверены всего за несколько проходов, обычно за один . Эти алгоритмы предназначены для работы с ограниченной памятью, обычно логарифмической по размеру потока и/или по максимальному значению в потоке, а также могут иметь ограниченное время обработки на элемент.

В результате этих ограничений потоковые алгоритмы часто выдают приблизительные ответы, основанные на сводке или «наброске» потока данных.

История

Хотя потоковые алгоритмы уже изучались Манро и Патерсоном [1] еще в 1978 году, а также Филиппом Флажоле и Г. Найджелом Мартином в 1982/83 годах, [2] область потоковых алгоритмов была впервые формализована и популяризирована в статье 1996 года Ноги Алона , Йосси Матиаса и Марио Сегеди . [3] За эту статью авторы позже выиграли премию Гёделя в 2005 году «за их основополагающий вклад в потоковые алгоритмы». С тех пор было проведено большое количество работ, сосредоточенных вокруг потоковых алгоритмов данных, которые охватывают широкий спектр областей компьютерной науки, таких как теория, базы данных, сетевые технологии и обработка естественного языка.

Полупотоковые алгоритмы были введены в 2005 году как ослабление потоковых алгоритмов для графов, [4] в которых допустимое пространство линейно по числу вершин n , но только логарифмически по числу ребер m . Это ослабление все еще имеет смысл для плотных графов и может решать интересные проблемы (например, связность), которые неразрешимы в пространстве. о ( н ) {\displaystyle o(n)}

Модели

Модель потока данных

В модели потока данных часть или все входные данные представлены в виде конечной последовательности целых чисел (из некоторого конечного домена), которая обычно недоступна для случайного доступа , а вместо этого поступает по одному в «потоке». [5] Если поток имеет длину n , а домен имеет размер m , алгоритмы обычно ограничены использованием пространства, логарифмического по m и n . Они обычно могут делать только некоторое небольшое постоянное число проходов по потоку, иногда всего один . [6]

Модели турникетов и кассовых аппаратов

Большая часть литературы по потоковой передаче посвящена вычислению статистики по распределениям частот, которые слишком велики для хранения. Для этого класса задач существует вектор (инициализированный нулевым вектором ), обновления которого представлены ему в потоке. Цель этих алгоритмов — вычислить функции, используя значительно меньше места, чем потребовалось бы для точного представления. Существуют две общие модели для обновления таких потоков, называемые моделями «кассового аппарата» и «турникета». [7] а = ( а 1 , , а н ) {\ displaystyle \ mathbf {a} = (a_ {1}, \ dots, a_ {n})} 0 {\displaystyle \mathbf {0} } а {\displaystyle \mathbf {а} } а {\displaystyle \mathbf {а} }

В модели кассового аппарата каждое обновление имеет форму , так что увеличивается на некоторое положительное целое число . Известный особый случай — когда (разрешены только вставки единиц). я , с {\ displaystyle \ langle i, c \ rangle} а я {\displaystyle a_{i}} с {\displaystyle с} с = 1 {\displaystyle с=1}

В модели турникета каждое обновление имеет вид , так что увеличивается на некоторое (возможно, отрицательное) целое число . В модели «строгого турникета» ни одно в любой момент времени не может быть меньше нуля. я , с {\ displaystyle \ langle i, c \ rangle} а я {\displaystyle a_{i}} с {\displaystyle с} а я {\displaystyle a_{i}}

Модель раздвижного окна

В нескольких работах также рассматривается модель «скользящего окна». [ необходима цитата ] В этой модели интересующая функция вычисляется в окне фиксированного размера в потоке. По мере продвижения потока элементы из конца окна удаляются из рассмотрения, а новые элементы из потока занимают их место.

Помимо вышеупомянутых проблем, основанных на частоте, были изучены и некоторые другие типы проблем. Многие проблемы с графами решаются в условиях, когда матрица смежности или список смежности графа передаются в неизвестном порядке. Существуют также некоторые проблемы, которые сильно зависят от порядка потока (т. е. асимметричные функции), такие как подсчет количества инверсий в потоке и поиск самой длинной возрастающей подпоследовательности. [ необходима цитата ]

Оценка

Производительность алгоритма, работающего с потоками данных, измеряется тремя основными факторами:

  • Количество проходов, которые алгоритм должен выполнить по потоку.
  • Доступная память.
  • Время работы алгоритма.

Эти алгоритмы имеют много общего с онлайн-алгоритмами, поскольку оба требуют принятия решений до того, как все данные станут доступны, но они не идентичны. Алгоритмы потока данных имеют ограниченную доступную память, но они могут откладывать действия до тех пор, пока не прибудет группа точек, в то время как онлайн-алгоритмы должны предпринимать действия, как только прибудет каждая точка.

Если алгоритм является алгоритмом приближения, то точность ответа является еще одним ключевым фактором. Точность часто определяется как приближение, что означает, что алгоритм достигает ошибки менее чем с вероятностью . ( ϵ , δ ) {\displaystyle (\epsilon,\delta)} ϵ {\displaystyle \эпсилон} 1 δ {\displaystyle 1-\дельта}

Приложения

Потоковые алгоритмы имеют несколько применений в сетях, таких как мониторинг сетевых соединений для потоков слонов , подсчет количества отдельных потоков, оценка распределения размеров потоков и т. д. [8] Они также имеют приложения в базах данных, такие как оценка размера объединения [ необходима ссылка ] .

Некоторые проблемы с потоковой передачей

Частотные моменты

Частотный момент k набора частот определяется как . а {\displaystyle \mathbf {а} } Ф к ( а ) = я = 1 н а я к {\displaystyle F_{k}(\mathbf {a})=\sum _{i=1}^{n}a_{i}^{k}}

Первый момент — это просто сумма частот (т. е. общее количество). Второй момент полезен для вычисления статистических свойств данных, таких как коэффициент вариации Джини . определяется как частота наиболее частых элементов. Ф 1 {\displaystyle F_{1}} Ф 2 {\displaystyle F_{2}} Ф {\displaystyle F_{\infty}}

Основополагающая работа Алона, Матиаса и Сегеди была посвящена проблеме оценки частотных моментов. [ необходима цитата ]

Расчет частотных моментов

Прямой подход к нахождению частотных моментов требует поддержания регистра m i для всех различных элементов a i ∈ (1,2,3,4,..., N ), что требует как минимум памяти порядка . [3] Но у нас есть ограничения по пространству и требуется алгоритм, который вычисляет в гораздо меньшей памяти. Этого можно достичь, используя приближения вместо точных значений. Алгоритм, который вычисляет ( ε,δ )приближение F k , где F' k является ( ε,δ )-приближенным значением F k . [9] Где ε является параметром приближения, а δ является параметром достоверности. [10] Ω ( Н ) {\displaystyle \Омега (Н)}

Расчет Ф0(отдельные элементы в DataStream)
Алгоритм FM-Sketch

Флажоле и др. в [2] представили вероятностный метод подсчета, который был вдохновлен статьей Роберта Морриса . [11] Моррис в своей статье говорит, что если требование точности отбросить, счетчик n можно заменить счетчиком log n , который может храниться в log log n битах. [12] Флажоле и др. в [2] улучшили этот метод, используя хэш-функцию h, которая, как предполагается, равномерно распределяет элемент в хэш-пространстве (двоичная строка длины L ).

час : [ м ] [ 0 , 2 Л 1 ] {\displaystyle h:[м]\rightarrow [0,2^{L}-1]}

Пусть bit( y,k ) представляет k-й бит в двоичном представлении y.

у = к 0 б я т ( у , к ) 2 к {\displaystyle y=\sum _{k\geq 0}\mathrm {bit} (y,k)*2^{k}}

Пусть представляет позицию младшего значащего 1-го бита в двоичном представлении y i с подходящим соглашением для . ρ ( y ) {\displaystyle \rho (y)} ρ ( 0 ) {\displaystyle \rho (0)}

ρ ( y ) = { M i n ( k : b i t ( y , k ) == 1 ) if  y > 0 L if  y = 0 {\displaystyle \rho (y)={\begin{cases}\mathrm {Min} (k:\mathrm {bit} (y,k)==1)&{\text{if }}y>0\\L&{\text{if }}y=0\end{cases}}}

Пусть A — последовательность потока данных длиной M , мощность которого необходимо определить. Пусть BITMAP [0... L − 1] —

хэш-пространство, где записаны ρ ( hashedvalues ​​). Затем приведенный ниже алгоритм определяет приблизительную мощность A .

Процедура FM-Sketch: для i в диапазоне от 0 до L − 1 сделать BITMAP[i] := 0 конец для для x в A: сделать Индекс := ρ(хэш(x)) если BITMAP[индекс] = 0 тогда BITMAP[индекс] := 1 конец, если конец для B := Положение самого левого нулевого бита BITMAP[] возврат 2 ^ B

Если в потоке данных имеется N различных элементов.

  • Тогда BITMAP [ i ] определенно равен 0 i log ( N ) {\displaystyle i\gg \log(N)}
  • Тогда BITMAP [ i ] определенно равен 1 i log ( N ) {\displaystyle i\ll \log(N)}
  • Тогда BITMAP [ i ] представляет собой полосы из нулей и единиц . i log ( N ) {\displaystyle i\approx \log(N)}
К-алгоритм минимального значения

Предыдущий алгоритм описывает первую попытку приближения F 0 в потоке данных, предпринятую Флажоле и Мартином. Их алгоритм выбирает случайную хэш-функцию , которая, как они предполагают, равномерно распределяет хэш-значения в хэш-пространстве.

Бар-Йоссеф и др. в [10] представили алгоритм k-минимального значения для определения количества различных элементов в потоке данных. Они использовали похожую хэш-функцию h , которая может быть нормализована до [0,1] как . Но они зафиксировали предел t для количества значений в хэш-пространстве. Значение t предполагается порядка (т.е. меньшее значение приближения ε требует большего t ). Алгоритм KMV сохраняет только t - наименьшие значения хэш-функции в хэш-пространстве. После того, как все m значений потока поступят, используется для вычисления . То есть, в близком к однородному хэш-пространстве они ожидают, что по крайней мере t элементов будут меньше . h : [ m ] [ 0 , 1 ] {\displaystyle h:[m]\rightarrow [0,1]} O ( 1 ε 2 ) {\displaystyle O\left({\dfrac {1}{\varepsilon _{2}}}\right)} υ = M a x ( h ( a i ) ) {\displaystyle \upsilon =\mathrm {Max} (h(a_{i}))} F 0 = t υ {\displaystyle F'_{0}={\dfrac {t}{\upsilon }}} O ( t F 0 ) {\displaystyle O\left({\dfrac {t}{F_{0}}}\right)}

Процедура 2 K-минимальное значениеИнициализируем первые значения t KMVдля а в а1 к делать если h(a) < Max(KMV), то Удалить Max(KMV) из набора KMV Вставьте h(a) в KMV конец, есликонец длявозврат т/Макс(КМВ)
Анализ сложности КМВ

Алгоритм KMV может быть реализован в пространстве бит памяти. Каждое хэш-значение требует пространства порядка бит памяти. Существуют хэш-значения порядка . Время доступа можно сократить, если хранить t хэш-значений в двоичном дереве. Таким образом, временная сложность будет снижена до . O ( ( 1 ε 2 ) log ( m ) ) {\displaystyle O\left(\left({\dfrac {1}{\varepsilon _{2}}}\right)\cdot \log(m)\right)} O ( log ( m ) ) {\displaystyle O(\log(m))} O ( 1 ε 2 ) {\displaystyle O\left({\dfrac {1}{\varepsilon _{2}}}\right)} O ( log ( 1 ε ) log ( m ) ) {\displaystyle O\left(\log \left({\dfrac {1}{\varepsilon }}\right)\cdot \log(m)\right)}

РасчетФ к

Алон и др. оценивают F k , определяя случайные величины, которые могут быть вычислены в заданном пространстве и времени. [3] Ожидаемое значение случайных величин дает приблизительное значение F k .

Предположим, что длина последовательности m известна заранее. Тогда построим случайную величину X следующим образом:

  • Выберите p случайный член последовательности A с индексом p , a p = l ( 1 , 2 , 3 , , n ) {\displaystyle a_{p}=l\in (1,2,3,\ldots ,n)}
  • Пусть , представляет собой число вхождений l в члены последовательности A, следующие за a p . r = | { q : q p , a q = l } | {\displaystyle r=|\{q:q\geq p,a_{q}=l\}|}
  • Случайная величина . X = m ( r k ( r 1 ) k ) {\displaystyle X=m(r^{k}-(r-1)^{k})}

Предположим, что S 1 имеет порядок , а S 2 имеет порядок . Алгоритм берет случайную величину S 2 и выводит медиану . Где Y i — среднее значение X ij , где 1 ≤ jS 1 . O ( n 1 1 / k / λ 2 ) {\displaystyle O(n^{1-1/k}/\lambda ^{2})} O ( log ( 1 / ε ) ) {\displaystyle O(\log(1/\varepsilon ))} Y 1 , Y 2 , . . . , Y S 2 {\displaystyle Y_{1},Y_{2},...,Y_{S2}} Y {\displaystyle Y}

Теперь вычислим математическое ожидание случайной величины E ( X ) .

E ( X ) = i = 1 n i = 1 m i ( j k ( j 1 ) k ) = m m [ ( 1 k + ( 2 k 1 k ) + + ( m 1 k ( m 1 1 ) k ) ) + ( 1 k + ( 2 k 1 k ) + + ( m 2 k ( m 2 1 ) k ) ) + + ( 1 k + ( 2 k 1 k ) + + ( m n k ( m n 1 ) k ) ) ] = i = 1 n m i k = F k {\displaystyle {\begin{array}{lll}E(X)&=&\sum _{i=1}^{n}\sum _{i=1}^{m_{i}}(j^{k}-(j-1)^{k})\\&=&{\frac {m}{m}}[(1^{k}+(2^{k}-1^{k})+\ldots +(m_{1}^{k}-(m_{1}-1)^{k}))\\&&\;+\;(1^{k}+(2^{k}-1^{k})+\ldots +(m_{2}^{k}-(m_{2}-1)^{k}))+\ldots \\&&\;+\;(1^{k}+(2^{k}-1^{k})+\ldots +(m_{n}^{k}-(m_{n}-1)^{k}))]\\&=&\sum _{i=1}^{n}m_{i}^{k}=F_{k}\end{array}}}
СложностьФ к

Из алгоритма вычисления F k , рассмотренного выше, мы можем видеть, что каждая случайная величина X хранит значение a p и r . Таким образом, для вычисления X нам нужно поддерживать только log( n ) бит для хранения a p и log( n ) бит для хранения r . Общее количество случайных величин X будет ⁠ ⁠ S 1 S 2 {\displaystyle S_{1}*S_{2}} .

Следовательно, общая пространственная сложность алгоритма имеет порядок O ( k log 1 ε λ 2 n 1 1 k ( log n + log m ) ) {\displaystyle O\left({\dfrac {k\log {1 \over \varepsilon }}{\lambda ^{2}}}n^{1-{1 \over k}}\left(\log n+\log m\right)\right)}

Более простой подход к расчетуФ 2

Предыдущий алгоритм вычисляет в порядке битов памяти. Алон и др. в [3] упростили этот алгоритм, используя четырежды независимую случайную величину со значениями, отображенными в . F 2 {\displaystyle F_{2}} O ( n ( log m + log n ) ) {\displaystyle O({\sqrt {n}}(\log m+\log n))} { 1 , 1 } {\displaystyle \{-1,1\}}

Это еще больше снижает сложность вычислений F 2 {\displaystyle F_{2}} O ( log 1 ε λ 2 ( log n + log m ) ) {\displaystyle O\left({\dfrac {\log {1 \over \varepsilon }}{\lambda ^{2}}}\left(\log n+\log m\right)\right)}

Частые элементы

В модели потока данных проблема частых элементов заключается в выводе набора элементов, которые составляют больше некоторой фиксированной доли потока. Особым случаем является проблема большинства , которая заключается в определении того, составляет ли какое-либо значение большую часть потока.

Более формально, зафиксируем некоторую положительную константу c > 1, пусть длина потока будет m , и пусть f i обозначает частоту значения i в потоке. Проблема частых элементов заключается в выводе набора { i | f i > m/c }. [13]

Вот некоторые известные алгоритмы:

Обнаружение событий

Обнаружение событий в потоках данных часто выполняется с использованием алгоритма Heavy hitters, как указано выше: наиболее частые элементы и их частота определяются с помощью одного из этих алгоритмов, затем наибольшее увеличение по сравнению с предыдущей точкой времени сообщается как тенденция. Этот подход можно усовершенствовать, используя экспоненциально взвешенные скользящие средние и дисперсию для нормализации. [14]

Подсчет отдельных элементов

Подсчет количества различных элементов в потоке (иногда называемый моментом F 0 ) — еще одна хорошо изученная проблема. Первый алгоритм для нее предложили Флажоле и Мартин. В 2010 году Дэниел Кейн , Джелани Нельсон и Дэвид Вудрафф нашли асимптотически оптимальный алгоритм для этой проблемы. [15] Он использует O ( ε 2 + log d ) пространства с O (1) временем обновления и отчетности в худшем случае, а также универсальные хеш-функции и r -wise независимое хеш-семейство, где r = Ω(log(1/ ε ) / log log(1/ ε )) .

Энтропия

(Эмпирическая) энтропия набора частот определяется как , где . a {\displaystyle \mathbf {a} } F k ( a ) = i = 1 n a i m log a i m {\displaystyle F_{k}(\mathbf {a} )=\sum _{i=1}^{n}{\frac {a_{i}}{m}}\log {\frac {a_{i}}{m}}} m = i = 1 n a i {\displaystyle m=\sum _{i=1}^{n}a_{i}}

Онлайн обучение

Обучить модель (например, классификатор ) за один проход по обучающему набору.


Нижние границы

Нижние границы были вычислены для многих проблем потоковой передачи данных, которые были изучены. До сих пор наиболее распространенной техникой для вычисления этих нижних границ было использование сложности связи . [ необходима цитата ]

Смотрите также

Примечания

  1. ^ Манро, Дж. Ян; Патерсон, Майк (1978). «Выбор и сортировка с ограниченной памятью». 19-й ежегодный симпозиум по основам компьютерной науки, Энн-Арбор, Мичиган, США, 16–18 октября 1978 г. IEEE Computer Society. стр. 253–258. doi :10.1109/SFCS.1978.32.
  2. ^ abc Флажоле и Мартин (1985) harvtxt error: no target: CITEREFFlajoletMartin1985 (help)
  3. ^ abcd Алон, Матиас и Сегеди (1996)
  4. ^ Фейгенбаум, Джоан; Сампат, Каннан (2005). «О проблемах графов в полупотоковой модели». Теоретическая информатика . 348 (2): 207–216. doi : 10.1016/j.tcs.2005.09.013 .
  5. ^ Бабкок, Брайан; Бабу, Шивнат; Датар, Маюр; Мотвани, Раджив; Видом, Дженнифер (2002). «Модели и проблемы в системах потоков данных». Труды двадцать первого симпозиума ACM SIGMOD-SIGACT-SIGART по принципам систем баз данных . PODS '02. Нью-Йорк, Нью-Йорк, США: ACM. стр. 1–16. CiteSeerX 10.1.1.138.190 . doi :10.1145/543613.543615. ISBN  978-1581135077. S2CID  2071130.
  6. ^ Бар-Йосеф, Зив; Джейрам, ТС; Кумар, Рави; Сивакумар, Д.; Тревисан, Лука (2002-09-13). «Подсчет различных элементов в потоке данных». Рандомизация и методы аппроксимации в информатике . Конспект лекций по информатике. Том 2483. Springer, Берлин, Гейдельберг. стр. 1–10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN  978-3540457268. S2CID  4684185.
  7. ^ Гилберт и др. (2001)
  8. ^ Сюй (2007)
  9. ^ Индик, Петр; Вудрафф, Дэвид (2005-01-01). "Оптимальные аппроксимации частотных моментов потоков данных". Труды тридцать седьмого ежегодного симпозиума ACM по теории вычислений . STOC '05. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 202–208. doi :10.1145/1060590.1060621. ISBN 978-1-58113-960-0. S2CID  7911758.
  10. ^ ab Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (2002-09-13). Rolim, José DP; Vadhan, Salil (ред.). Подсчет отдельных элементов в потоке данных . Конспект лекций по информатике. Springer Berlin Heidelberg. стр. 1–10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN  978-3-540-44147-2. S2CID  4684185.
  11. ^ Моррис (1978)
  12. ^ Флажоле, Филипп (1985-03-01). «Приблизительный подсчет: подробный анализ». BIT Numerical Mathematics . 25 (1): 113–134. CiteSeerX 10.1.1.64.5320 . doi :10.1007/BF01934993. ISSN  0006-3835. S2CID  2809103. 
  13. ^ Кормод, Грэм (2014). «Misra-Gries Summaries». В Као, Мин-Ян (ред.). Энциклопедия алгоритмов . Springer US. стр. 1–5. doi :10.1007/978-3-642-27848-8_572-1. ISBN 9783642278488.
  14. ^ Шуберт, Э.; Вайлер, М.; Кригель, Х. П. (2014). SigniTrend: масштабируемое обнаружение новых тем в текстовых потоках с помощью хэшированных порогов значимости . Труды 20-й международной конференции ACM SIGKDD по обнаружению знаний и интеллектуальному анализу данных - KDD '14. стр. 871–880. doi :10.1145/2623330.2623740. ISBN 9781450329569.
  15. ^ Кейн, Нельсон и Вудрафф (2010)

Ссылки

  • Алон, Нога ; Матиас, Йосси ; Сегеди, Марио (1999), «Пространственная сложность аппроксимации частотных моментов», Журнал компьютерных и системных наук , 58 (1): 137–147, doi : 10.1006/jcss.1997.1545 , ISSN  0022-0000. Впервые опубликовано как Алон, Нога; Матиас, Йосси; Сегеди, Марио (1996), "Пространственная сложность аппроксимации частотных моментов", Труды 28-го симпозиума ACM по теории вычислений (STOC 1996) , стр. 20–29, CiteSeerX 10.1.1.131.4984 , doi :10.1145/237814.237823, ISBN  978-0-89791-785-8, S2CID  1627911.
  • Бабкок, Брайан; Бабу, Шивнат; Датар, Маюр; Мотвани, Раджив ; Видом, Дженнифер (2002), «Модели и проблемы в системах потоков данных», Труды 21-го симпозиума ACM SIGMOD-SIGACT-SIGART по принципам систем баз данных (PODS 2002) (PDF) , стр. 1–16, CiteSeerX  10.1.1.138.190 , doi :10.1145/543613.543615, ISBN 978-1581135077, S2CID  2071130, заархивировано из оригинала (PDF) 2017-07-09 , извлечено 2013-07-15.
  • Гилберт, А.С .; Котидис, И.; Мутукришнан, С.; Штраус, М.Дж. (2001), «Вейвлеты в потоках: однопроходные сводки для приблизительных агрегированных запросов» (PDF) , Труды Международной конференции по сверхбольшим базам данных : 79–88.
  • Кейн, Дэниел М.; Нельсон, Джелани; Вудрафф, Дэвид П. (2010). «Оптимальный алгоритм для проблемы отдельных элементов». Труды двадцать девятого симпозиума ACM SIGMOD-SIGACT-SIGART по принципам систем баз данных . PODS '10. Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 41–52. CiteSeerX  10.1.1.164.142 . doi :10.1145/1807085.1807094. ISBN 978-1-4503-0033-9. S2CID  10006932..
  • Карп, Р. М.; Пападимитриу , Ч. Х .; Шенкер, С. (2003), «Простой алгоритм поиска часто встречающихся элементов в потоках и пакетах», ACM Transactions on Database Systems , 28 (1): 51–55, CiteSeerX  10.1.1.116.8530 , doi : 10.1145/762471.762473, S2CID  952840.
  • Лалл, Эшвин; Секар, Вьяс; Огихара, Мицунори; Сюй, Цзюнь; Чжан, Хуэй (2006), "Алгоритмы потоковой передачи данных для оценки энтропии сетевого трафика", Труды Объединенной международной конференции по измерению и моделированию компьютерных систем (ACM SIGMETRICS 2006) (PDF) , стр. 145, doi :10.1145/1140277.1140295, hdl : 1802/2537 , ISBN 978-1595933195, S2CID  240982[ постоянная неработающая ссылка ] .
  • Сюй, Цзюнь (Джим) (2007), Учебное пособие по потоковой передаче данных по сети (PDF).
  • Хит, Д., Касиф, С., Косараджу, Р., Зальцберг, С., Салливан, Г., «Изучение вложенных концепций с ограниченным объемом памяти», Труды IJCAI'91 Труды 12-й международной объединенной конференции по искусственному интеллекту - Том 2, Страницы 777–782, Morgan Kaufmann Publishers Inc. Сан-Франциско, Калифорния, США ©1991
  • Моррис, Роберт (1978), «Подсчет большого количества событий в небольших регистрах», Сообщения ACM , 21 (10): 840–842, doi : 10.1145/359619.359627 , S2CID  36226357.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Streaming_algorithm&oldid=1228288683"