首页 > 其他分享 >Hash

Hash

时间:2024-11-15 20:41:46浏览次数:1  
标签:__ lg Hash int 一个 随机

Hash

一种快速判定的方法,具体是将一个复杂的结构映射成一个整数,用极低的错误概率换取极快的比较效率。


进制Hash

对于序列的Hash,关心元素之间的位置关系。
不要把任意字符对应到数字0,比如假如把a对应到数字0,那么将不能只从Hash结果上区分ab和b.

注意有时候卡自然溢出和 int 范围内的模数,可以使用 \(10^{18}+3\) 。


异或Hash

针对于集合的Hash,可以实现出现一个数时加入,再次出现时删除。

随机赋权


加和Hash

针对于可重集的Hash,\(+w_x\) 即向集合加入一个 \(x\) ,\(-w_x\) 即从集合中删除一个 \(x\)。


记一种随机权值Hash的快速查表方法

对于 for(int i=1;i<=n;i++)w[i]=rnd();如果我们要查询一个 \(W\) 在不在 \(\{w\}\) 里,或者进一步的想知道对应的下标是什么,有以下方法。

朴素想法:unordered_map,就是之间建立反过来的映射,这样常数太大。

手写Hash表:即取 \(w\) 后若干位,将相同的放入一个vector每次遍历查找,由于 \(w\) 是随机的,期望大小为 \(\mathcal O(1)\)。

进阶想法:直接将 \(w_i\) 的二进制下的后__lg(n)位变成 \(i\),这样遇到一个数 \(W\),取出后__lg(n)位,设作 \(x\),如果 \(x\in [1,n]\land w_x=W\),则 \(W\) 存在。

标签:__,lg,Hash,int,一个,随机
From: https://www.cnblogs.com/lupengheyyds/p/18548627

相关文章

  • 散列表-HashMap的增删改查-Java
    在Java中,HashMap 是一种基于散列表的Map接口实现,可以使用null值和null键。以下是对 HashMap<Character,Integer> 进行的增删改查操作:1.增(put) map.put(key,value)、查(get) Integervalue=map.get(key)importjava.util.HashMap;publicclasstest{public......
  • 基于MinHash的相似性算法
    原文链接:基于MinHash的相似性算法–每天进步一点点MinHash也称最小哈希式独立排列局部性敏感哈希,是一种非常快速的对两个不同集合进行相似性分析的方法。该算法起初主要用于在搜索引擎中的重复网页检查,现在也应用于解决大规模聚类问题。1.与Jaccard相似性关系在采用基于Jacca......
  • 谈谈ConcurrentHashMap的扩容机制
    ​​ConcurrentHashMap​​​是Java中一种线程安全且高效的哈希表实现,它在Java8之后的版本中采用了与早期版本不同的扩容机制。在Java8及以后的版本中,​​ConcurrentHashMap​​利用了分段锁(Segment,直到Java8)和之后的CAS(CompareandSwap)操作以及节点的树化来实现高效的并发读......
  • 学习笔记(三十六):[email protected] (非线性容器HashMap)
    概述:HashMap底层使用数组+链表+红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value一、导入import{HashMap}from'@kit.ArkTS' 二、定义lethashMap:HashMap<string,number>=ne......
  • hashCode()与equals()之间的关系
      在Java中,`hashCode()`和`equals()`方法之间存在紧密的关系,主要体现在它们共同作用于对象的比较和存储上,尤其是在集合(如HashSet、HashMap)和哈希表的实现中。  1.hashCode()和equals()是Object类中定义的两个重要方法,用于对象的比较和哈希处理。2.hashCode()方法:hashCo......
  • hashCode()与equals()之间的关系
      在Java中,`hashCode()`和`equals()`方法之间存在紧密的关系,主要体现在它们共同作用于对象的比较和存储上,尤其是在集合(如HashSet、HashMap)和哈希表的实现中。  1.hashCode()和equals()是Object类中定义的两个重要方法,用于对象的比较和哈希处理。2.hashCode()方法:hashCo......
  • GeoHash处理经纬度,降维,空间填充曲线
    个人博客:无奈何杨(wnhyang)个人语雀:wnhyang共享语雀:在线知识共享Github:wnhyang-Overview参考https://segmentfault.com/a/1190000042971576GeoHash原理以及代码实现_geohash编码-CSDN博客GeoHash代码实现--java_geohashjava代码示例-CSDN博客在线经纬度距离计算http://......
  • 4-2-2.C# 数据容器 - HashSet 扩展(HashSet 集合操作、HashSet 存储对象的特性、HashSe
    HashSet概述HashSet<T>存储的元素是无序的HashSet<T>存储的元素是不可重复的HashSet<T>支持泛型,可以指定存储的元素的类型HashSet<T>不支持索引,不可以通过索引获取或修改元素HashSet<T>不是线程安全的,在多线程环境中需要谨慎使用一、HashSet集合操作1......
  • 4-2-2.C# 数据容器 - HashSet(HashSet 的定义、HashSet 元素的基本操作、HashSet 元素
    HashSet概述HashSet<T>存储的元素是无序的HashSet<T>存储的元素是不可重复的HashSet<T>支持泛型,可以指定存储的元素的类型HashSet<T>不支持索引,不可以通过索引获取或修改元素HashSet<T>不是线程安全的,在多线程环境中需要谨慎使用一、HashSet的定义定义......
  • cmu15545-哈希表(Hash Table)
    基本概念哈希和树一样,是数据库系统中用于访问数据的方法。空间复杂度:$O(n)$时间复杂度:$O(1)~O(n)$权衡:更大的哈希空间(碰撞减少),还是更少的哈希空间(碰撞处理)?哈希函数CRC-64(1975)MurmurHash(2008)GoogleCityHash(2011)FacebookXXHash(2012)【最常用】Goo......