我们都知道,基于比较的模型中的元素唯一性不能在时间内完成。但是,在word-RAM上,可以达到更好的效果。
当然,如果假设存在可以在线性时间中计算出的完美哈希函数,我们将获得一种线性时间算法来区分元素:仅将数字逐个哈希一次,如果发生冲突则返回1。
但是,有两个问题:1)我可以找到使用随机性的大多数完美哈希函数构造,以及2)在任何地方都找不到关于预处理时间的讨论,即确定哪个哈希函数要运行所需的时间根据输入的数字集使用。
Fredman等人的“ 用最坏情况访问时间存储稀疏表 O (1 ) ”通过在最坏情况下为访问时间提供哈希函数,确实解决了第一个问题,但第二个问题却一言不发。
综上所述,这就是我想要的:
设计了一种算法,给定一组的数(每个数字是位长)上的字-RAM与字长,找到散列函数在时间,其中。功能应具有任何属性,的元素的数量映射到是一个常数和计算应采取Ñ 瓦特瓦特ħ :小号→ { 1 ,... ,米} ø (Ñ )米= Ô (Ñ )ħ Ĵ ∈ { 1 ,... ,米} š Ĵ ħ (我)Ô (1 )ø (1 )时间在“合理的”单词-RAM模型中,即该模型不应允许在时间内评估单词的“外来”函数。
我也想知道是否有算法来解决word-RAM上的元素差异性,而这些算法根本不使用哈希函数。
8
回复:“我还想知道是否有算法完全不使用哈希函数来解决word-RAM上的元素差异。” —只要您只希望而不是线性的,就可以在RAM单词上进行大量的工作(请参见en.wikipedia.org/wiki/Integer_sorting)。其中一些算法使用哈希,而其他算法则不使用。
—
David Eppstein 2012年
是否允许近似解决方案?
—
2013年
基数对您来说太慢了吗?
—
Thomas Mueller