假设我们有一个数据包序列 S = { p 1 , p 2 , ⋯ , p n } \mathrm{S}=\{p_1, p_2, \cdots, p_n\} S={ p1,p2,⋯,pn}. h 1 ( . ) , h 2 ( . ) , ⋯ , h d ( . ) h_1(.), h_2(.), \cdots, h_d(.) h1(.),h2(.),⋯,hd(.)均为哈希函数. 对于任意一个数据包 p i p_i pi, 假设它的流标识符为 i d i id_i idi, 则 h j ( i d i ) h_j(id_i) hj(idi)将生成一个随机数, 其中 i = 1 , 2 , ⋯ , n . j = 1 , 2 , ⋯ , d . i=1,2,\cdots, n. j = 1, 2, \cdots, d. i=1,2,⋯,n.j=1,2,⋯,d. 我们将以这一场景来介绍以下的几种sketch.
Count-Min (CM) Sketch
G. Cormode and S. Muthukrishnan, “An Improved Data Stream Summary: The Count-Min Sketch and Its Applications,” in LATIN 2004: Theoretical Informatics, Apr. 2004, pp. 29–38, doi: 10.1007/978-3-540-24698-5_7.
我们首先建立 d d d个哈希表, 每个哈希表包含 w w w个哈希桶, 每个哈希桶都是一个计数器. 当一个数据包 p i p_i