考虑以下问题:
输入:列出整数的
目标:确定两个列表中是否都存在整数。
假设两个列表的大小均为n。是否存在确定性的线性时间算法来解决此问题?换句话说,您可以在不使用随机性的情况下确定地在O (n )时间内解决此问题吗?
不幸的是,您不能假定列表元素都很小。
我可以看到如何使用随机算法在预期时间内求解它:随机选择一个2通用哈希函数h,将X的元素存储到哈希表中(使用h作为哈希函数),然后查找Y的每个元素以查看其是否在哈希表中。预期的运行时间为O (n )。但是,我看不到如何找到运行时间为O (n )的确定性算法。如果您尝试对此进行非随机化并修复单个特定的哈希函数,则将存在最坏情况的输入,导致此过程在时间。我能找到的最好的确定性算法涉及对值进行排序,但这不是线性时间。我们可以达到线性运行时间吗?
另外,如果您假设所有列表元素都是范围内的整数(基本上,进行计数排序),我可以看到如何在线性时间内解决它-但我对一般情况会感兴趣我们无法假设的情况。
如果答案取决于计算模型,那么您会想到RAM模型,但对于任何合理的计算模型,我都会对结果感兴趣。我知道用于元素唯一性的决策树算法的下界,但这不是确定的,因为有时即使在Ω (n log n )界中也可以找到线性时间算法决策树模型。