文献分享: DESSERT基于LSH的多向量检索(Part2——理论保证的证明)
1. DESSERT \textbf{1. DESSERT} 1. DESSERT算法
1.1. \textbf{1.1. } 1.1. 向量集搜索是什么
1️⃣向量集搜索的过程
- 输入:查询向量集 Q = { q 1 , . . . , q m q } ∈ R m q × d Q\text{=}\{q_1,...,q_{m_q}\}\text{∈}\mathbb{R}^{m_q\text{×}d} Q={q1,...,qmq}∈Rmq×d,向量集的集合 D = { S 1 , . . . , S N } D\text{=}\{S_1,...,S_N\} D={S1,...,SN},其中 S i = { x i 1 , . . . , x i m i } ∈ R m i × d S_i\text{=}\{x_{i1},...,x_{im_i}\}\text{∈}\mathbb{R}^{m_i\text{×}d} Si={xi1,...,ximi}∈Rmi×d
- 输出:用 F ( Q , S i ) F(Q,S_i) F(Q,Si)衡量 Q Q Q与 S i S_i Si相似度,要求以 1 – δ 1–\delta 1–δ的概率返回与 Q Q Q相似度最高的 S i S_i Si,即 S ∗ = argmax i ∈ { 1 , … , N } F ( Q , S i ) S^*\text{=}\mathop{\operatorname{argmax}}\limits_{{i\in\{1,\ldots{},N\}}}F\left({Q,{S}_{i}}\right) S∗=i∈{1,…,N}argmaxF(Q,Si)
2️⃣对相似度 F ( Q , S i ) F(Q,S_i) F(Q,Si)的定义
- 子相似度:衡量每个 q r ∈ Q q_r\text{∈}Q qr∈Q和 x i j ∈ S i x_{ij}\text{∈}S_i xij∈Si时间的相似度
👉举个例子,对于查询Q={q1,q2,q3}考虑下面向量集 S1 = {x11, x12, x13, x14} S2 = {x21, x22, x23, x24, x25} S3 = {x31, x32, x33} 👉让Q和S1进行内部聚合,先要算出全部的相似度(比如内积) Sim(q1,x11) Sim(q1,x12) Sim(q1,x13) Sim(q1,x14) Sim(q2,x11) Sim(q2,x12) Sim(q2,x13) Sim(q2,x14) Sim(q3,x11) Sim(q3,x12) Sim(q3,x13) Sim(q3,x14)
- 内部聚合 σ \sigma σ:让每个 q r ∈ Q q_r\text{∈}Q qr∈Q得到一共聚合后的相似度,类似于 ColBERT \text{ColBERT} ColBERT的 MaxSim \text{MaxSim} MaxSim
👉对于每个qi,应用内部聚合函数σ Inner(q1,S) = σ{Sim(q1,x11),Sim(q1,x12),Sim(q1,x13),Sim(q1,x14)} Inner(q2,S) = σ{Sim(q2,x11),Sim(q2,x12),Sim(q2,x13),Sim(q2,x14)} Inner(q3,S) = σ{Sim(q3,x11),Sim(q3,x12),Sim(q3,x13),Sim(q3,x14)} 👉在ColBERT中这个σ就是所谓的MaxSim Inner(q1,S) = Max{Sim(q1,x11),Sim(q1,x12),Sim(q1,x13),Sim(q1,x14)} Inner(q2,S) = Max{Sim(q2,x11),Sim(q2,x12),Sim(q2,x13),Sim(q2,x14)} Inner(q3,S) = Max{Sim(q3,x11),Sim(q3,x12),Sim(q3,x13),Sim(q3,x14)}
- 外部聚合 A A A:将每个 q r ∈ Q q_r\text{∈}Q qr∈Q内部聚合的结果进行处理,得到最后评分 F ( Q , S ) F(Q,S) F(Q,S)
👉对每个内部聚合应用内部聚合函数A F(Q,S1) = A{Inner(q1,S),Inner(q2,S),Inner(q3,S)} 👉在ColBERT中这个A就是逐个相加 F(Q,S1) = Inner(q1,S) + Inner(q2,S) + Inner(q3,S)
1.2. \textbf{1.2. } 1.2. 算法的朴素流程
1️⃣索引构建
- 输入:若干向量集,如 D = { S 1 , S 2 , . . . , S N } D\text{=}\{S_1,S_2,...,S_N\} D={S1,S2,...,SN}
- 构建:对于每个 S i = { x i 1 , x i 2 , . . . , x i m i } S_i\text{=}\{x_{i1},x_{i2},...,x_{im_i}\} Si={xi1,xi2,...,ximi}都执行索引构建操作
- 索引分配:为 S i S_i Si中每个元素分配一个唯一索引,例如 x i j x_{ij} xij的索引可以为 j j j
- 哈希分桶:用 L L L个 LSH \text{LSH} LSH函数 ψ 1 , ψ 2 , . . . , ψ L \psi_1,\psi_2,...,\psi_L ψ1,ψ2,...,ψL对 S i S_i Si中所有元素进行 L L L次分桶
- 索引存储:利用 D [ i ] t , h \mathcal{D}{\left\lbrack{}i\right\rbrack}_{t,h} D[i]t,h数组结构,对应哈希函数 ψ t \psi_t ψt下哈希值为 h h h的桶,存储存储了 S i S_i Si中落入该桶的所有向量的索引
2️⃣查询阶段
- 输入:查询向量集 Q = { q 1 , q 2 , . . . , q m q } Q\text{=}\{q_1,q_2,...,q_{m_q}\} Q={q1,q2,...,qmq},以及上一步构建的 DESSERT \text{DESSERT} DESSERT索引
- 编码:照样用那 L L L个 LSH \text{LSH} LSH函数 ψ 1 , ψ 2 , . . . , ψ L \psi_1,\psi_2,...,\psi_L ψ1,ψ2,...,ψL,对 Q Q Q中所有元素进行 L L L次分桶
- 评分:通过检查 q r ∈ Q q_r\text{∈}Q qr∈Q和 x i j ∈ S i x_{ij}\text{∈}S_i xij∈Si的碰撞次数 Count ( q r , x i j ) \text{Count}(q_r,x_{ij}) Count(qr,xij),得到二者相似度的一个近似 Sim ^ ( q r , x i j ) = Count ( q r , x i j ) L \hat{\text{Sim}}(q_r,x_{ij})\text{=}\cfrac{\text{Count}(q_r,x_{ij})}{L} Sim^(qr,xij)=LCount(qr,xij)
- 原理:为何 Count ( q r , x i j ) L \cfrac{\text{Count}(q_r,x_{ij})}{L} LCount(qr,xij)可作为近似评分
- 对 q r ∈ Q q_r\text{∈}Q qr∈Q和 x i j ∈ S i x_{ij}\text{∈}S_i xij∈Si各自进行 L L L次分桶后碰撞 Count ( q r , x i j ) \text{Count}(q_r,x_{ij}) Count(qr,xij)次,故估计碰撞率为 Count ( q r , x i j ) L \cfrac{\text{Count}(q_r,x_{ij})}{L} LCount(qr,xij)
- 鉴于 Pr [ ψ ( x ) = ψ ( y ) ] =Sim ( x , y ) \text{Pr}[\psi{(x)}\text{=}\psi{(y)}]\text{=}\text{Sim}(x,y) Pr[ψ(x)=ψ(y)]=Sim(x,y)的假设,所以碰撞率就是相似度
- 实现:基于 D [ i ] t , h \mathcal{D}{\left\lbrack{}i\right\rbrack}_{t,h} D[i]t,h数组结构(具体优化则见 TinyTable \text{TinyTable} TinyTable)
- 对于 ∀ q r ∈ Q \forall{}q_{r}\text{∈}Q ∀qr∈Q用哈希函数 ψ t \psi_t ψt得出其哈希值 h h h,按照 t , h t,h t,h索引直接在找到桶 D [ i ] t , h \mathcal{D}{\left\lbrack{}i\right\rbrack}_{t,h} D[i]t,h,如果 x i j x_{ij} xij索引也在这儿就算碰撞一次
- 对 ψ 1 , ψ 2 , . . . , ψ L \psi_1,\psi_2,...,\psi_L ψ1,ψ2,...,ψL都进行如上操作,得到最终碰撞次数 Count ( q r , x i j ) \text{Count}(q_r,x_{ij}) Count(qr,xij),碰撞率(相似度)为 Count ( q r , x i j ) L \cfrac{\text{Count}(q_r,x_{ij})}{L} LCount(qr,xij)
- 聚合:基于相似度 Sim ^ ( q r , x i j ) \hat{\text{Sim}}(q_r,x_{ij}) Sim^(qr,xij),得到最终的相似度估值 F ^ ( Q , S i ) \hat{F}(Q,S_i) F^(Q,Si)
- 原始输入:由以上 LSH \text{LSH} LSH得到的,每个 q r ∈ Q q_r\text{∈}Q qr∈Q的近似相似度集 s ^ ( q r , S i ) = { Sim ^ ( q r , x i 1 ) , Sim ^ ( q r , x i 2 ) , . . . , Sim ^ ( q r , x i m i ) } \hat{\mathbf{s}}(q_{r},S_i)\text{=}\{\hat{\text{Sim}}(q_{r},x_{i1}),\hat{\text{Sim}}(q_{r},x_{i2}),...,\hat{\text{Sim}}(q_{r},x_{im_i})\} s^(qr,Si)={Sim^(qr,xi1),Sim^(qr,xi2),...,Sim^(qr,ximi)}
- 内部聚合: σ ( s ^ ( q r , S i ) ) = σ { Sim ^ ( q r , x i 1 ) , Sim ^ ( q r , x i 2 ) , . . . , Sim ^ ( q r , x i m i ) } \sigma(\hat{\mathbf{s}}(q_{r},S_i))\text{=}\sigma\{\hat{\text{Sim}}(q_{r},x_{i1}),\hat{\text{Sim}}(q_{r},x_{i2}),...,\hat{\text{Sim}}(q_{r},x_{im_i})\} σ(s^(qr,Si))=σ{Sim^(qr,xi1),Sim^(qr,xi2),...,Sim^(qr,ximi)},当 σ \sigma σ为 max \text{max} max时左式等于 MaxSim ^ ( q r , S i ) \hat{\text{MaxSim}}(q_r,S_i) MaxSim^(qr,Si)
- 外部聚合: A ( Q , S i ) = A { σ ( s ^ ( q 1 , S i ) ) , σ ( s ^ ( q 2 , S i ) ) , . . . , σ ( s ^ ( q m q , S i ) ) } A(Q,S_i)\text{=}A\{\sigma(\hat{\mathbf{s}}(q_{1},S_i)),\sigma(\hat{\mathbf{s}}(q_{2},S_i)),...,\sigma(\hat{\mathbf{s}}(q_{m_q},S_i))\} A(Q,Si)=A{σ(s^(q1,Si)),σ(s^(q2,Si)),...,σ(s^(qmq,Si))}, A A A可以是将所有 q r ∈ Q q_r\text{∈}Q qr∈Q内部聚合结果相加
1.3. \textbf{1.3. } 1.3. 理论保证
1.3.1. \textbf{1.3.1. } 1.3.1. 对于内部聚合过程
1️⃣乘性约束函数及其引理
- 定义 4.1 \text{4.1} 4.1: ( α , β ) - (α, β)\text{-} (α,β)-乘性极值约束函数
- 条件:给定参数 α , β \alpha,\beta α,β满足 0 < β ≤ 1 ≤ α 0\text{<}β\text{≤}1\text{≤}α 0<β≤1≤α,给定向量 x x x并用 max ( x ) \max{(x)} max(x)表示向量 x x x中最大元素值
- 定义:函数 σ ( x ) : R m → R σ(x)\text{:}ℝ^m\text{→}ℝ σ(x):Rm→R在 U U U上是 ( α , β ) - (α,β)\text{-} (α,β)-极大的,等价于 ∀ x ∈ U \forall{x}\text{∈}U ∀x∈U有 β max ( x ) ≤ σ ( x ) ≤ α max ( x ) \beta\max{(x)}\text{≤}σ(x)\text{≤}\alpha\max{(x)} βmax(x)≤σ(x)≤αmax(x)
- 例如:当内部聚合 σ ( x ) σ(x) σ(x)就是 ColBERT \text{ColBERT} ColBERT的 MaxSim \text{MaxSim} MaxSim函数时,就有 α = β = 1 α\text{=}β\text{=}1 α=β=1即 ( 1 , 1 ) - (1,1)\text{-} (1,1)-极大
- 引理 4.1.1 \text{4.1.1} 4.1.1:平均极值下界衰减引理
- 条件: φ ( x ) : R → R \varphi(x)\text{:}ℝ\text{→}ℝ φ(x):R→R在区间 I I I上是 ( α , β ) - (α,β)\text{-} (α,β)-极大的, x x x为标量是 max ( x ) \max{(x)} max(x)退化为 x x x本身,即 β x ≤ φ ( x ) ≤ α x \beta{x}\text{≤}\varphi(x)\text{≤}\alpha{x} βx≤φ(x)≤αx
- 结论: σ ( x = { x 1 , x 2 , . . . , x m } ) = 1 m ∑ i = 1 m φ ( x i ) \sigma(\mathbf{x}\text{=}\{x_1,x_2,...,x_m\})\text{=}\displaystyle{}\frac{1}{m}\sum_{i=1}^m\varphi(x_i) σ(x={x1,x2,...,xm})=m1i=1∑mφ(xi)在 U = I m U\text{=}I^m U=Im上是 ( α , β m ) - \left(\alpha,\cfrac{\beta}{m}\right)\text{-} (α,mβ)-极大的
- 示例:满足该引理的实数域函数
φ ( x ) \boldsymbol{\varphi{(x)}} φ(x) β \boldsymbol{\beta} β α \boldsymbol{\alpha} α x x x 1 1 1 1 1 1 e x – 1 e^x–1 ex–1 1 1 1 e – 1 e–1 e–1 Sigmid ( x ) = e x 1 + e x – 1 2 \text{Sigmid}(x)\text{=}\cfrac{e^x}{1\text{+}e^x}–\cfrac{1}{2} Sigmid(x)=1+exex–21 0.23 0.23 0.23 0.25 0.25 0.25 2️⃣引理 4.1.2/4.1.3 \text{4.1.2/4.1.3} 4.1.2/4.1.3
- 输入:对查询向量集 ∀ q r ∈ Q = { q 1 , q 2 , . . . , q m q } \forall{}q_{r}\text{∈}Q\text{=}\{q_1,q_2,...,q_{m_q}\} ∀qr∈Q={q1,q2,...,qmq}和向量集 S i = { x i 1 , x i 2 , . . . , x i m i } S_i\text{=}\{x_{i1},x_{i2},...,x_{im_i}\} Si={xi1,xi2,...,ximi},考虑真实 / / /(基于碰撞的)近似相似度
- 每个 q r ∈ Q q_r\text{∈}Q qr∈Q的真实相似度集: s ( q r , S i ) = { Sim ( q r , x i 1 ) , Sim ( q r , x i 2 ) , . . . , Sim ( q r , x i m i ) } {\mathbf{s}}(q_{r},S_i)\text{=}\{{\text{Sim}}(q_{r},x_{i1}),{\text{Sim}}(q_{r},x_{i2}),...,{\text{Sim}}(q_{r},x_{im_i})\} s(qr,Si)={Sim(qr,xi1),Sim(qr,xi2),...,Sim(qr,ximi)}
- 每个 q r ∈ Q q_r\text{∈}Q qr∈Q的近似相似度集: s ^ ( q r , S i ) = { Sim ^ ( q r , x i 1 ) , Sim ^ ( q r , x i 2 ) , . . . , Sim ^ ( q r , x i m i ) } \hat{\mathbf{s}}(q_{r},S_i)\text{=}\{\hat{\text{Sim}}(q_{r},x_{i1}),\hat{\text{Sim}}(q_{r},x_{i2}),...,\hat{\text{Sim}}(q_{r},x_{im_i})\} s^(qr,Si)={Sim^(qr,xi1),Sim^(qr,xi2),...,Sim^(qr,ximi)}
- 符号:对真实相似度集 / / /近似相似度集,采取不同聚合方式
- 真实集:用最值聚合 max ( s ( q r , S i ) ) = max { Sim ( q r , x i 1 ) , . . . , Sim ( q r , x i m i ) } \max\left(\mathbf{s}(q_{r},S_i)\right)\text{=}\max\{\text{Sim}(q_{r},x_{i1}),...,\text{Sim}(q_{r},x_{im_i})\} max(s(qr,Si))=max{Sim(qr,xi1),...,Sim(qr,ximi)},记作 s max s_{\max} smax或 MaxSim ( q r , S i ) \text{MaxSim}(q_{r},S_i) MaxSim(qr,Si)
- 近似集:用 σ \sigma σ聚合 σ ( s ^ ( q r , S i ) ) = σ { Sim ^ ( q r , x i 1 ) , . . . , Sim ^ ( q r , x i m i ) } \sigma(\hat{\mathbf{s}}(q_{r},S_i))\text{=}\sigma\{\hat{\text{Sim}}(q_{r},x_{i1}),...,\hat{\text{Sim}}(q_{r},x_{im_i})\} σ(s^(qr,Si))=σ{Sim^(qr,xi1),...,Sim^(qr,ximi)}其中 σ \sigma σ是 ( α , β ) - (α,β)\text{-} (α,β)-极大,简记作 σ ( s ^ ) \sigma(\hat{\mathbf{s}}) σ(s^)
- γ \gamma γ函数:设定 γ = ( α ( 1 – s max ) α – τ ) ( s max ( α – τ ) τ ( 1 – s max ) ) τ / α \displaystyle{}\gamma=\left(\frac{\alpha\left({1–{s_{\max}}}\right)}{\alpha–\tau}\right){\left(\frac{{s_{\max}}\left({\alpha–\tau}\right)}{\tau\left({1–{s_{\max}}}\right)}\right)}^{{\tau}/{\alpha}} γ=(α–τα(1–smax))(τ(1–smax)smax(α–τ))τ/α
![]()
- 单调:处于 ( s max , 1 ) \left({{s_{\max}},1}\right) (smax,1)区间中,并且随 s max s_{\max} smax递增随 τ \tau τ递减
- 极限: γ \gamma γ存在单侧极限, τ \tau τ从高处接近 α s max \alpha{s_{\max}} αsmax时 lim τ ↘ α s max γ = 1 \mathop{\lim}\limits_{{\tau\searrow\alpha{s}_{\max}}}\gamma\text{=}1 τ↘αsmaxlimγ=1, τ \tau τ从低处接近 α \alpha α时 lim τ ↗ α γ = s max \mathop{\lim}\limits_{{\tau\nearrow\alpha}}\gamma\text{=}{s}_{\max} τ↗αlimγ=smax
- 结论:给定一个阈值 τ ∈ [ α s max , α ] \tau\text{∈}[\alpha{s_{\max}},\alpha] τ∈[αsmax,α]并记录差值为 Δ = τ – α s max \Delta{=}\tau–\alpha{}s_{\max} Δ=τ–αsmax,让当内部聚合 σ \sigma σ是 ( α , β ) - (α,β)\text{-} (α,β)-极大的,则有如下两个引理
- 引理 4.1.2 \text{4.1.2} 4.1.2(指数上界衰减引理): Pr [ σ ( s ^ ) ≥ α s max + Δ ] ≤ m γ L \Pr\left\lbrack{\sigma\left(\widehat{\mathbf{s}}\right)\text{≥}\alpha{s}_{\max}\text{+}\Delta}\right\rbrack\text{≤}m{\gamma}^{L} Pr[σ(s )≥αsmax+Δ]≤mγL,对近似相似度聚合后,大概率不超过理论上界
- 引理 4.1.3 \text{4.1.3} 4.1.3(高斯下界集中引理): Pr [ σ ( s ^ ) ≤ β s max – Δ ] ≤ 2 e – 2 L Δ 2 / β 2 \Pr\left\lbrack{\sigma\left(\widehat{\mathbf{s}}\right)\text{≤}\beta{s}_{\max}\text{–}\Delta}\right\rbrack\text{≤}2{e}^{–{2L}{\Delta}^{2}/{\beta}^{2}} Pr[σ(s )≤βsmax–Δ]≤2e–2LΔ2/β2,对近似相似度聚合后,大概率不低于理论下界
1.3.2. \textbf{1.3.2. } 1.3.2. 外部聚合及运行时间
1️⃣一些基本的设置
- 近似集的聚合:与之前一样 σ ( s ^ ( q r , S i ) ) = σ { Sim ^ ( q r , x i 1 ) , . . . , Sim ^ ( q r , x i m i ) } \sigma(\hat{\mathbf{s}}(q_{r},S_i))\text{=}\sigma\{\hat{\text{Sim}}(q_{r},x_{i1}),...,\hat{\text{Sim}}(q_{r},x_{im_i})\} σ(s^(qr,Si))=σ{Sim^(qr,xi1),...,Sim^(qr,ximi)},但为区分不同 q r q_r qr就不做简写了
- 外部聚合评分:让外部聚合 A A A为带 w r w_r wr权值的加权平均,由此 F ( Q , S i ) = 1 m q ∑ r = 1 m q w r σ ( s ^ ( q r , S i ) ) F\left({Q,S_i}\right)\text{=}\displaystyle{}\frac{1}{m_q}\sum_{r=1}^{m_q}w_r\sigma\left({\widehat{\mathbf{s}}\left({{q}_{r},S_i}\right)}\right) F(Q,Si)=mq1r=1∑mqwrσ(s (qr,Si))
- 最邻近向量集:给定 Q = { q 1 , q 2 , . . . , q m q } Q\text{=}\{q_1,q_2,...,q_{m_q}\} Q={q1,q2,...,qmq}和 D = { S 1 , S 2 , . . . , S N } D\text{=}\{S_1,S_2,...,S_N\} D={S1,S2,...,SN},设定 S ∗ ∈ D S^*\text{∈}D S∗∈D是使得 F ( Q , S i ) F\left({Q,S_i}\right) F(Q,Si)最大的向量集
- 分析时的假设:假定所有向量集的向量数都相同,即统一将 m i m_i mi认定为一个常数 m m m,当然也可用 ( m i ) max (m_i)_{\max} (mi)max替代所有 m i m_i mi
2️⃣定理 4.2 \text{4.2} 4.2:概率对数近邻保证定理
- 设定参数:对于 0 < β ≤ 1 ≤ α 0\text{<}β\text{≤}1\text{≤}α 0<β≤1≤α
- 令 B ∗ = β m q ∑ r = 1 m q w r max ( s ( q r , S ∗ ) ) = β m q ∑ r = 1 m q w r MaxSim ( q r , S ∗ ) B^*\text{=}\displaystyle{}\frac{\beta}{m_q}\sum_{r=1}^{m_q}w_r\max{(\mathbf{s}(q_{r},S^*))}\text{=}\frac{\beta}{m_q}\sum_{r=1}^{m_q}w_r\text{MaxSim}(q_r,S^*) B∗=mqβr=1∑mqwrmax(s(qr,S∗))=mqβr=1∑mqwrMaxSim(qr,S∗), B ∗ B^* B∗其实是 F ( Q , S ∗ ) F(Q,S^*) F(Q,S∗)的一个下界
- 令 B i = α m q ∑ r = 1 m q w r max ( s ( q r , S i ) ) = α m q ∑ r = 1 m q w r MaxSim ( q r , S i ) B_i\text{=}\displaystyle{}\frac{\alpha}{m_q}\sum_{r=1}^{m_q}w_r\max{(\mathbf{s}(q_{r},S_i))}\text{=}\frac{\alpha}{m_q}\sum_{r=1}^{m_q}w_r\text{MaxSim}(q_r,S_i) Bi=mqαr=1∑mqwrmax(s(qr,Si))=mqαr=1∑mqwrMaxSim(qr,Si), B i B_i Bi其实是 F ( Q , S i ) F(Q,S_i) F(Q,Si)的一个上界
- 令 B ′ B^\prime B′为在 S i ≠ S ∗ S_i{≠}S^* Si=S∗条件下, B i B_i Bi能取得的最大值
- 结论:只要我们选择足够大的哈希表数量,算法就能以高概率返回正确最邻近向量集
- 条件:当 Δ = B ∗ – B ′ 3 > 0 \Delta{\text{=}}\cfrac{B^*–B^\prime}{3}\text{>}0 Δ=3B∗–B′>0时,,设定 L = O ( log ( N m q m δ ) ) L\text{=}\displaystyle{}O\left({\log\left(\frac{N{m}_{q}m}{\delta}\right)}\right) L=O(log(δNmqm))
- 结论: DESSERT \text{DESSERT} DESSERT算法结构能以 1 – δ 1–\delta 1–δ的概率,返回与 Q Q Q相似度最高的 S i S_i Si,即 S ∗ = argmax i ∈ { 1 , … N } F ( Q , S i ) S^*\text{=}\mathop{\operatorname{argmax}}\limits_{{i \in \{ 1,\ldots N\} }}F\left( {Q,{S}_{i}}\right) S∗=i∈{1,…N}argmaxF(Q,Si)
3️⃣运行时间的分析
- 一些前提:假设每个哈希函数运行的时间为 O ( d ) O(d) O(d),集合 D [ i ] t , h \mathcal{D}{\left\lbrack{}i\right\rbrack}_{t,h} D[i]t,h的元素数存在常数阈值 ∣ D [ i ] t , h ∣ ≤ T |\mathcal{D}{\left\lbrack{}i\right\rbrack}_{t,h}|\text{≤}T ∣D[i]t,h∣≤T
- 运行时间:复杂度为 O ( ( d + N ) m q log ( N m q m δ ) ) O\left((d\text{+}N)m_q\log\left(\cfrac{Nm_qm}{\delta}\right)\right) O((d+N)mqlog(δNmqm)),相比之下暴力搜索的复杂度是 O ( m q m N d ) O\left({{m}_{q}{mNd}}\right) O(mqmNd)