令和为子集。我们对找到Minkowski和中感兴趣。A
χ X:{ 0 ,... ,2 Ñ } → { 0 ,1 } X χ X(X )= { 1 如果 X ∈ X 0 ,否则
令为和的离散卷积,则且仅当。因此,可以通过FFT通过离散卷积在时间内计算f
有时很重要的一点是找出总和为的实际对和 inB 。被称为证人的,如果存在使得。函数被称为证人函数如果瓦特(X )是一个证人X。a∈A
是否可以在时间内计算见证函数?O(nlogn)
O(nlogn)
令和为子集。我们对找到Minkowski和中感兴趣。A
χ X:{ 0 ,... ,2 Ñ } → { 0 ,1 } X χ X(X )= { 1 如果 X ∈ X 0 ,否则
令为和的离散卷积,则且仅当。因此,可以通过FFT通过离散卷积在时间内计算f
有时很重要的一点是找出总和为的实际对和 inB 。被称为证人的,如果存在使得。函数被称为证人函数如果瓦特(X )是一个证人X。a∈A
是否可以在时间内计算见证函数?O(nlogn)
O(nlogn)
Answers:
在这里,我解释了如何获得O (n * p o l y l o g n )随机运行时间。我们需要一系列观察:
甲证人的值的v是一对数字(一,b )∈ 甲× 乙使得一个+ b = v。设P 甲(X )= Σ 我∈ 甲 X 我和P 乙(X )可以类似地定义。观察到x v的系数在P A(x )∗ P B(x
假设v具有单个证人(一,b )∈ 甲× 乙,并考虑多项式Q 甲(X )= Σ 我∈ 甲我* X 我。显然,系数X v在Q 甲(X )* P 乙(X )是一个,因此,我们现在知道的对(一个,v - 一)
因此,我们完成了只有一个见证人的情况。因此,考虑v有k个证人(a 1,b 1),… ,(a k,b k)的情况。让我(ķ )= ⌈ LG √
我们快完成了。计算用于分辨率随机样本上述我= 1 ,... ,⌈ LG Ñ ⌉。对于每个这样的分辨率,计算随机样本和相关的多项式。同样,计算A和B的相关多项式。这个预处理天真地需要O (n log 3 n ),但是我怀疑稍微小心一点log n因子应该可以删除。
算法:对于每个值v,通过查询多项式Q A(x )∗ P B(x ),计算出它在恒定时间内有多少个见证人,例如k 。接下来,转到i (k )的相关数据结构。然后,它找到将其作为单个见证人的随机样本,并在恒定时间内提取作为该见证人的对。
奇怪的是,预处理时间为O (n log 3 n ),但是查找证人本身的预期时间仅花费O (n )时间,因为只要有人找到证人就可以停止搜索。这表明该算法应该是可改进的。特别地,对于i (k )≪ lg n,生成的多项式非常稀疏,并且应该能够执行更快的FFT。
好的,我一直在等待,因为实际上Sariel应该获得答案,但是我已经厌倦了等待,因此这是我接近线性随机算法的切入点。
这将使运行时间耗费三个对数因子。可能可以减少。
这个答案给出了确定的O (n p o l y l o g n ) 算法。
看起来Sariel和David的算法可以通过类似于本文的方法去随机化。[2]在进行该过程时,我发现有一个更普遍的问题暗示着这个结果。
该ķ -reconstruction问题
k 有隐藏组小号1,... ,小号ñ ⊂ { 1 ,... ,米},我们有两个预言小号我ž Ë和小号ü 米即采取查询集Q。
S1,…,Sn⊂{1,…,m} Size Sum Q
- 小号我ž È (Q )返回(| š 1 ∩ Q |,| 小号2 ∩ Q |,... ,| 小号Ñ ∩ Q |),每个交叉点的大小。
Size(Q) (|S1∩Q|,|S2∩Q|,…,|Sn∩Q|) - 小号ù 中号(Q )返回(Σ 小号∈ 小号1 ∩ Q小号,Σ 小号∈ 小号2 ∩ Q小号,... ,Σ 小号∈ 小号Ñ ∩ Q小号),在每个交叉点处的元素的总和。
Sum(Q) (∑s∈S1∩Qs,∑s∈S2∩Qs,…,∑s∈Sn∩Qs) The k
k -reconstruction problem asks one to find nn subsets S′1,…,S′n such that S′i⊂Si and |S′i|=min(k,|Si|) for all i.
Let f be the running time of calling the oracles, and assume f=Ω(m+n), then one can find the sets in deterministic O(fklogn polylog(m)) time. [1]
Now we can reduce the finding witness problem to 1-reconstruction problem. Here S1,…,S2n⊂{1,…,2n} where Si={a|a+b=i,a∈A,b∈B}.
Define the polynomials χQ(x)=∑i∈Qxi, IQ(x)=∑i∈Qixi
The coefficient for xi in χQχB(x) is |Si∩Q| and in IQχB(x) is ∑s∈Si∩Qs. Hence the oracles take O(nlogn) time per call.
This gives us an O(n polylog(n)) time deterministic algorithm.
[1] Yonatan Aumann, Moshe Lewenstein, Noa Lewenstein, Dekel Tsur: Finding witnesses by peeling. ACM Transactions on Algorithms 7(2): 24 (2011)
[2] Noga Alon, Moni Naor: Derandomization, witnesses for Boolean matrix multiplication and construction of perfect hash functions. Algorithmica 16(4-5) (1996)