作者:代号
来源:CSDN博客
编者注:原标题为《从哈希函数、哈希冲突、开散列出发,一文告诉你哈希思想与哈希表构造到底是什么》
Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。
今天我们就一起来探索一下,哈希最底层的奥秘。
哈希概念
构造一种储存结构,通过某种函数,使得其元素的储存位置与他的关键码之间能够建立一一映射关系,那么在查找时通过该函数很快找到相应元素。
美国体育出版商Sports Illustrated推出基于Polygon的NFT票务系统:金色财经报道,美国体育出版商Sports Illustrated推出基于Polygon的NFT票务系统。这一系统允许活动所有者、组织者和推广者通过“超级门票”功能获得更多的票务使用场景,比如精彩片段、收藏品和优惠活动等。
该公司发言人表示,区块链是票务的未来,可将已使用的条形码转化为引人入胜且可收藏的内容。(coindesk)[2023/5/3 14:39:16]
简言之,就是设定某一固定函数(hashFunc),通过此函数来使插入元素的值与元素位置相对应,往后我们需要查找此元素时就可以通过此函数(hashFunc)找到该值。
加密信贷协议DebtDAO上线主网,提供无需出售股权无抵押的“基于收入的融资”:4月10日消息,加密信贷协议DebtDAO宣布上线主网,主网上线前,DebtDAO经过了3个月的Beta测试,平台总交易量达到约15万美元。据悉,DebtDAO为DAO和协议等加密实体提供“基于收入的融资”,即借款人无需出售股权或提供抵押品,而是将一定比例的收入支付给贷方,债务一旦偿还,借款人将获得100%的收入,并获得他们通过贷款创造的所有价值。
2022年8月,DebtDAO完成了DragonflyCapital领投350万美元种子轮融资。[2023/4/10 13:54:43]
哈希函数
散列函数又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。
SGS将在28个机场实施DocCerts区块链管理解决方案:金色财经报道,沙特机场地勤服务提供商SGS将与区块链公司IR4LAB合作,在沙特的28个机场实施DocCerts区块链管理解决方案,适用于SGS提供地面服务的所有培训相关数字文件和地面服务设备许可证。(Zawya)[2023/2/9 11:56:42]
该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。
哈希函数使得计算出来的地址均匀分布在整个空间。
BitKeep:目前已完成99%的赔付工作,黑客72小时内未归还资金将诉诸法律:10月27日消息,Web3多链钱包BitKeep在官网上发布了一封《致BitKeep Swap黑客的公开信》,公布了其掌握的黑客/模仿攻击套利者的信息,本次黑客攻击事件共有1个首次攻击黑客和5个主要的模仿攻击套利者;黑客/模仿攻击套利者均被关联到关键信息;首次攻击黑客是惯犯,与多起黑客攻击事件有关联;模仿攻击套利者已经被定位到在某电报群。BitKeep呼吁首次攻击黑客与5个主要的模仿攻击套利者退还资产,BitKeep已经制定漏洞赏金及退款奖励(相关额度的5%)。如果黑客/模仿攻击套利者在72小时内不归还资金,BitKeep不排除采取相应的法律手段解决问题。此外,BitKeep表示目前已完成99%的赔付工作。
此前10月18日消息,BitKeep官方披露BitKeep Swap遭黑客攻击,造成约100万美元的损失。[2022/10/27 11:48:01]
插入及搜索元素
根据待插入元素的关键码,根据哈希函数计算出其存储位置。
我们用除留余数法的哈希函数进行介绍:例:?现有1,3,4,5,6,9几个数进行储存,将n%10求模运算的结果作为哈希地址进行元素插入。
若想查找某一元素时,则只需要对查找元素进行哈希函数运算,得到其存放地址,就能找到该元素。
哈希冲突
当出现插入一个元素,其根据哈希函数计算出的地址,已经被其他元素占用的情况称为哈希冲突。
如:
为了能更好的识别当前位置是否被占用,我们需要对每个位置进行标记
enumstate{EMPTY,FULL,DELETE};
注意:如果我们要删除某一元素时,不能将其直接删除,如果直接删除,会对当前结构产生影响,导致其他元素的搜索出错,所以当我们要删除一个元素时,需要将其标记为删除,而非空。
开散列
开散列又称
链地址法,首先对关键码集合用哈希函数计算哈希地址,当具有相同地址的关键码时,将所有同一地址的元素,通过单链表的形式链接起来,
而各链表的头结点存储在哈希表中。
这下,你该了解哈希的思想和哈希表构造了吧?欢迎在评论区和我们分享你的想法!
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。