文档库 最新最全的文档下载
当前位置:文档库 › 哈 希 常 见 算 法 及 原 理

哈 希 常 见 算 法 及 原 理

哈 希 常 见 算 法 及 原 理
哈 希 常 见 算 法 及 原 理

文本局部敏感哈希-SimHash算法原理

最近在思考大量文本判重的问题,由于文本数据量大,加之文本判重算法,如BF、KMP、最长公共子串、后缀数组、字典树、DFA等计算时空复杂度并不适合数据量较大的工业应用场景。查找了相关资料,发现LSH(local sensitive ),即局部敏感哈希算法,可以应用本场景。

LSH是指面对海量高维数据时,一般的算法无法快速降维查询相似度高的数据子集,利用特定的hash算法,将高维数据映射到低维空间,以较高概率快速寻找相似度高的数据子集。 ?满足以下两个条件的hash函数称为(d1,d2,p1,p2)-sensitive:

1、如果d(x,y) ≤ d1,则h(x) = h(y)的概率至少为p1;

2、如果d(x,y) ≥ d2,则h(x) = h(y)的概率至多为p2;

d(x,y)是x和y之间的一个距离度量,需要说明的是,并不是所有的距离度量都能够找到满足local sensitive的hash函数。

通过采集系统我们采集了大量文本数据,但是文本中有很多重复数据影响我们对于结果的分析。分析前我们需要对这些数据去除重复,如何选择和设计文本的去重算法?常见的有余弦夹角算法、欧式距离、Jaccard相似度、最长公共子串、编辑距离等。这些算法对于待比较的文本数据不多时还比较好用,如果我们的爬虫每天采集的数据以千万计算,我们如何对于这些海量千万级的数据进行高效的合并去重。最简单的做法是拿着待比较的文本和数据库中所有的文本比较

一遍如果是重复的数据就标示为重复。看起来很简单,我们来做个测试,就拿最简单的两个数据使用Apache提供的

Levenshtein for 循环100w次计算这两个数据的相似度。代码结果如下:

String s1 = "你妈妈喊你回家吃饭哦,回家罗回家罗" ;

String s2 = "你妈妈叫你回家吃饭啦,回家罗回家罗" ;

long t1 = System.currentTimeMillis();

