理解哈希表2(Hash Table)

理解哈希表(Hash Table)
用于确定:某个元素是否在已知集合中。
本质上和排序+二分法的查找一样,都是把已知集合的本质特征提取出来,就像匹配时,用主分量分析一样。实现起来,把已知集合的数据经过处理,得到hash table,这个table中,每一项对应一个或多个数据,所以必须有处理这个问题(术语叫冲突)的机制。例如:10000个数据,都除以100,得到100个数,就是hash表,这样,可以搜索很小的hash表代替搜索原来的大表。本质上,就是用已知元素的前几位(不考虑十位和百位)作为其特征。实际中这样一般不行,我想,对于随机集合来说,用素数是个不错的主意。但对于大多数有特征的数据,还需要好好考虑如何提取其特征(术语上称之为hash函数的设计)。像是单词之类,肯定不是随机的,必然有特征,如果按随机数据考虑,显然会增加冲突的机会,导致浪费时间。

感叹:很久以前,就对hash这个东东有无限景仰,觉得有点神奇。这种感觉被海量文献中的让人目不暇接的术语、英文翻译的生涩解释……无限放大。不客气地讲,很多文献对读者而言,起到的作用只是增加迷惑而已,没有抓住问题的本质,只是花哨。很多算法,被“专家”冠以诡异的名字和“数学上严谨的说明”,不过是基于数学上的常理,或是逻辑上的应有之处,很少有人能形象地解释,让我们这些门外汉更快的管窥。想得恶心一点,是不是自己觉得太简单,故意叙述复杂化,让人晕头转向,以得到些许“别人不知独我知”的安慰,更甚者想再现爱因斯坦当年相对论无人知晓的盛景?这次牢骚发大了……想到上次查Image Snake算法查到的乌七八糟就生气。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值