Function 完美散列函数

Function 完美散列函数,function,data-structures,hash,Function,Data Structures,Hash,我最近收到一份家庭作业,询问给我一个键列表,是否有可能生成一个没有冲突的哈希函数。做了一些研究,我发现给定一个预先排序的键列表,完美的哈希函数是可能的 然而,除此之外,我不太确定该说些什么。有没有人能给我一些关于如何生成完美散列函数的建议,或者给出一个预定义列表对一个允许生成完美函数的散列函数创建者有什么作用 谢谢你的帮助 避免冲突的唯一方法是在键和哈希值之间建立1对1的关系。哈希值的范围必须至少与键的数量一样大,映射函数必须将每个键转换为唯一的值。这里有更多信息:在CLRS手册第11.5节“完

我最近收到一份家庭作业,询问给我一个键列表,是否有可能生成一个没有冲突的哈希函数。做了一些研究,我发现给定一个预先排序的键列表,完美的哈希函数是可能的

然而,除此之外,我不太确定该说些什么。有没有人能给我一些关于如何生成完美散列函数的建议,或者给出一个预定义列表对一个允许生成完美函数的散列函数创建者有什么作用


谢谢你的帮助

避免冲突的唯一方法是在键和哈希值之间建立1对1的关系。哈希值的范围必须至少与键的数量一样大,映射函数必须将每个键转换为唯一的值。这里有更多信息:

在CLRS手册第11.5节“完美哈希”中,我们发现,给定一组固定的
n
输入键,我们可以构建一个没有冲突的哈希表。大纲:

  • 如果我们能负担得起表大小
    m=n*n
    ,那么根据该节中的定理11.9(下面引用),我们知道我们可以很容易地从一个通用的哈希函数类中找到一个哈希函数,它不会产生冲突

  • 否则,可以为具有超过1个键的任何插槽保留“辅助哈希表”。这样的表本身可以基于定理11.9的思想来构建,因为现在该插槽中的键数
    nj
    很小,因此
    nj*nj
    也会很小

引述定理11.9: “如果我们使用从通用哈希函数类中随机选择的哈希函数
h
n
键存储在大小为
m=n*n
的哈希表中,则发生冲突的概率小于1/2。”