for (int i = 0; i 1000000; i++) {

int dis = StringUtils .getLevenshteinDistance(s1, s2);

long t2 = System.currentTimeMillis();

System. out .println(" 耗费时间: " + (t2 - t1) + " ms ");耗费时间: 4266 ms

大跌眼镜,居然计算耗费4秒。假设我们一天需要比较100w次,光是比较100w次的数据是否重复就需要4s,就算4s一个文档,单线程一分钟才处理15个文档,一个小时才900个,一天也才21600个文档,这个数字和一天100w相差甚远,需要多少机器和资-源才能解决。

rounding algorithms》。介绍下这个算法主要原理,为了便于理解尽量不使用数学公式,分为这几步:

1、分词,把需要判断文本分词形成这个文章的特征单词。最后形成去掉噪音词的单词序列并为每个词加上权重,我们假设权重分为5个级别(1~5)。比如:“ 美国“51区”雇员称内部有9架飞碟,曾

看见灰色外星人” == 分词后为“ 美国(4) 51区(5)雇员(3)称(1)内部(2)有(1) 9架(3)飞碟(5)曾(1)看见(3)灰色(4)外星人(5)”,括号里是代表单词在整个句子里重要程度,数字越大越重要。

2、hash,通过hash算法把每个词变成hash值,比如“美国”通过hash算法计算为100101,“51区”通过hash算法计算为 101011。这样我们的字符串就变成了一串串数字,还记得文章开头说过的吗,要把文章变为数字计算才能提高相似度计算性能,现在是降维过程进行时。

3、加权,通过 2步骤的hash生成结果,需要按照单词的权重形成加权数字串,比如“美国”的hash值为“100101”,通过加权计算为“4 -4 -4 4 -4 4”;“51区”的hash值为“101011”,通过加权计算为“ 5 -5 5 -5 5 5”。

4、合并,把上面各个单词算出来的序列值累加,变成只有一个序列串。比如“美国”的“4 -4 -4 4 -4 4”,“51区”的“ 5 -5 5 -5 5 5”,把每一位进行累加,“4+5 -4+-5 -4+5 4+-5 -4+5 4+5” ==》“9 -9 1 -1 1 9”。这里作为示例只算了两个单词的,真实计算需要把所有单词的序列串累加。

5、降维,把4步算出来的“9 -9 1 -1 1 9” 变成 0 1 串,形成我们最终的simhash签名。如果每一位大于0 记为 1,小于0 记为 0。最后算出结果为:“1 0 1 0 1 1”。

整个过程图为:

大家可能会有疑问,经过这么多步骤搞这么麻烦,不就是为了得到个 0 1 字符串吗?我直接把这个文本作为字符串输入,用hash 函数生成 0 1 值更简单。其实不是这样的,传统hash函数解决的是生成唯一值,比如 md5、hashmap等。md5是用于生成唯一签名串,只要稍微多加一个字符md5的两个数字看起来相差甚远;hashmap也是用于键值对查找,便于快速插入和查找的数据结构。不过我们主要解决的是文本相似度计算,要比较的是两个文章是否相识,当然我们降维生成了hashcode也是用于这个目的。看到这里估计大家就明白了,我们使用的simhash就算把文章中的字符串变成

01 串也还是可以用于计算相似度的,而传统的hashcode却不行。我们可以来做个测试,两个相差只有一个字符的文本串,“你妈妈喊你回家吃饭哦,回家罗回家罗” 和“你妈妈叫你回家吃饭啦,回家罗回家罗”。

通过simhash计算结果为:

10000100101011011111111000001010110100010011111000010010 11001011

10000100101011010111111000001010110100010011111000011010 10001011

通过 hashcode计算为:

11111111111111111111111111111111100010000011001101001110 11011110

1010010001111111110010110011101

大家可以看得出来,相似的文本只有部分 01 串变化了,而普通的hashcode却不能做到,这个就是局部敏感哈希的魅力。目前Broder提出的shingling算法和Charikar的simhash算法应该算是业界公认比较好的算法。在simhash的发明人Charikar的论文中并没有给出具体的simhash算法和证明,“量子图灵”得出的证明simhash是由随机超平面hash算法演变而来的。

现在通过这样的转换,我们把库里的文本都转换为simhash 代码,并转换为long类型存储,空间大大减少。现在我们虽然解决了空间,但是如何计算两个simhash的相似度呢?难道是比较两个simhash的01有多少个不同吗?对的,其实也就是这样,我们通过海明距离(Hamming distance)就可以计算出两个simhash到底相似不相似。两个simhash对应二进制(01串)取值不同的数量称为这两个simhash的海明距离。举例如下: 10101 和 00110 从第一位开始依次有第一位、第四、第五位不同,则海明距离为3。对于二进制字符串的a和b,海明距离为等于在a

XOR b运算结果中1的个数(普遍算法)。

为了高效比较,我们预先加载了库里存在文本并转换为simhash code 存储在内存空间。来一条文本先转换为 simhash code,然后和内存里的simhash code 进行比较,测试100w次计算在100ms。速度大大提升。

1、目前速度提升了但是数据是不断增量的,如果未来数据发展到一个小时100w,按现在一次100ms,一个线程处理一秒钟 10次,一

分钟 60 * 10 次,一个小时 60*10 *60 次 = 36000次,一天60*10*60*24 = 864000次。我们目标是一天100w次,通过增加两个线程就可以完成。但是如果要一个小时100w次呢?则需要增加30个线程和相应的硬件资-源保证速度能够达到,这样成本也上去了。能否有更好的办法,提高我们比较的效率?

2、通过大量测试,simhash用于比较大文本,比如500字以上效果都还蛮好,距离小于3的基本都是相似,误判率也比较低。但是如果我们处理的是微博信息,最多也就140个字,使用simhash的效果并不那么理想。看如下图,在距离为3时是一个比较折中的点,在距离为10时效果已经很差了,不过我们测试短文本很多看起来相似的距离确实为10。如果使用距离为3,短文本大量重复信息不会被过滤,如果使用距离为10,长文本的错误率也非常高,如何解决?

(3)在上面的例子中,如果数据再多一些一定会出现多个数据映射到同一个下标的情况,比如说如果数据中有一个15,那么通过哈希函数算出来的下标就是1,这无疑与数据8的下标重合了,这就是一种冲突。

addEntry(hash, key, value, i);

你可能已经发现,这三个应用都跟分布式系统有关。没错,那么!哈希算法是如何解决这些分布式问题的。

由于对称加密体制和非对称加密体制各有优缺点。所以,在实际生活中,我们还是经常用混合加密方式来对数据进行加密的。

虽然哈希算法存在散列冲突的情况,但是哈希值的范围很大,冲

突的概率极低,所以相对来说还是很难破解的。对于有2^128个不同哈希值的MD5算法,散列冲突的概率要小于1-2^128。

? for (hash=key.length(), i=0; ikey.length(); ++i)

1、如果d(x,y) ≤ d1,则h(x) = h(y)的概率至少为p1;

如果还想继续提高效率,我们可以把每个图片的唯一标识,和相应的图片文件在图库中的路径信息,都存储在散列表中。当要查看某个图片是不是在图库中的时候,我们先通过哈希算法对这个图片取唯一标识,然后在散列表中查找是否存在这个唯一标识。

关键字的取值在一个很大的范围,数据在通过哈希函数进行映射时。很难找到一个哈希函数,使得这些关键字都能映射到唯一的值。就会出现多个关键字映射到同一个值的现象,这种现象我们称之为冲突。

一个设计良好的分布式哈希方案应该具有良好的单调性,即服务节点的增减不会造成大量哈希重定位。一致性哈希算法就是这样一种哈希方案。

理论力学复习题及答案(哈工大版)汇总

一、是非题 1、力有两种作用效果,即力可以使物体的运动状态发生变化,也可以使物体发生变形。 (√) 2、在理论力学中只研究力的外效应。(√) 3、两端用光滑铰链连接的构件是二力构件。(×) 4、作用在一个刚体上的任意两个力成平衡的必要与充分条件是:两个力的作用线相同, 大小相等,方向相反。(√) 5、作用于刚体的力可沿其作用线移动而不改变其对刚体的运动效应。(×) 6、三力平衡定理指出:三力汇交于一点,则这三个力必然互相平衡。(×) 7、平面汇交力系平衡时,力多边形各力应首尾相接,但在作图时力的顺序可以不同。 (√) 8、约束力的方向总是与约束所能阻止的被约束物体的运动方向一致的。(×) 9、在有摩擦的情况下,全约束力与法向约束力之间的(应是最大)夹角称为摩擦角。(×) 10、用解析法求平面汇交力系的平衡问题时,所建立的坐标系x,y轴一定要相互垂直。 (×) 11、一空间任意力系,若各力的作用线均平行于某一固定平面,则其独立的平衡方程最多只有3个。 (×) 12、静摩擦因数等于摩擦角的正切值。(√) 13、一个质点只要运动,就一定受有力的作用,而且运动的方向就是它受力方向。(×) 14、已知质点的质量和作用于质点的力,质点的运动规律就完全确定。(×) 15、质点系中各质点都处于静止时,质点系的动量为零。于是可知如果质点 系的动量为零,则质点系中各质点必都静止。(×) 16、作用在一个物体上有三个力,当这三个力的作用线汇交于一点时,则此力系必然平衡。 (×) 17、力对于一点的矩不因力沿其作用线移动而改变。(√) 18、在自然坐标系中,如果速度υ= 常数,则加速度α= 0应是切线方向加速度为零。(×) 19、设一质点的质量为m,其速度 与x轴的夹角为α,则其动量在x轴上的投影为mvx =mvcos a。(√) 20、用力的平行四边形法则,将一已知力分解为F1和F2两个分力,要得到唯一解答,必须具备:已知 F1和F2两力的大小;或已知F1和F2两力的方向;或已知F1或F2中任一个力的大小和方向。 ( √) 21、某力在一轴上的投影与该力沿该坐标轴的分力其大小相等,故投影就是分力。 ( ×) 22、图示结构在计算过程中,根据力线可传性原理,将力P由A点传至B点,其作用效果不变。 (×)

哈工大理论力学期末考试及答案

三、计算题(本题10分) 图示平面结构,自重不计,B 处为铰链联接。已知:P = 100 kN ,M = 200 kN ·m ,L 1 = 2m ,L 2 = 3m 。试求支座A 的约束力。 四、计算题(本题10分) 在图示振系中,已知:物重Q ,两并联弹簧的刚性系数为k 1与k 2。如果重物悬挂的位置使两弹簧的伸长相等,试求:(1)重物振动的周期;(2)此并联弹簧的刚性系数。 五、计算题(本题15分) 半径R =0.4m 的轮1沿水平轨道作纯滚动,轮缘上A 点铰接套筒3,带动直角杆2作上下运动。已知:在图示位置时,轮心速度C v =0.8m/s ,加速度为零,L =0.6m 。试求该瞬时:(1)杆2的速度2v 和加速度2a ;(2)铰接点A 相对于杆2的速度r v 和加速度r a 。 六、计算题(本题15分) 在图示系统中,已知:匀质圆盘A 和B 的半径各为R 和r ,质量各为M 和m 。试求:以φ和θ为广义坐标,用拉氏方程建立系统的运动微分方程。

七、计算题(本题20分) 在图示机构中,已知:纯滚动的匀质轮与物A 的质量均为m ,轮半径为r ,斜面倾角为β,物A 与斜面的动摩擦因数为'f ,不计杆OA 的质量。试求:(1)O 点的加速度;(2)杆OA 的内力。 答案 三、解,以整体为研究对象,受力如图所示。 由()0C M F =∑ 11222(2)20A x A y P L F L L F L M ?-?--?-= ……(1) 再以EADB 为研究对象受力如图所示, 由12()0 0B Ax Ay M F F L F L M =?-?-=∑ (2)

哈工大版理论力学复习

第一章静力学的基本概念与公理 一、重点及难点 1.力的概念 力是物体间的相互机械作用,其作用效果可使物体的运动状态发生改变和使物体产生变形。前者称为力的运动效应或外效应,后者称为力的变形效应或内效应。力对物体的作用效果,取决于三个要素:①力的大小:②力的方向;⑧力的作用点。力是定位矢量。 2.刚体的概念 所谓刚体,是指在力的作用下形状和大小都始终保持不变的物体;或者说,刚体内任意两点间的距离保持不变。刚体是实际物体抽象化的一种力学模型。 3.平衡的概念 在静力学中,平衡是指物体相对惯性坐标系(地球)处于静止或作匀速直线运动的状态。它是机械运动的特殊情况。 4.静力学公理 静力学公理概括了力的基本性质,是静力学的理论基础。 公理一(二力平衡原理):作用在刚体上的两个力,使刚体处于平衡的必要和充分条件是:这两个力的大小相等。方向相反,作用在同一直线上。 公理二(加减平衡力系原理):可以在作用于刚体的任何一个力系上加上或去掉几个互成平衡的力,而不改变原力系对刚体的作用效果。推论(力在刚体广的可传性):作用在刚体上的力可沿其作用线在刚体内移动,而不改变它对该刚体的作用效果。 公理三(力的平行四边形法则):作用于物体上任一点的两个力可合成为作用于同一点的一个力,即合力。合力的矢由原两力的矢为邻边而作出的力平行四边形的对角矢来表示。即合力为原两力的矢量和。推论(三力平衡汇交定理):作用于刚体上3个相互平衡的力,若其中两个力的作用线汇交于—点,则此3个力必在同一平面内,且第3个力的作用线通过汇交点。 公理四(作用和反作用定律)任何两个物体相互作用的力,总是大小相等,方向相反,沿同一直线,并分别作用在这两个物体上。 公理五(刚化原理):变形体在某一力系作用下处于平衡时,如将此变形体刚化为刚体,则平衡状态保持不变。 应当注意这些公理中有些是对刚体,而有些是对物体而言。5.约束与约束反力 限制物体运动的条件称为约束。构成约束的物体称为约束体,也称为约束。约束反力是约束作用在被约束物体上的力,其方向与约束

理论力学哈工大第八版答案

哈尔滨工业大学理论力学教研室理论力学(I)第8版习题答案《理论力学(1 第8版)/“十二五”普通高等教育本科国家级规划教材》第1版至第7版受到广大教师和学生的欢迎。第8版仍保持前7版理论严谨、逻辑清晰、由浅入深、宜于教学的风格体系,对部分内容进行了修改和修正,适当增加了综合性例题,并增删了一定数量的习题。本书内容包括静力学(含静力学公理和物体的受力分析、平面力系、空间力系、摩擦),运动学(含点的运动学、刚体的简单运动、点的合成运动、刚体的平面运动),动力学(含质点动力学的基本方程、动量定理、动量矩定理、动能定理、达朗贝尔原理、虚位移原理)。本书可作为高等学校工科机械、土建、水利、航空、航天等专业理论力学课程的教材,也可作为高职高理论力学(I)第8版哈尔滨工业大学理论力学教研室习题答案专、成人高校相应专业的自学和函授教材,亦可供有关工程技术人员参考。本书配套的有《理论力学学习辅导》、《理论力学(I)第8版哈尔滨工业大学理论力学教研室习题答案理论力学思考题集》、《理论力学解题指导及习题集》(第3版)、《理论力学电子教案》、《理论力学网络课程》、《理论力学习题解答》、《理论力学网上作业与查询系统》等。 理论力学(I)第8版哈尔滨工业大学理论力学教研室课后答案前辅文 静力学

关注网页底部或者侧栏二维码回复 理论力学(I)第8版答案免费获取答案 引言 第一章静力学公理哈尔滨工业大学理论力学教研室理论力学(I)第8版课后答案理论力学思考题集》、《理论力学解题指导及习题集》(第3版)、《理论力学电子教案》、《理论力学网络课程》、《理论力学习题解答》、《理论力学网上作业与查询系统》等。 理论力学(I)第8版哈尔滨工业大学理论力学教研室课后答案前辅文 静力学 引言 第一章静力学公理和物体的受力分析

哈工大第七版 理论力学 课后有题答案 10章

10-3 如图所示水平面上放1 均质三棱柱A,在其斜面上又放 1 均质三棱柱B。两三棱柱的横截面均为直角三角形。三棱柱A的质量为mA三棱柱 B 质量mB的 3 倍,其尺寸如图所示。设各处摩擦不计,初始时系统静止。求当三棱柱 B 沿三棱柱A滑下接触到水平面时,三棱柱A移动的距离。 11-4 解取A、B 两三棱柱组成 1 质点系为研究对象,把坐标轴Ox 固连于水平面上,O 在 棱柱A左下角的初始位置。由于在水平方向无外力作用,且开始时系统处于静止,故系统 质心位置在水平方向守恒。设A、B 两棱柱质心初始位置(如图b 所示)在x 方向坐标 分别为 当棱柱 B 接触水平面时,如图c所示。两棱柱质心坐标分别为 系统初始时质心坐标 棱柱 B 接触水平面时系统质心坐标 因并注意到得 10-4 如图所示,均质杆AB,长l,直立在光滑的水平面上。求它从 铅直位无 初速地倒下时,端点A相对图b所示坐标系的轨迹。 解取均质杆AB 为研究对象,建立图11-6b 所示坐标系Oxy,原点O 与杆AB 运动初始时的点 B 重合,因为杆只受铅垂方向的重力W 和地 面约束反力N F 作用,且系统开始时静止,所以杆AB 的质心沿轴x 坐 标恒为零,即

设任意时刻杆AB 与水平x 轴夹角为θ,则点A坐标 从点A坐标中消去角度θ,得点A轨迹方程 10-5 质量为m1 的平台AB,放于水平面上,平台与水平面间的动滑动摩擦因数为f。 质量为m2 的小车D,由绞车拖动,相对于平台的运动规律为,其中b 为已知常数。不计绞车的质量,求平台的加速度。 解受力和运动分析如图b 所示 式(1)、(4)代入式(3),得 10-6 如图所示,质量为m的滑块A,可以在水平光滑槽中运动,具有刚性系 数为k 的弹簧 1 端与滑块相连接,另 1 端固定。杆AB 长度为l,质量忽略不计,A端与滑块A铰接,B 端装有质量m1,在铅直平面内可绕点A旋转。设在力偶M 作用下转动角速度ω为常数。求滑块A的运动微分方程。 解取滑块A和小球B组成的系统为研究对象,建立向右坐标x,原点取在 运动开始时滑块A的质心上,则质心之x 坐标为

理论力学期末考试5(含答案)

哈工大2001年秋季学期理论力学试题 一、是非题(每题2分。正确用√,错误用×,填入括号内。) 1、作用在一个物体上有三个力,当这三个力的作用线汇交于一点时,则此力系必然平衡。() 2、力对于一点的矩不因力沿其作用线移动而改变。() 3、在自然坐标系中,如果速度v = 常数,则加速度a = 0。() 4、虚位移是假想的,极微小的位移,它与时间、主动力以及运动的初始条件无关。() 5、设一质点的质量为m,其速度v与x轴的夹角为α,则其动量在x轴上的投影为mv x =mv cosα。() 二、选择题(每题3分。请将答案的序号填入划线内。) 1、正立方体的顶角上作用着六个大小相等的力,此力系向任一点简化的结果是。 ①主矢等于零,主矩不等于零; ②主矢不等于零,主矩也不等于零; ③主矢不等于零,主矩等于零; ④主矢等于零,主矩也等于零。 2、重P的均质圆柱放在V型槽里,考虑摩擦柱上作用一力偶,其矩为M时(如图),圆柱处于极限平衡状态。此时按触点处的法向约束力N A与N B的关系为。 ①N A = N B;②N A > N B;③N A < N B。

3、边长为L 的均质正方形平板,位于铅垂平面内并置于光滑水平面上,如图示,若给平板一微小扰动,使其从图示位置开始倾倒,平板在倾倒过程中,其质心 C 点的运动轨迹是 。 ①半径为L /2的圆弧; ②抛物线; ③椭圆曲线; ④铅垂直线。 4、在图示机构中,杆O 1 A //O 2 B ,杆O 2 C //O 3 D ,且O 1 A = 200mm ,O 2 C = 400mm , CM = MD = 300mm ,若杆AO 1 以角速度 ω= 3 rad / s 匀速转动,则D 点的速度的大小为 cm/s ,M 点的加速度的大小为 cm/s 2。 ① 60; ②120; ③150; ④360。 5、曲柄OA 以匀角速度转动,当系统运动到图示位置(OA //O 1 B ,AB OA )时,有A v B v ,A a B a ,AB ω 0,αAB 0。 ①等于; ②不等于。

哈尔滨工业大学第7版理论力学第4章课后习题答案_图文(精)

图 4-1 图4-2

图4-3 第4章空间力系 4-1 力系中,F 1=100 N ,F 2=300 N ,F 3=200 N ,各力作用线的位置如图4-1所示。试将力系向原点O 简化。 解由题意得 N 3455 2200132300R ?=× ?×?=x F N 25013 3 300R =× =y F N 6.1051200100R =×

?=z F m N 8.513.05 12001.013 3300??=×× ?×× ?=x M m N 6.361.013 220020.0100??=××+×?=y M m N 6.1033.05 22002.013 3300?=×× +××=z M 主矢N 4262R 2R 2R R =++=x y z F F F F ,N 6.10250345(R k j i ++?=F 主矩 m N 12222 2?=++= z y x O M M M M ,m N 1046.368.51(?+??=k j i O M 4-2 1平行力系由5个力组成,力的大小和作用线的位置如图4-2所示。图中小正方格 的边长为10 mm 。求平行力系的合力。 解由题意得合力R F 的大小为

N 20N 15N 10N 20N 10N 1R =??++=Σ=z F F N 20R k F =合力作用线过点(C x ,C y ,0 : mm 601010202030104015(201=×?×+×+×=C x mm 5.3240152010502030101015(20 1 =×?×?×+×+×= C y 4-3 图示力系的3个力分别为N 3501=F ,N 4002=F 和N 6003=F ,其作用线的 位置如图4-3所示。试将此力系向原点O 简化。 解由题意得 N 1442 1 6001001860350'R ?=× ?×=x F N 0101866 .0600707.04001001880350'R =×+×+× =y F N 517707.0400100 1890350'R ?=×??×

相关文档
相关文档 最新文档