哈希模理论

主要观点:

  • 介绍了哈希(Hashing)的相关概念,包括哈希函数将数据结构转换为整数,以及哈希函数可能存在碰撞等情况。
  • 讨论了处理哈希碰撞的方法,如规范化(Canonization)、同态(Homomorphisms)和不变量(Invariants)等。
  • 以多种数据结构为例,如集合、列表、树等,阐述了在不同情况下如何应用这些方法来处理哈希相关问题。
  • 提及了一些相关的技术和工具,如 Python 的Fractionsys.intern等,以及一些研究论文和资料。

关键信息和重要细节:

  • 哈希函数可能存在碰撞,好的哈希函数应尽量减少相同键的碰撞。
  • 规范化方法是将结构简化为规范形式再进行哈希,如将分数(4,8)简化为(1,2),对集合可通过排序元素来实现规范化。
  • 同态方法是找到从代数理论到整数的同态,如利用xororand等整数运算构建哈希函数,类似的有布隆过滤器(Bloom filters)。
  • 不变量方法是发明一些尊重结构对称性的不变量,如集合的大小、变量计数的多重集等,可用于解决哈希相关问题。
  • 对于具有α等价性的树等结构,需要特殊的哈希处理方法,如文中的Term类实现了α等价性的比较和哈希。
  • 不同的数据结构在哈希处理上有不同的特点和方法,如集合可通过 Patricia 树等方式进行哈希。
  • 哈希和哈希一致性(Hash consing)相关,在某些情况下使用内部化(interned)数据可提高效率。

具体示例:

  • print(hash((4,8)))print(hash((1,2)))结果不同,说明默认哈希函数不尊重分数的等价性。
  • 通过from fractions import Fraction可将分数规范化后哈希,结果相同。
  • 对集合进行排序后哈希,不同顺序的相同元素集合哈希结果相同。
  • 文中的Term类实现了α等价性的比较和哈希,如f(x) == f(f(x))Truef(x) == f(y)False等。

相关资源和论文:

阅读 8
0 条评论