哈希游戏本科生颠覆姚期智40年前猜想!意外发现新型哈希表数据搜索速度突破理论上限
哈希游戏作为一种新兴的区块链应用,它巧妙地结合了加密技术与娱乐,为玩家提供了全新的体验。万达哈希平台凭借其独特的彩票玩法和创新的哈希算法,公平公正-方便快捷!万达哈希,哈希游戏平台,哈希娱乐,哈希游戏而这种新型哈希表在最坏情况下的查询和插入时间与(log x) ²成正比,远比之前认为的x快。
不仅如此,小克他们还发现非贪婪哈希表的平均查询时间可以达到一个与哈希表x无关的恒定值,这一发现也完全出乎意料。
哈希表(Hash table)是根据键而直接访问在存储器存储位置的数据结构。
也就是说,它通过计算一个键值的函数,将所需查询的数据映射到表中一个位置让人来访问,这加快了查找速度。这个映射函数被称为哈希函数,存放记录的数组称作哈希表。
更通俗比喻,哈希表就好比一个很大的文件柜,其中有很多个抽屉(槽)。每个抽屉可以存放一个文件(数据项)。但是,文件柜很大,手动找文件肯定很麻烦。所以,你使用一个文件编号(哈希函数),它会告诉你应该把某个文件放到哪个抽屉里,或者当你要找某个文件时,告诉你该去哪个抽屉。
比如存放一个文件,文件名是“苹果”,通过文件编号规则(哈希函数)得到一个数字,假设是 3,那么就把“苹果”文件放到文件柜的第3个抽屉。
如果两个文件(比如“苹果”和“香蕉”)的编号规则(哈希函数)计算出来是一样的(例如都被放到抽屉 3),那么就会发生冲突。为了应对这个问题,哈希表采用了处理冲突的策略,比如在抽屉里放一个“文件夹”(链表)来存放所有冲突的文件,或者把文件放到下一个抽屉。
衡量哈希表已使用空间与总空间的比例,被称为负载因子(Load Factor)。
当负载因子较小时,哈希表的空桶多、冲突少,查找效率较高,但可能浪费内存。
1985年,姚期智在论文《Uniform Hashing Is Optimal》中提出,在具有特定属性的哈希表中,查找单个元素或空位的最佳方法是均匀探测(uniform probing),而且最坏情况的插入时间与x成正比。
即如果哈希表已经99%满了,那么需要查看100个不同位置,才能找到一个空位。
当x=100时,表示哈希表已经被填充了99%,负载因子为0.99。当x=1000时,表示哈希表被填充了99.9%,负载因子为0.999。
当时正在罗格斯大学读本科的小克读了一篇名为《Tiny Pointers》的论文。
这篇论文提出了tiny pointer的概念,它能指向计算机内存中的一段信息或一个元素。
读过论文后,小克意识到有一种方法可以进一步降低tiny pointer内存使用的方法。
即最劣查询和插入所需时间与(log x)²成正比,比之前姚期智论文中提出的x快得多。
最开始,小克的导师对这个新发现表示怀疑,毕竟哈希表从20世纪50年代诞生以来,已经被研究得很透彻了。
为了验证这一发现是否正确,导师法拉·科尔顿(Farach-Colton)找到了卡内基梅隆大学的威廉姆·库斯莫尔(William Kuszmaul)一起验证。
结果就是库斯莫尔发现,小克不仅发现了一个新的哈希表,更进一步推翻了40年前的猜想。
有人因此感慨:创新的最佳方式总是要忽略以往的一些路径。现在人们总是容易陷入前人的思维模式。
他的老师法拉·科尔顿甚至说,小克是自己在罗格斯大学32年以来见过最优秀的本科生。
学习之外,他喜欢下象棋、摄影和诗歌,以及琢磨CPU、GPU、AI处理器等。