O(n)时间中的元素区分度?


21

我们都知道,基于比较的模型中的元素唯一性不能在时间内完成。但是,在word-RAM上,可以达到更好的效果。o(nlogn)

当然,如果假设存在可以在线性时间中计算出的完美哈希函数,我们将获得一种线性时间算法来区分元素:仅将数字逐个哈希一次,如果发生冲突则返回1。

但是,有两个问题:1)我可以找到使用随机性的大多数完美哈希函数构造,以及2)在任何地方都找不到关于预处理时间的讨论,即确定哪个哈希函数要运行所需的时间根据输入的数字集使用。

Fredman等人的“ 用最坏情况访问时间存储稀疏表O(1) O 1 ”通过在最坏情况下为访问时间提供哈希函数,确实解决了第一个问题,但第二个问题却一言不发。O(1)

综上所述,这就是我想要的:

设计了一种算法,给定一组的数(每个数字是位长)上的字-RAM与字长,找到散列函数在时间,其中。功能应具有任何属性,的元素的数量映射到是一个常数计算应采取Ñ 瓦特瓦特ħ 小号{ 1 ... } ø Ñ = Ô Ñ ħ Ĵ { 1 ... } š Ĵ ħ Ô 1 ø 1 Snwwh:S{1,,m}O(n)m=O(n)hj{1,,m}Sjh(i)O(1)时间在“合理的”单词-RAM模型中,即该模型不应允许在时间内评估单词的“外来”函数。O(1)

我也想知道是否有算法来解决word-RAM上的元素差异性,而这些算法根本不使用哈希函数。


8
回复:“我还想知道是否有算法完全不使用哈希函数来解决word-RAM上的元素差异。” —只要您只希望而不是线性的,就可以在RAM单词上进行大量的工作(请参见en.wikipedia.org/wiki/Integer_sorting)。其中一些算法使用哈希,而其他算法则不使用。o(nlogn)
David Eppstein 2012年

是否允许近似解决方案?
2013年

Θ(nlogn)O(n)o(nlogn)

基数对您来说太慢了吗?
Thomas Mueller

Answers:


8

O(nloglogn)o(nlogn)

O(nloglogn)nwO(nloglogn)

据我所知,这是迄今为止已知的最好结果。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.