Class of algorithms operating on data streams
コンピュータサイエンス において 、 ストリーミングアルゴリズムは 入力 データストリームを アイテムの シーケンス として処理し、通常はデータに対して 1回 (または数回)のパスのみを実行します。これらのアルゴリズムは、限られたメモリで動作するように設計されており、一般的にストリームのサイズやストリーム内の最大値に対して 対数 的であり、アイテムあたりの処理時間も制限される場合があります。
これらの制約の結果として、ストリーミング アルゴリズムは、データ ストリームの概要または「スケッチ」に基づいて近似的な回答を生成することがよくあります。
歴史
ストリーミングアルゴリズムは、1978年にはマンローとパターソン [1] によって、また1982年から83年には フィリップ・フラジョレ とG・ナイジェル・マーティン [2] によって既に研究されていましたが、ストリーミングアルゴリズムの分野が初めて形式化され、普及したのは、1996年に ノーガ・アロン 、 ヨッシ・マティアス 、 マリオ・セゲディ によって発表された論文でした。 [3] この論文により、著者らは後に2005年に「ストリーミングアルゴリズムへの基礎的貢献」により ゲーデル賞を受賞しました。それ以来、データストリーミングアルゴリズムを中心に、理論、データベース、ネットワーク、 自然言語処理 など、コンピュータサイエンスの多様な分野にわたる膨大な研究が行われてきました 。
セミストリーミングアルゴリズムは、グラフのストリーミングアルゴリズムの緩和策として2005年に導入されました。 [4] セミストリーミングアルゴリズムでは、許容される空間は頂点数 nに対して線形ですが、辺数 m に対しては対数的です 。この緩和策は稠密グラフにおいても依然として有効であり、空間的に解決できない興味深い問題(例えば接続性など)を解くことができます 。
o
(
n
)
{\displaystyle o(n)}
モデル
データストリームモデル
データストリームモデルでは、入力の一部または全部が有限の整数列(ある有限領域から)として表現されます。この整数列は通常 ランダムアクセス できず、代わりに「ストリーム」として1つずつ到着します。 [5] ストリームの長さが n で、領域のサイズが mの場合、アルゴリズムは一般的に m と n の 対数 空間を使用するように制約されます 。アルゴリズムは通常、ストリームに対して小さな定数回しかパスできず、場合によっては 1回 しかパスできないこともあります。 [6]
回転式改札口とレジのモデル
ストリーミングに関する文献の多くは、保存するには大きすぎる頻度分布の統計計算に関するものです。この種の問題では、ストリーム内で更新が提示されるベクトル
(ゼロベクトル に初期化される )が存在します。これらのアルゴリズムの目的は、 の関数を、正確に 表現するのに必要なスペースよりもはるかに少ないスペースで計算することです 。このようなストリームを更新するための一般的なモデルとして、「キャッシュレジスタ」モデルと「ターンスタイル」モデルと呼ばれる2つがあります。 [7]
a
=
(
a
1
,
…
,
a
n
)
{\displaystyle \mathbf {a} =(a_{1},\dots ,a_{n})}
0
{\displaystyle \mathbf {0} }
a
{\displaystyle \mathbf {a} }
a
{\displaystyle \mathbf {a} }
キャッシュレジスタモデルでは、各更新は の形式をとる ため、 は 正の整数 だけ増加します 。注目すべき特別なケースは、 のときです
(単位の挿入のみが許可されます)。
⟨
i
,
c
⟩
{\displaystyle \langle i,c\rangle }
a
i
{\displaystyle a_{i}}
c
{\displaystyle c}
c
=
1
{\displaystyle c=1}
回転式改札口モデルでは、各更新は の形式をとり 、 は 何らかの(負の可能性のある)整数 だけ増加します 。「厳密な回転式改札口」モデルでは、
どの時点においても はゼロ未満になることはありません。
⟨
i
,
c
⟩
{\displaystyle \langle i,c\rangle }
a
i
{\displaystyle a_{i}}
c
{\displaystyle c}
a
i
{\displaystyle a_{i}}
スライディングウィンドウモデル
いくつかの論文では「スライディングウィンドウ」モデルも検討されている。 [ 要出典 ] このモデルでは、対象となる関数はストリーム内の固定サイズのウィンドウ上での計算である。ストリームが進むにつれて、ウィンドウの末尾にあるアイテムは考慮対象から外され、ストリームからの新しいアイテムがその場所を占める。
上記の頻度ベースの問題以外にも、様々な種類の問題が研究されてきました。多くのグラフ問題は、グラフの 隣接行列 または 隣接リスト が未知の順序でストリームされるという設定で解かれています。ストリーム内の反転の数を数える問題や、最長増加部分列を求める問題など、ストリームの順序に大きく依存する問題(すなわち非対称関数)も存在します。 [ 要出典 ]
評価
データ ストリームで動作するアルゴリズムのパフォーマンスは、次の 3 つの基本的な要素によって測定されます。
アルゴリズムがストリーム上で実行する必要があるパスの数。
使用可能なメモリ。
アルゴリズムの実行時間。
これらのアルゴリズムは、 オンラインアルゴリズム と多くの類似点があります。どちらもすべてのデータが利用可能になる前に決定を下す必要があるためですが、同一ではありません。データストリームアルゴリズムは利用可能なメモリが限られていますが、ポイントのグループが到着するまでアクションを延期できる場合があります。一方、オンラインアルゴリズムは、各ポイントが到着するとすぐにアクションを実行する必要があります。
アルゴリズムが近似アルゴリズムである場合、答えの精度も重要な要素となります。精度は多くの場合近似値と表現され、これはアルゴリズムが 確率 で 未満の誤差を達成することを意味します 。
(
ϵ
,
δ
)
{\displaystyle (\epsilon ,\delta )}
ϵ
{\displaystyle \epsilon }
1
−
δ
{\displaystyle 1-\delta }
アプリケーション
ストリーミングアルゴリズムは、ネットワークリンクの エレファントフロー の監視 、個別のフローの数のカウント、フローサイズの分布の推定など、 ネットワークにおいていくつかの用途があります。 [8]また、 結合 のサイズを推定するなど、データベースにおいても用途があります [ 要出典 ] 。
ストリーミングの問題
周波数モーメント
周波数セットの k 番目の周波数モーメント は 次 のように定義されます 。
a
{\displaystyle \mathbf {a} }
F
k
(
a
)
=
∑
i
=
1
n
a
i
k
{\displaystyle F_{k}(\mathbf {a} )=\sum _{i=1}^{n}a_{i}^{k}}
第一モーメントは 、頻度(つまり、総数)の合計です。第二モーメントは、 ジニ係数 などのデータの統計的特性を計算するのに役立ちます
。は、 最も頻繁に出現する項目の頻度として定義されます。
F
1
{\displaystyle F_{1}}
F
2
{\displaystyle F_{2}}
F
∞
{\displaystyle F_{\infty }}
Alon、Matias、Szegedyによる独創的な論文は、周波数モーメントの推定の問題を扱っていました。 [ 要引用 ]
周波数モーメントの計算
周波数モーメントを直接求めるアプローチでは、 すべての異なる要素 a i ∈ (1,2,3,4,..., N )に対してレジスタ m i を維持する必要があり、これには少なくとも オーダーのメモリが必要です 。 [3] しかし、メモリ容量の制限があるため、はるかに少ないメモリで計算するアルゴリズムが必要です。これは、正確な値ではなく近似値を使用することで実現できます。F k の( ε, δ )近似値を計算するアルゴリズムです 。ここで、 F' k はF k の( ε, δ )近似値です 。 [9] ここで 、 ε は近似パラメータ、 δ は信頼度パラメータです。 [10]
Ω
(
N
)
{\displaystyle \Omega (N)}
計算中 F 0 (データストリーム内の個別の要素)
FMスケッチアルゴリズム
Flajoletらは [2]で、 Robert Morris の論文からヒントを得た確率的な計数法を紹介した 。 [11] Morrisは論文の中で、精度の要件がなくなると、カウンタ nを log log n ビットで格納できるカウンタ log n に置き換えることができると述べている 。 [12] Flajoletらは [2]で、ハッシュ空間(長さ L のバイナリ文字列)内の要素を均一に分散すると想定されるハッシュ関数 h を使用してこの方法を改良した 。
h
:
[
m
]
→
[
0
,
2
L
−
1
]
{\displaystyle h:[m]\rightarrow [0,2^{L}-1]}
bit( y,k )を y の2進数表現におけるk番目のビットを表すものと する。
y
=
∑
k
≥
0
b
i
t
(
y
,
k
)
∗
2
k
{\displaystyle y=\sum _{k\geq 0}\mathrm {bit} (y,k)*2^{k}}
は、 の適切な規則を使用して、 y i のバイナリ表現における最下位 1 ビットの位置を表します 。
ρ
(
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]
を
ρ ( ハッシュ値 )が記録される
ハッシュ空間 。以下のアルゴリズムは、 A のおおよその基数を決定する。
手順 FM-Sketch:
i が 0 から L − 1 までの場合、
ビットマップ[i] := 0
終わりのために
Aのxに対して:
インデックス := ρ(ハッシュ(x))
BITMAP[インデックス] = 0の場合
ビットマップ[インデックス] := 1
終了の場合
終わりのために
B := BITMAP[]の左端の0ビットの位置
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)}
ビット マップ [ i ]は0と1の縞模様である 。
i
≈
log
(
N
)
{\displaystyle i\approx \log(N)}
K -最小値アルゴリズム
前述のアルゴリズムは、FlajoletとMartinによるデータストリーム内の F 0 を 近似する最初の試みを記述しています。彼らのアルゴリズムは、ハッシュ値がハッシュ空間に均一に分布すると仮定したランダム ハッシュ関数 を選択します。
Bar-Yossef らは、 [10] でデータ ストリーム内の異なる要素の数を決定する k 最小値アルゴリズムを導入しました。彼らは、 として [0,1] に正規化できる同様のハッシュ関数 hを使用しました。しかし、ハッシュ空間内の値の数に 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最小値
KMVの最初のt値を初期化する
a1のaをanにdoする
h(a) < Max(KMV)の場合
KMVセットからMax(KMV)を削除する
KMVにh(a)を挿入する
終了の場合
終わりのために
t/Max(KMV)を返す
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
アロンらは、 与えられた空間と時間内で計算できるランダム変数を定義することで F kを 推定した。 [3] ランダム変数の期待値は F k のおおよその値を与える。
シーケンスの長さ m が事前にわかっていると仮定します。そして、確率変数 Xを 以下のように構築します。
シーケンスA のランダムな要素 pを p の インデックスで 選択し 、
a
p
=
l
∈
(
1
,
2
,
3
,
…
,
n
)
{\displaystyle a_{p}=l\in (1,2,3,\ldots ,n)}
は、 p に 続くシーケンス A のメンバー内での l の出現回数を表します 。
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 は 1 ≤ j ≤ S 1となる X ij の平均です 。
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
上で説明したF k を計算するアルゴリズムから 、各確率変数 X は a p と r の値を格納することがわかります 。したがって、 X を計算するには、 a p を格納するための log( n ) ビットと r を格納するための log( n ) ビットのみが必要です。確率変数 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)}
よりシンプルな計算方法 F2
従来のアルゴリズムはメモリビット の順序で計算を行っていました。 [3] のAlonらは、 このアルゴリズムを、4つの独立したランダム変数を用いて簡略化し、その値を にマッピングしました 。
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 とし、 ストリームにおける値 i の頻度を f i とします。頻出要素問題は、集合 { i | f i > m/c } を出力することです。 [13]
注目すべきアルゴリズムは次のとおりです。
イベント検出
データストリーム内のイベント検出は、上記のようなヘビーヒッターアルゴリズムを用いて行われることが多い。これらのアルゴリズムのいずれかを用いて、最も頻繁に出現する項目とその頻度を決定し、前回の時点からの最大の増加をトレンドとして報告する。このアプローチは、指数加重 移動平均 と分散を用いて正規化することで、より精度を高めることができる。 [14]
異なる要素を数える
ストリーム内の異なる要素の数を数える問題(
F 0 モーメントと呼ばれることもある)もよく研究されている。この問題に対する最初のアルゴリズムは、FlajoletとMartinによって提案された。2010年に、 Daniel Kane 、 Jelani Nelson 、David Woodruffはこの問題に対する漸近的に最適なアルゴリズムを発見した。 [15] このアルゴリズムは、 O ( ε 2 + log d ) の空間と、最悪のケースで O (1) の更新および報告時間、およびユニバーサルハッシュ関数と r 単位の独立ハッシュ族 ( 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 回通過して
モデル ( 分類器など) を学習します。
下限
これまで研究されてきた多くのデータストリーミング問題において、下限値が計算されてきました。これまでのところ、これらの下限値を計算する最も一般的な手法は、 通信複雑度 を用いることです。 [ 要出典 ]
参照
注記
^ Munro, J. Ian; Paterson, Mike (1978). 「限られた記憶域での選択とソート」. 第19回コンピュータサイエンス基礎シンポジウム, 米国ミシガン州アナーバー, 1978年10月16~18日 . IEEEコンピュータ協会. pp. 253– 258. doi :10.1109/SFCS.1978.32.
^ abc フラジョレ&マーティン(1985)
^ abcd アロン、マティアス、セゲディ (1996)
^ フェイゲンバウム, ジョアン; サムパス, カンナン (2005). 「セミストリーミングモデルにおけるグラフ問題について」. 理論計算機科学 . 348 (2): 207– 216. doi : 10.1016/j.tcs.2005.09.013 .
^ Babcock, Brian; Babu, Shivnath; Datar, Mayur; Motwani, Rajeev; Widom, Jennifer (2002). 「データストリームシステムにおけるモデルと課題」. 第21回ACM SIGMOD-SIGACT-SIGARTシンポジウム「データベースシステムの原理」議事録 . PODS '02. ニューヨーク、ニューヨーク州、米国: ACM. pp. 1– 16. CiteSeerX 10.1.1.138.190 . doi :10.1145/543613.543615. ISBN 978-1-58113-507-7 . S2CID 2071130。
^ Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (2002-09-13). 「データストリーム内の個別要素のカウント」. コンピュータサイエンスにおけるランダム化と近似手法 . コンピュータサイエンス講義ノート. 第2483巻. Springer, Berlin, Heidelberg. pp. 1– 10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN 978-3-540-45726-8 . S2CID 4684185。
^ ギルバート他(2001)
^ 徐(2007)
^ Indyk, Piotr; Woodruff, David (2005-01-01). 「データストリームの周波数モーメントの最適近似」. 第37回ACMコンピューティング理論シンポジウム議事録 . STOC '05. ニューヨーク、ニューヨーク州、米国: ACM. pp. 202– 208. doi :10.1145/1060590.1060621. ISBN 978-1-58113-960-0 . S2CID 7911758。
^ ab Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (2002-09-13). Rolim, José DP; Vadhan, Salil (eds.). データストリーム内の個別要素のカウント . コンピュータサイエンスの講義ノート. Springer Berlin Heidelberg. pp. 1– 10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN 978-3-540-44147-2 . S2CID 4684185。
^ モリス(1978)
^ Flajolet, Philippe (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.
^ Cormode, Graham (2014). 「Misra-Gries Summaries」. Kao, Ming-Yang (編). Encyclopedia of Algorithms . Springer US. pp. 1– 5. doi :10.1007/978-3-642-27848-8_572-1. ISBN 978-3-642-27848-8 。
^ Schubert, E.; Weiler, M.; Kriegel, HP (2014). SigniTrend: ハッシュ化された重要度閾値によるテキストストリーム内の新興トピックのスケーラブルな検出 . Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining - KDD '14. pp. 871– 880. doi :10.1145/2623330.2623740. ISBN 978-1-4503-2956-9 。
^ ケイン、ネルソン、ウッドラフ(2010)
参考文献
アロン、ノガ ; マティアス、ヨッシ ; セゲディ、マリオ (1999)「周波数モーメントの近似の空間計算量」、 コンピュータとシステム科学ジャーナル 、 58 (1): 137– 147、 doi : 10.1006/jcss.1997.1545 、 ISSN 0022-0000 初版は Alon, Noga; Matias, Yossi; Szegedy, Mario (1996)「周波数モーメントの近似の空間計算量」、 Proceedings of the 28th ACM Symposium on Theory of Computing (STOC 1996) 、pp. 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) 、pp. 1– 16、 CiteSeerX 10.1.1.138.190 、 doi :10.1145/543613.543615、 ISBN 978-1-58113-507-7 , S2CID 2071130, 2017年7月9日に オリジナル (PDF)からアーカイブ、 2013年7月15日 取得 。
フラジョレ, フィリップ; マーティン, G. ナイジェル (1985). 「データベースアプリケーションのための確率的計数アルゴリズム」 (PDF) . Journal of Computer and System Sciences . 31 (2): 182– 209. doi :10.1016/0022-0000(85)90041-8 . 2016年12月 11日閲覧 .
Gilbert, AC ; Kotidis, Y.; Muthukrishnan, S .; Strauss, MJ (2001)、「ストリーム上のウェーブレットサーフィン:近似集約クエリのワンパスサマリー」 (PDF) 、 大規模データベースに関する国際会議の議事録 : 79– 88 。
Kane, Daniel M.; Nelson, Jelani; Woodruff, David P. (2010). 「個別要素問題に対する最適アルゴリズム」. 第29回ACM SIGMOD-SIGACT-SIGARTデータベースシステム原理シンポジウム議事録 . PODS '10. ニューヨーク、ニューヨーク州、米国: ACM. pp. 41– 52. CiteSeerX 10.1.1.164.142 . doi :10.1145/1807085.1807094. ISBN 978-1-4503-0033-9 . S2CID 10006932。 。
Karp, RM ; Papadimitriou, CH ; Shenker, S. (2003)「ストリームとバッグ内の頻出要素を見つけるためのシンプルなアルゴリズム」、 ACM Transactions on Database Systems 、 28 (1): 51– 55、 CiteSeerX 10.1.1.116.8530 、 doi :10.1145/762471.762473、 S2CID 952840 。
Lall, Ashwin; Sekar, Vyas; Ogihara, Mitsunori; Xu, Jun; Zhang, Hui (2006). 「ネットワークトラフィックのエントロピー推定のためのデータストリーミングアルゴリズム」. コンピュータシステムの測定とモデリングに関する合同国際会議 (ACM SIGMETRICS 2006) の議事録 . p. 145. doi :10.1145/1140277.1140295. hdl : 1802/2537 . ISBN 978-1-59593-319-5 . S2CID 240982。 。
Xu, Jun (Jim) (2007)、「ネットワークデータストリーミングのチュートリアル」 (PDF) 。
Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., 「限られた記憶域でのネストされた概念の学習」、Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782, Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
モリス、ロバート(1978)、「小さなレジスタ内の多数のイベントのカウント」、 Communications of the ACM 、 21 (10): 840–842 、 doi : 10.1145/359619.359627 、 S2CID 36226357 。