如果随机性是有界的,一个粗略的想法是生成一堆“随机单调签名”函数,并使用它们来近似子集关系(布隆过滤器)。不幸的是,我不知道如何将其变成一种实用的算法,但是这里有些估计并不能立即证明这一想法是不可能的。这远不是一个有用的解决方案,但是我会写出来以防万一。
为简单起见,假设集的大小几乎相同,例如,即s = o (u )。我们可以假设1 « 小号,否则我们就大功告成了。定义
q|S|=s±O(1)s=o(u)1≪s
注意,p»1。
qp=[s/2]=[(uq)(sq)]
p≫1
pA1,…,Ap⊂Uqf:2U→{0,1}f(S)=1Ai⊂SiSAi,f ˚F(小号)小号⊂Ť˚F(小号)≤˚F(Ť)Ť⊄小号吨∈Ť-小号˚FŤ
Pr(f(S)=0)=Pr(∀i.Ai⊄S)=Pr(A1⊄S)p=(1−(sq)/(uq))p=e−Θ(1)
f(S)S⊂Tf(S)≤f(T)T⊄St∈T−Sf镨(˚F (小号)= 0 < 1 = ˚F (Ť ))T⊄S ˚F˚F(小号)〜Ô(Ñ+û)〜Ô(Ñ2+Ù2)Pr(f(S)=0<1=f(T))=Pr(f(S)=0)Pr(f(T)=1|f(S)=0)=e−Θ(1)Pr(∃i.Ai⊂T,Ai∩T−S≠0|f(S)=0)=e−Θ(1)Pr(∃i.t∈Ai⊂T|f(S)=0)≤e−Θ(1)Pr(∃i.t∈Ai⊂T)≈e−Θ(1)pPr(t∈A1⊂T)≤e−Θ(1)p(sq−1)/(uq)≈e−Θ(1)pqs−q(sq)/(uq)=e−Θ(1)
这些步骤中有些很微不足道,但是我今晚没有时间改进它们。无论如何,如果它们全部成立,那么至少显然不是不可能随机生成具有合理可能性将子集与非子集区分开的签名函数。这样对数的函数可以正确地区分所有对。如果生成签名函数并将计算减少到时间,则结果将是整体算法。
ff(S)O~(n+u)O~(n2+u2)
即使以上计算正确,我也不知道如何快速生成具有所需功能的单调签名函数。此技术也可能不会扩展到明显不同的布景大小。