2019寒假训练营第三次做业

学习视频课程

博客连接html

实验题

热身题

过程以下图:


算法

基本题

了解新技术

什么是Sketch

Sketch 是一种基于散列的数据结构,能够在高速网络环境中,实时地存储流量特征信息,只占用较小的空间资源,而且具有在理论上可证实的估计精度与内存的平衡特性。经过设置散列函数,将具备相同散列值的键值数据存入相同的桶内,以减小空间开销。桶内的数据值做为测量结果,是真实值的近似。利用开辟二维地址空间,多重散列等技术减小散列冲突,提升测量结果的准确度。数组

  • 瓶颈:hash的计算开销和堆的维护开销,更新计数器和对包的头部的处理。
  • 优点:节省内存,理论上的可靠性;经过哈希函数的设置、减小开销。
  • 检测大流:对流的大小设定一个阈值,当超过这个阈值时,报出大流。可是这个阈值一般是不可预知的,为了防止误报,须要检测全部可能出现的流大小,以肯定这个阈值。因为须要检测的流很是多,因此在肯定阈值上要花费不少时间。

Count-min sketch的算法过程

Count-min 是一种典型的 sketch ,用到的是分类的思想:将具备相同哈希值的网络流归为一类,并使用同一个计数器计数。取多个哈希函数的最小哈希值做为网络流的估计,实现简单,空间开销较少。
这个算法的技巧是:不存储全部的不一样的元素,只存储它们Sketch的计数。它由多个哈希函数(f1……fn)和一张二维表组成。二维表的每一个存储空间维护了一个计数器,其中每一个哈希函数分别对应表中的每一行。当一个网络流到来时,须要通过每一个哈希函数 f1……fn 的处理,根据处理获得的哈希值分别存入每一行对应哈希值的计数器。有几个哈希函数,就要计算几回。算完后,取这m个计数器中的最小值,做为测量的最终值。
基本的思路是:建立一个长度为 x 的数组,用来计数,初始化每一个元素的计数值为 0;对于一个新来的元素,哈希到 0 到 x 之间的一个数,好比哈希值为 i,做为数组的位置索引;这是,数组对应的位置索引 i 的计数值加 1;那么,这时要查询某个元素出现的频率,只要简单的返回这个元素哈但愿后对应的数组的位置索引的计数值便可。考虑到使用哈希,会有冲突,即不一样的元素哈希到同一个数组的位置索引,这样,频率的统计都会偏大。
网络

参考文献:

http://www.javashuo.com/article/p-kmpatlvu-cz.html
https://www.sdnlab.com/22685.html
https://blog.csdn.net/pipisorry/article/details/64126199数据结构

因为笔者能力不足,其他部分未能完成函数

相关文章
相关标签/搜索