文献分享: DiskANN查询算法的复杂度下界


原文章

0. 写在前面

0.1. 预备知识

1️⃣最邻近搜索:给定数据库 U U U中的 n n n个对象(子集),以及输入的查询点 q q q

image-20240809200459993
  1. 精确定义( NN \text{NN} NN):返回 e ∗ ∈ S e^*\in{S} eS满足 dist ( q , e ∗ ) = min ⁡ e ∈ S dist ( q , e ) \text{dist}(q, e^*) = \min\limits_{e \in S} \text{dist}(q, e) dist(q,e)=eSmindist(q,e)
  2. 近似定义( c-ANN \text{c-ANN} c-ANN):返回 e ∈ S e\in{S} eS满足 dist ( q , e ) ≤ c ∗ dist ( q , e ∗ ) \text{dist}(q, e)\leq{}c*\text{dist}(q, e^*) dist(q,e)cdist(q,e)

2️⃣倍增维度

  1. 直径:点集中距离最远的两点的距离,即 diam ( X ) = sup ⁡ e 1 , e 2 ∈ X dist ( e 1 , e 2 ) \text{diam}(X)=\displaystyle\sup_{e_1, e_2 \in X} \text{dist}\left(e_1, e_2\right) diam(X)=e1,e2Xsupdist(e1,e2)
  2. 2 λ - 2^{\lambda}\text{-} 2λ-分割: X X X可被分为 m m m个子集 X 1 X 2 . . . X m X_1X_2...X_m X1X2...Xm,且满足 { m ≤ 2 λ diam ( X i ) ≤ 1 2 diam ( X ) \begin{cases}m\leq{}2^{\lambda}\\\\\text{diam}(X_i)\leq{}\cfrac{1}{2}\text{diam}(X)\end{cases} m2λdiam(Xi)21diam(X)
  3. 倍增维度:就是 λ m i n \lambda_{min} λmin,即用最少 2 λ m i n 2^{\lambda_{min}} 2λmin个半径不超过 1 2 r X \cfrac{1}{2}r_{_X} 21rX的球体填满 X X X

3️⃣球体的一个性质:任何球体 B ( e , r ) B(e, r) B(e,r) 都可被至多 O ( k d ) O\left(k^d\right) O(kd) 个半径为 r c \cfrac{r}{c} cr 的球体覆盖

0.2. 一些记号

符号含义
( X , D ) (X, D) (X,D)基础度量空间, X X X为点集 D D D为距离类型
D ( u , v ) D(u, v) D(u,v) P = { x 1 , … , x n } P = \{x_1, \ldots, x_n\} P={x1,,xn}中的俩点 x u x_u xu x v x_v xv的距离
B ( p , r ) B(p, r) B(p,r) p ∈ X p \in X pX为球心 r r r为半径的球
Δ \Delta Δ点集中最远俩点 / 最近俩点的比值
d d d倍增维度

0.3. 本文的研究概述

1️⃣背景:很多 c-ANN \text{c-ANN} c-ANN算法比如 HNSW/NSG/DiskANN \text{HNSW/NSG/DiskANN} HNSW/NSG/DiskANN在基准数据集上性能不错,但其下界不可知

2️⃣研究成果

  1. 最坏情况上界:对于 DiskANN \text{DiskANN} DiskANN慢处理版,可在 O ( log ⁡ α Δ ( α − 1 ) ϵ ) O\left(\log _\alpha \cfrac{\Delta}{(\alpha-1) \epsilon}\right) O(logα(α1)ϵΔ)步返回 ( α + 1 α − 1 + ϵ ) -ANN \left(\cfrac{\alpha+1}{\alpha-1}+\epsilon\right)\text{-ANN} (α1α+1+ϵ)-ANN
    • 但值得注意, DiskANN \text{DiskANN} DiskANN慢处理的图构建复杂度高达 O ( n 3 ) O(n^3) O(n3)
  2. 最坏情况下界:对于 DiskANN \text{DiskANN} DiskANN块预处理版/ HNSW \text{HNSW} HNSW/ NSG \text{NSG} NSG,算法找到 5 5 5个最邻近前至少要走 0.1 n 0.1n 0.1n

3️⃣未来的研究方向:有没有一种算法,预处理和查询都低于线性复杂度 ? ? ?

1. DiskANN \text{DiskANN} DiskANN回顾

1.0. Intro

🤔是个啥:基于邻近图的贪婪搜索的,一种解决 c-ANN \text{c-ANN} c-ANN的算法

🙉基本思路

  1. 在数据库中的点集 P P P上创建有向图 G = ( V , E ) G=(V, E) G=(V,E),其中 V V V P P P关联
  2. 给定带查询点 q q q,从起始点 s ∈ V s\in{}V sV开始对图 G G G执行搜索
  3. 预期搜索返回 q q q的最邻近点

1.1. DiskANN \text{DiskANN} DiskANN的基本操作

1️⃣连接操作 RobustPruning ( v , U , α , R ) \text{RobustPruning}(v, U, \alpha, R) RobustPruning(v,U,α,R),用于图的构建过程

  1. 参数含义
    符号含义
    v v v当前处理的图中的顶点
    U U U v v v的备选邻居(预计最终与 v v v连接的点)
    α \alpha α修剪参数,一定大于 1 1 1
    R R R结点出度的限制,即 v v v至多有几个邻居
  2. 连接过程
    • 排序:将 U U U所有元素按离 v v v的距离从近到远排序
    • 遍历:开始遍历并处理每个 u ∈ U u\in{}U uU
      • 修剪:对 u ∈ U u\in{}U uU,删除满足 D ( u , u ′ ) ⋅ α < D ( v , u ′ ) D(u, u^{\prime}) \cdot \alpha < D(v, u^{\prime}) D(u,u)α<D(v,u)的点 u ′ u^{\prime} u,余下的点总体离 v v v更近
    • 连接:让 v v v与所有 U U U中所有剩下点连接

2️⃣搜索操作 GreedySearch ( s , q , L ) \text{GreedySearch}(s, q, L) GreedySearch(s,q,L)

  1. 参数含义
    符号含义
    s s s G G G中,搜索的起始点
    q q q给定带查询点 q q q
    L L L维护队列的最大长度,这也是搜索算法扫描结点数量的下界
  2. 辅助数据结构:当前队列 A A A,已访问点集 U U U
  3. 搜索过程
    • 初始化: A = { s } A=\{s\} A={s} U = ∅ U=\varnothing U=
    • 扫描与剪裁:循环执行访问 + + +剪裁,直到 A A A中所有点都被访问
      • 访问:选取 A A A中距离 q q q最近的未访问点 v → { A = A ∪ N o u t ( v )   , 将邻居全部加入 A U = U ∪ v   , 表示 v 已经被访问 v\to\begin{cases}A=A\cup{}N_{out}(v)\,,将邻居全部加入A\\\\U=U\cup{}v\,,表示v已经被访问\end{cases} v A=ANout(v),将邻居全部加入AU=Uv,表示v已经被访问
      • 裁剪:当 A A A队列长度超出 L L L后,保留其中 L L L个与 q q q最近的点
    • 排序输出:输出 A A A排序后的前 k k k个点

1.2. DiskANN \text{DiskANN} DiskANN的构建操作

1️⃣慢预处理:对所有 v ∈ V v\in{}V vV执行 RobustPruning ( v , V , α , ∣ V ∣ ) \text{RobustPruning}(v, V, \alpha, |V|) RobustPruning(v,V,α,V)

2️⃣快预处理操作

  1. 初始化:对所有结点 V V V执行 R R R重构建,即每个点随意连接 R R R个顶点
  2. 第一遍遍历
    • 起始:任选一 s s s开始,随机访问其后继 v v v
    • 搜索:对 v v v执行 U = GreedySearch ( s , v , L ) U=\text{GreedySearch}(s, v, L) U=GreedySearch(s,v,L)得到 U U U(可能与 v v v最邻近的点集)
    • 修剪:对得到的 U U U执行 RobustPruning ( v , U , α , n ) \text{RobustPruning}(v, U, \alpha, n) RobustPruning(v,U,α,n)修剪其中离 v v v较远的点
    • 连接:将 v v v与修剪后 U U U的所有结点相连
      • 再修剪:如果 u ∈ U u\in{}U uU度数超过 R R R,则执行 RobustPruning ( u , N out ( u ) , α , R ) \text{RobustPruning}(u, N_{\text{out}}(u), \alpha, R) RobustPruning(u,Nout(u),α,R)修剪 u u u邻居
  3. 第二遍遍历:对第一次遍历所得结果,同样的操作在遍历一次

2. 对于慢处理 DiskANN \text{DiskANN} DiskANN的理论分析

2.1. 预处理分析

1️⃣ α - \alpha\text{-} α-捷径可达性

  1. 顶点 α - \alpha\text{-} α-捷径可达 ⇔ \xLeftrightarrow{} 满足二者之一 ∀ q ∈ V → { 直连:  ( p , q ) ∈ E 捷径连接:  ∃ p ′ 满足 { ( p , p ′ ) ∈ E D ( p ′ , q ) ≤ D ( p , q ) α \forall{}q\in{}V\to{}\begin{cases}直连\text{: }(p, q) \in E\\\\捷径连接\text{: }\exist{}p^{\prime}满足\begin{cases}(p, p') \in E\\\\D(p', q) \leq \cfrac{D(p, q)}{\alpha}\end{cases}\end{cases} qV 直连(p,q)E捷径连接p满足 (p,p)ED(p,q)αD(p,q)
  2. ∀ p ∈ G \forall{}p\in{}G pG都具有 α - \alpha\text{-} α-捷径可达性,则称 G G G具有 α - \alpha\text{-} α-捷径可达性

2️⃣预处理分析

  1. 时间复杂度: O ( n 3 ) O\left(n^3\right) O(n3)
  2. 捷径可达性:慢处理构建的图具有捷径可达性
  3. 稀疏性:
    • p p p执行 RobustPruning ( p , V , α , n ) \text{RobustPruning}(p, V, \alpha, n) RobustPruning(p,V,α,n) p p p所连接点数量为 ∣ U ( p ) ∣ |U(p)| U(p) ∣ U ( p ) ∣ ⩽ O ( ( 4 α ) d log ⁡ Δ ) |U(p)|\leqslant O\left((4 \alpha)^d \log \Delta\right) U(p)O((4α)dlogΔ)
      • 证明思路大致为:引入环形区域 → \to 覆盖 → \to 剩余点范围受限于倍增维度
    • 在后续实验中,可以看出慢预处理的 DiskANN \text{DiskANN} DiskANN相当稀疏
      image-20240811112053924

2.2. 查询分析

1️⃣结论:从 G G G中任一点 s s s开始执行 GreedySearch ( s , q , 1 ) \text{GreedySearch}(s, q, 1) GreedySearch(s,q,1)

  1. 能在 O ( log ⁡ α Δ ( α − 1 ) ϵ ) O\left(\log _\alpha \cfrac{\Delta}{(\alpha-1) \epsilon}\right) O(logα(α1)ϵΔ)步内返回 ( α + 1 α − 1 + ϵ ) - \left(\cfrac{\alpha+1}{\alpha-1}+\epsilon\right)\text{-} (α1α+1+ϵ)-近似邻居
  2. P.s.  \text{P.s. } P.s. 每步最多检查 ∣ U ∣ ⩽ O ( ( 4 α ) d log ⁡ Δ ) |U|\leqslant O\left((4 \alpha)^d \log \Delta\right) UO((4α)dlogΔ) 个邻居,即每步最多 O ( ( 4 α ) d log ⁡ Δ ) O\left((4 \alpha)^d \log \Delta\right) O((4α)dlogΔ)时间

2️⃣证明思路大致为

  1. 通过三角不等式和 α - \alpha\text{-} α-捷径可达性,得出每一步的距离 d i d_i di 的上界
  2. 分析三种情况的查询步数
    D ( s , q ) D(s, q) D(s,q) D ( a , q ) D(a, q) D(a,q)分析思路
    + + +通过初步不等式得出 d i d_i di D ( a , q ) D(a, q) D(a,q) 关系 → \to 算法在 log ⁡ α 2 ϵ \log _\alpha \cfrac{2}{\epsilon} logαϵ2步内结束
    通过上下界 → \to{} 算法在 O ( log ⁡ α Δ ( α − 1 ) ϵ ) O\left(\log _\alpha \frac{\Delta}{(\alpha-1) \epsilon}\right) O(logα(α1)ϵΔ)步内结束
    通过不等式结合 D min ⁡ D_{\min} Dmin D max ⁡ D_{\max} Dmax → \to{} 算法在 O ( log ⁡ α Δ ) O\left(\log _\alpha \Delta\right) O(logαΔ)步内结束
    • 注意 D ( a , q ) D(a, q) D(a,q) a a a表示 q q q的最邻近点

3️⃣后续实验中,慢处理的 DiskANN \text{DiskANN} DiskANN在难例上,甚至只需要两步就找到最邻近

2.3. 对复杂度的紧致性分析

1️⃣收敛率的严格下界:在 O ( log ⁡ α Δ ( α − 1 ) ϵ ) O\left(\log _\alpha \cfrac{\Delta}{(\alpha-1) \epsilon}\right) O(logα(α1)ϵΔ)步中不可将 log ⁡ Δ \log \Delta logΔ换为 log ⁡ n \log n logn,证明思路如下

  1. 构造一个一维度量空间满足 ∣ P ∣ = n = 2 k − 1 |P|=n=2k-1 P=n=2k1 Δ = O ( α n ) \Delta=O(\alpha^n) Δ=O(αn)
  2. 证明:给定查询点 q q q并执行 GreedySearch \text{GreedySearch} GreedySearch,找到 q q q O ( 1 ) -ANN O(1)\text{-ANN} O(1)-ANN至少要扫描 Ω ( log ⁡ Δ ) \Omega(\log \Delta) Ω(logΔ) O ( n ) O(n) O(n)个点

2️⃣紧密的近似下限: α + 1 α − 1 -ANN \cfrac{\alpha+1}{\alpha-1}\text{-ANN} α1α+1-ANN的比例具有紧,证明思路如下

  1. 构建一个简单实例
    image-20240811004613238
  2. 证明在上述实例中,执行 DiskANN \text{DiskANN} DiskANN慢预处理版至少要扫描 n n n个点,才能找到一个 α + 1 α − 1 -ANN \cfrac{\alpha+1}{\alpha-1}\text{-ANN} α1α+1-ANN
    • 思路:从 s ∈ P s\in{}P sP开始扫描 → n \to{}n n步贪婪搜索后出不了 P P P → \to 无法接近最邻近 a → a\to a至少扫描 n n n

3. 对于快处理 DiskANN \text{DiskANN} DiskANN(及其他算法)的实验

3.1. 快处理 DiskANN \text{DiskANN} DiskANN的实验

1️⃣构建的难实例

image-20240811095551367

2️⃣实验结果:执行查询试图输出 5 5 5个最邻近

image-20240811110820889
  1. 召回率(结果中实际最邻近点的比率)在 L ≈ 10 % L \approx 10 \% L10%处发生剧变
  2. 至少需要扫描 10 % 10\% 10%的点才能使召回率非 0 0 0,即查询的时间复杂度为 O ( 0.1 n ) O(0.1n) O(0.1n)

3.2. NSG/HNSW \text{NSG/HNSW} NSG/HNSW算法的实验

1️⃣构建的难例:

image-20240811134727506

2️⃣同样也是,至少要扫描 10 % 10\% 10%的点才能使召回率达标

image-20240811141718920

3.3. 交叉对比

1️⃣为三个算法构建同样的难例

2️⃣结果:依然是需要扫描至少 0.1 n 0.1n 0.1n个点

image-20240811142950183

3.4. 其它算法上的实验

1️⃣构建难例,给定 L = 0.1 n L=0.1n L=0.1n,运行结果(召回率)如下表(截取)

DiskANNNSGHNSWNGTSSGKGraph
0.0 0.0 0.0 0.27 0.27 0.27 0.1 0.1 0.1 0.05 0.05 0.05 0.16 0.16 0.16 0.42 0.42 0.42

2️⃣分析:说明 0.1 n 0.1n 0.1n很可能就是这些算法的下界

X. 关于定理 3.4 \textbf{3.4} 3.4的一些思考

X.1. 预备知识回顾

1️⃣ α - \alpha{\text{-}} α-可捷达性

  1. p q pq pq α - \alpha{\text{-}} α-可捷达性: p q pq pq要么直连,要么 p p ′ pp^{\prime} pp直连但 D ( p ′ , q ) ≤ 1 α ∗ D ( p , q ) D(p', q) \leq \cfrac{1}{\alpha}*D(p, q) D(p,q)α1D(p,q)

    image-20240810214535083
  2. 图的 α - \alpha{\text{-}} α-可捷达性:要求图中任意两点都是 α - \alpha{\text{-}} α-可捷达的

2️⃣ DiskANN \text{DiskANN} DiskANN GreedySearch ( s , q , L ) \text{GreedySearch}(s, q, L) GreedySearch(s,q,L)

  1. 参数含义

    • 符号: s s s(搜索起点), q q q(待查询点), L L L(队列 A A A最大长度)

      Ps.  \text{Ps. } Ps.  L = 1 L=1 L=1时意味着贪心搜索不会回溯,即每走到下一个结点后,离最邻近必定更近

    • 辅助数据结构: A A A(当前队列), U U U(已访问点的集合)

  2. 算法过程

3️⃣定理内容

  1. 前提
    • 图: G = ( V , E ) G=(V, E) G=(V,E)时经过慢预处理构建的 α - \alpha\text{-} α-捷径可达图
    • 搜索:令 L = 1 L=1 L=1,从任意 s ∈ V s \in V sV开始执行 GreedySearch ( s , q , L ) \text{GreedySearch}(s, q, L) GreedySearch(s,q,L)
  2. 结论:算法在 O ( log ⁡ α Δ ( α − 1 ) ϵ ) O\left(\log _\alpha \cfrac{\Delta}{(\alpha-1) \epsilon}\right) O(logα(α1)ϵΔ)步内找到 ( α + 1 α − 1 + ϵ ) \left(\cfrac{\alpha+1}{\alpha-1}+\epsilon\right) (α1α+1+ϵ)的近似最近邻

X.2. 证明 Pipeline \textbf{Pipeline} Pipeline

1️⃣有关符号

  1. 结点

    符号含义
    q q q给定的待查询点
    a a a q q q的最邻近
    v i v_i vi G = ( V , E ) G=(V,E) G=(V,E)中第 i i i个被扫描到的点, i i i就是算法的步数
  2. 距离: d i = D ( v i , q ) d_i=D(v_i,q) di=D(vi,q)

  3. 近似比: c i = d i D ( a , q ) c_i=\cfrac{d_i}{D(a, q)} ci=D(a,q)di

  4. 纵横比: Δ = D max ⁡ D min ⁡ \Delta=\cfrac{D_{\max }}{D_{\min }} Δ=DminDmax D max D_{\text{max}} Dmax为点集 V V V中相聚最远两点的距离

2️⃣初步分析:关于 d i d_i di的递归式

image-20240817144002003
  1. 递归式通项的推导

    image-20240818015040189
    • D ( a , v ′ ) ≤ d i + D ( a , q ) α ⇐ { D ( a , v i ) ≤ d i + D ( a , q ) ( 三角定理 ) D ( a , v ′ ) ≤ 1 α ∗ D ( a , v i ) ( α -可捷达性 ) \textcolor{green}{D(a,v^{\prime})\leq{}\cfrac{d_i+D(a, q)}{\alpha}}\Leftarrow{} \begin{cases} D(a,v_i)\leq{}d_i+D(a,q)(三角定理)\\\\ D(a,v^{\prime})\leq{}\cfrac{1}{\alpha}*D(a, v_i)(\alpha{}\text{-}可捷达性) \end{cases} D(a,v)αdi+D(a,q) D(a,vi)di+D(a,q)(三角定理)D(a,v)α1D(a,vi)(α-可捷达性)
    • D ( q , v ′ ) ≤ d i + D ( a , q ) α + D ( a , q ) ⇐ { D ( a , v ′ ) ≤ d i + D ( a , q ) α D ( q , v ′ ) ≤ D ( a , v ′ ) + D ( a , q ) ( 三角定理 ) \textcolor{orange}{D(q,v^{\prime})\leq{}\cfrac{d_i+D(a, q)}{\alpha}+D(a,q)}\Leftarrow{} \begin{cases} \textcolor{green}{D(a,v^{\prime})\leq{}\cfrac{d_i+D(a, q)}{\alpha}}\\\\ D(q,v^{\prime})\leq{}D(a,v^{\prime})+D(a,q)(三角定理) \end{cases} D(q,v)αdi+D(a,q)+D(a,q) D(a,v)αdi+D(a,q)D(q,v)D(a,v)+D(a,q)(三角定理)
    • d i + 1 ≤ d i + D ( a , q ) α + D ( a , q ) ⇐ { D ( q , v ′ ) ≤ d i + D ( a , q ) α + D ( a , q ) d i + 1 ≤ D ( q , v ′ ) ( 必定从 v i 邻居 ( 含 v ′ ) 选一离 q 更近的 v i + 1 ) \textcolor{red}{d_{i+1}\leq{}\cfrac{d_i+D(a, q)}{\alpha}+D(a,q) }\Leftarrow{} \begin{cases} \textcolor{orange}{D(q,v^{\prime})\leq{}\cfrac{d_i+D(a, q)}{\alpha}+D(a,q)}\\\\ d_{i+1}\leq{}D(q,v^{\prime})(必定从v_i邻居(含v^{\prime})选一离q更近的v_{i+1}) \end{cases} di+1αdi+D(a,q)+D(a,q) D(q,v)αdi+D(a,q)+D(a,q)di+1D(q,v)(必定从vi邻居(v)选一离q更近的vi+1)
  2. 归纳法解递归

    • 初始条件: d 0 = D ( s , q ) d_0 = D(s, q) d0=D(s,q)
    • 归纳假设: d i ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) d_i \leq \cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1} {\alpha-1} D(a, q) diαiD(s,q)+α1α+1D(a,q)
    • 归纳推到: d i + 1 ≤ D ( s , q ) α i + 1 + α + 1 α − 1 D ( a , q ) ⇐ { 存在 d i + 1 ≤ d i + D ( a , q ) α + D ( a , q ) 带入 d i ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) d_{i+1} \leq \cfrac{D(s, q)}{\alpha^{i+1}} + \cfrac{\alpha+1}{\alpha-1} D(a, q)\Leftarrow{}\begin{cases}存在d_{i+1} \leq \cfrac{d_i + D(a, q)}{\alpha} + D(a, q)\\\\带入d_i \leq \cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1} {\alpha-1} D(a, q)\end{cases} di+1αi+1D(s,q)+α1α+1D(a,q) 存在di+1αdi+D(a,q)+D(a,q)带入diαiD(s,q)+α1α+1D(a,q)
  3. 递归解: d i ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) d_i \leq \cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1}{\alpha-1} D(a, q) diαiD(s,q)+α1α+1D(a,q)

3️⃣三种情况

image-20240817145143282
情况 D ( s , q ) D(s, q) D(s,q) D ( a , q ) D(a,q) D(a,q)
情况一 ( 2 D max ⁡ , ∞ ) (2 D_{\max },\infin{}) (2Dmax,) [ − ∞ , + ∞ ] [-\infin{},+\infin{}] [,+]
情况二 ( 0 , 2 D max ⁡ ] (0,2 D_{\max }] (0,2Dmax] [ α − 1 4 ( α + 1 ) D min ⁡ , + ∞ ) \left[\cfrac{\alpha-1}{4(\alpha+1)} D_{\min },+\infin{}\right) [4(α+1)α1Dmin,+)
情况三 ( 0 , 2 D max ⁡ ] (0,2 D_{\max }] (0,2Dmax] ( 0 , α − 1 4 ( α + 1 ) D min ⁡ ) \left(0,\cfrac{\alpha-1}{4(\alpha+1)} D_{\min }\right) (0,4(α+1)α1Dmin)
  1. 情况一:当起始点离最邻近很远时,同时推导出邻近度 + + +步数

    image-20240818015323626
    • D ( a , q ) > D ( s , q ) − D max ⇐ { D ( a , q ) > D ( s , q ) − D ( a , s ) ( 三角定理 ) D ( a , s ) < D max ( D max 的定义 ) \textcolor{green}{D(a,q)>D(s,q)-D_{\text{max}}} \Leftarrow{} \begin{cases} D(a,q)>D(s,q)-D(a,s)(三角定理)\\\\ D(a,s)<D_{\text{max}}(D_{\text{max}}的定义) \end{cases} D(a,q)>D(s,q)Dmax D(a,q)>D(s,q)D(a,s)(三角定理)D(a,s)<Dmax(Dmax的定义)

    • c i ⩽ D ( s , q ) α i D ( a , q ) + α + 1 α − 1 ⇐ { d i ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) ( 递归解 ) c i = d i D ( a , q ) ( 近似比定义 ) \textcolor{purple}{c_i\leqslant \cfrac{D(s, q)}{\alpha^i D(a, q)}+\cfrac{\alpha+1}{\alpha-1} }\Leftarrow{} \begin{cases} d_i \leq \cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1}{\alpha-1} D(a, q)(递归解)\\\\ c_i=\cfrac{d_i}{D(a, q)}(近似比定义) \end{cases} ciαiD(a,q)D(s,q)+α1α+1 diαiD(s,q)+α1α+1D(a,q)(递归解)ci=D(a,q)di(近似比定义)

    • D ( a , q ) > D ( s , q ) 2 ⇐ D ( a , q ) > D ( s , q ) − D ( s , q ) 2 ⇐ { D ( a , q ) > D ( s , q ) − D max D ( s , q ) > 2 D max ( 前提 ) \textcolor{orange}{D(a,q)>\cfrac{D(s,q)}{2}} \Leftarrow{} {D(a,q)>D(s,q)-\cfrac{D(s,q)}{2}} \Leftarrow{} \begin{cases} \textcolor{green}{D(a,q)>D(s,q)-D_{\text{max}}}\\\\ D(s,q)>2D_{\text{max}}(前提) \end{cases} D(a,q)>2D(s,q)D(a,q)>D(s,q)2D(s,q) D(a,q)>D(s,q)DmaxD(s,q)>2Dmax(前提)

    • { c i ⩽ α + 1 α − 1 + ϵ i ≥ log ⁡ α ( 2 ϵ ) ⇐ 2 α i ≤ ϵ c i ⩽ 2 α i + α + 1 α − 1 ⇐ { c i ⩽ D ( s , q ) α i D ( a , q ) + α + 1 α − 1 D ( s , q ) < 2 ∗ D ( a , q ) \textcolor{red}{\begin{cases} c_i \leqslant \cfrac{\alpha+1}{\alpha-1}+\epsilon\\\\ i\geq{}\log_{\alpha}\left(\cfrac{2}{\epsilon}\right) \end{cases}} \xLeftarrow[]{\large\frac{2}{\alpha{}^{i}}\leq{}\epsilon\\} {c_i\leqslant \cfrac{2}{\alpha^i }+\cfrac{\alpha+1}{\alpha-1}} \Leftarrow{} \begin{cases} \textcolor{purple}{c_i\leqslant \cfrac{D(s, q)}{\alpha^i D(a, q)}+\cfrac{\alpha+1}{\alpha-1} }\\\\ \textcolor{orange}{{D(s,q)}<{2}*D(a,q)} \end{cases} ciα1α+1+ϵilogα(ϵ2)αi2ϵ ciαi2+α1α+1 ciαiD(a,q)D(s,q)+α1α+1D(s,q)<2D(a,q)

  2. 情况二:起始点离最邻近适中,但最邻近离查询点又很远,假设邻近度→推导出步数

    image-20240818015622559
    • 假设算法达到了 c i ≤ α + 1 α − 1 + ϵ \textcolor{green}{c_i \leq \cfrac{\alpha+1}{\alpha-1} + \epsilon} ciα1α+1+ϵ 邻近度
    • D ( s , q ) α i < ϵ D ( a , q ) ⇐ { c i ⩽ D ( s , q ) α i D ( a , q ) + α + 1 α − 1 ( 情况 1 中已证明 ) c i ≤ α + 1 α − 1 + ϵ \textcolor{purple}{\cfrac{D(s, q)}{\alpha^i}<\epsilon D(a, q)} \Leftarrow{} \begin{cases} c_i\leqslant \cfrac{D(s, q)}{\alpha^i D(a, q)}+\cfrac{\alpha+1}{\alpha-1}(情况1中已证明)\\\\ \textcolor{green}{c_i \leq \cfrac{\alpha+1}{\alpha-1} + \epsilon } \end{cases} αiD(s,q)<ϵD(a,q) ciαiD(a,q)D(s,q)+α1α+1(情况1中已证明)ciα1α+1+ϵ
    • 2 D max ⁡ α i ≤ ϵ × α − 1 4 ( α + 1 ) D min ⁡ ⇐ 用 D ( a , q ) 下界将其替代 用 D ( s , q ) 上限将其替代 { D ( s , q ) ≤ 2 D max ⁡ D ( a , q ) ≥ α − 1 4 ( α + 1 ) D min ⁡ D ( s , q ) α i < ϵ D ( a , q ) \textcolor{orange}{\cfrac{2 D_{\max}}{\alpha^i} \leq \epsilon \times \cfrac{\alpha-1}{4(\alpha+1)} D_{\min}} \xLeftarrow[用D(a,q)下界将其替代]{用D(s,q)上限将其替代} \begin{cases} D(s, q) \leq 2 D_{\max}\\\\ D(a, q) \geq \cfrac{\alpha-1}{4(\alpha+1)} D_{\min}\\\\ \textcolor{purple}{\cfrac{D(s, q)}{\alpha^i}<\epsilon D(a, q)} \end{cases} αi2Dmaxϵ×4(α+1)α1DminD(s,q)上限将其替代 D(a,q)下界将其替代 D(s,q)2DmaxD(a,q)4(α+1)α1DminαiD(s,q)<ϵD(a,q)
    • O ( log ⁡ α Δ ( α − 1 ) ϵ ) ⇐ 渐进上界 i ≥ log ⁡ α 8 ( α + 1 ) Δ ( α − 1 ) ϵ ⇐ { 2 D max ⁡ α i ≤ ϵ × α − 1 4 ( α + 1 ) D min ⁡ Δ = D max ⁡ D min ⁡ ( 定义 ) O\left(\log_\alpha \cfrac{\Delta}{(\alpha-1) \epsilon}\right)\xLeftarrow{渐进上界} \textcolor{red}{i \geq \log_\alpha \cfrac{8(\alpha+1) \Delta}{(\alpha-1) \epsilon}} \xLeftarrow{} \begin{cases} \textcolor{orange}{\cfrac{2 D_{\max}}{\alpha^i} \leq \epsilon \times \cfrac{\alpha-1}{4(\alpha+1)} D_{\min}}\\\\ \Delta=\cfrac{D_{\max }}{D_{\min }} (定义) \end{cases} O(logα(α1)ϵΔ)渐进上界 ilogα(α1)ϵ8(α+1)Δ αi2Dmaxϵ×4(α+1)α1DminΔ=DminDmax(定义)
  3. 情况三:起始点离最邻近适中,最邻近离查询点很近,**推导出找到确切最邻近的步数上界 **

    image-20240818015622559
    • 证明: d i ≥ 1 2 D min d_i\geq{}\cfrac{1}{2}{D_{\text{min}}} di21Dmin

      • D ( a , q ) ≤ 1 2 D ( v i , a ) ⇐ { D ( a , q ) < 1 4 D min ⇐ α − 1 4 ( α + 1 ) < 0.25 D ( a , q ) < ( α − 1 ) D min ⁡ 4 ( α + 1 ) ( 条件 ) D min < D ( v i , a ) ( D min 的定义 ) \textcolor{green}{D(a,q)\leq{}\cfrac{1}{2}D(v_i,a)} \Leftarrow{} \begin{cases}{D(a,q)<\cfrac{1}{4}D_{\text{min}}}\xLeftarrow{\frac{\alpha{}-1}{4(\alpha{}+1)}{<0.25}} D(a,q)<{}\cfrac{(\alpha-1)D_{\min }}{4(\alpha+1)} (条件)\\\\ D_{\text{min}}<D(v_i,a)(D_{\text{min}}的定义) \end{cases} D(a,q)21D(vi,a) D(a,q)<41Dmin4(α+1)α1<0.25 D(a,q)<4(α+1)(α1)Dmin(条件)Dmin<D(vi,a)(Dmin的定义)
      • d i ≥ 1 2 D ( v i , a ) ⇐ { 1 2 D ( v i , a ) ≥ D ( a , q ) d i ≥ D ( v i , a ) − D ( a , q ) ( 三角定理 ) \textcolor{orange}{d_i\geq{}\cfrac{1}{2}D(v_i,a)} \Leftarrow{} \begin{cases} \textcolor{green}{\cfrac{1}{2}D(v_i,a)\geq{}D(a,q)}\\\\ d_i\geq{}D(v_i,a)-D(a,q) (三角定理) \end{cases} di21D(vi,a) 21D(vi,a)D(a,q)diD(vi,a)D(a,q)(三角定理)
      • d i ≥ 1 2 D min ⇐ { d i ≥ 1 2 D ( v i , a ) D ( v i , a ) > D min ( D min 的定义 ) \textcolor{red}{d_i\geq{}\cfrac{1}{2}{D_{\text{min}}}} \Leftarrow{} \begin{cases} \textcolor{orange}{d_i\geq{}\cfrac{1}{2}D(v_i,a)}\\\\ D(v_i,a)>D_{\text{min}}(D_{\text{min}}的定义) \end{cases} di21Dmin di21D(vi,a)D(vi,a)>Dmin(Dmin的定义)
    • 证明: i ≤ log ⁡ α 8 Δ i\leq\log_{\alpha}8\Delta ilogα

      • 1 2 D min ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) ⇐ { d i ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) ( 递归解 ) d i ≥ 1 2 D min ( 上述已证明 ) \textcolor{green}{\cfrac{1}{2}{D_{\text{min}}}\leq{}\cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1}{\alpha-1} D(a, q)} \Leftarrow{} \begin{cases} d_i \leq \cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1}{\alpha-1} D(a, q)(递归解)\\\\ d_i\geq{}\cfrac{1}{2}{D_{\text{min}}}(上述已证明) \end{cases} 21DminαiD(s,q)+α1α+1D(a,q) diαiD(s,q)+α1α+1D(a,q)(递归解)di21Dmin(上述已证明)
      • α i ⩽ 8 D max ⁡ D min ⁡ ⇐ D min ⁡ 2 ⩽ 2 D max ⁡ α i + D min ⁡ 4 ⇐ { 1 2 D min ≤ D ( s , q ) α i + α + 1 α − 1 D ( a , q ) D ( a , q ) < α − 1 4 ( α + 1 ) D min ⁡ ( 条件 ) D ( s , q ) ≤ 2 D max ( 条件 ) \textcolor{orange}{\alpha^i \leqslant \cfrac{8 D_{\max }}{D_{\min }}}\Leftarrow{}\cfrac{D_{\min }}{2} \leqslant \cfrac{2 D_{\max }}{\alpha^i}+\cfrac{D_{\min }}{4} \Leftarrow{} \begin{cases} \textcolor{green}{\cfrac{1}{2}{D_{\text{min}}}\leq{}\cfrac{D(s, q)}{\alpha^i} + \cfrac{\alpha+1}{\alpha-1} D(a, q)}\\\\ D(a,q)<{}\cfrac{\alpha-1}{4(\alpha+1)} D_{\min }(条件)\\\\ D(s,q)\leq{}2D_{\text{max}}(条件) \end{cases} αiDmin8Dmax2Dminαi2Dmax+4Dmin 21DminαiD(s,q)+α1α+1D(a,q)D(a,q)<4(α+1)α1Dmin(条件)D(s,q)2Dmax(条件)
      • O ( log ⁡ α Δ ) ⇐ 渐进上界 i ≤ log ⁡ α 8 Δ ⇐ { α i ⩽ 8 D max ⁡ D min ⁡ Δ = D max ⁡ D min ⁡ ( 定义 ) O\left(\log_\alpha \Delta\right) \xLeftarrow{渐进上界}\textcolor{red}{i\leq\log_{\alpha}8\Delta} \Leftarrow{} \begin{cases} \textcolor{orange}{\alpha^i \leqslant \cfrac{8 D_{\max }}{D_{\min }}}\\\\ \Delta=\cfrac{D_{\max }}{D_{\min }} (定义) \end{cases} O(logαΔ)渐进上界 ilogα αiDmin8DmaxΔ=DminDmax(定义)

X.3. 对证明过程的思考

1️⃣证明的关键何在

关键点解释
三角不等式是推导过程的基石,几乎出现在所有推导的过程
d i d_i di递归式推导过程中最为核心的一步,因为其解释了算法在每一步的收敛速度
三种情况本质上是算法在不同距离下有三种收敛方式不同收敛方式受(局部)倍增维度控制?

2️⃣三种情况的一些分析:本想尝试解答三种情况划分界限的内在因果,但最后也没有分析出什么🤣

情况 D ( s , q ) D(s, q) D(s,q) D ( a , q ) D(a,q) D(a,q)
情况一 ( 2 D max ⁡ , ∞ ) (2 D_{\max },\infin{}) (2Dmax,) [ − ∞ , + ∞ ] [-\infin{},+\infin{}] [,+]
情况二 ( 0 , 2 D max ⁡ ] (0,2 D_{\max }] (0,2Dmax] [ α − 1 4 ( α + 1 ) D min ⁡ , + ∞ ) \left[\cfrac{\alpha-1}{4(\alpha+1)} D_{\min },+\infin{}\right) [4(α+1)α1Dmin,+)
情况三 ( 0 , 2 D max ⁡ ] (0,2 D_{\max }] (0,2Dmax] ( 0 , α − 1 4 ( α + 1 ) D min ⁡ ) \left(0,\cfrac{\alpha-1}{4(\alpha+1)} D_{\min }\right) (0,4(α+1)α1Dmin)
  1. D ( a , q ) ≤ 3 D max ⇐ { D ( a , q ) ≤ D ( s , q ) + D max ⇐ { D ( a , q ) ≤ D ( s , q ) + D ( a , s ) ( 三角 ) D ( a , s ) ≤ D max ( D max 定义 ) D ( s , q ) ≤ 2 D max ⁡ ( 情况 2 / 3 条件 ) D(a,q)\leq{}3D_{\text{max}} \Leftarrow{} \begin{cases} D(a,q)\leq{}D(s,q)+D_{\text{max}} \Leftarrow{} \begin{cases} D(a,q)\leq{}D(s,q)+D(a,s) (三角)\\\\ D(a,s)\leq{}D_{\text{max}}(D_{\text{max}}定义) \end{cases}\\\\ D(s,q)\leq{}2 D_{\max }(情况2/3条件) \end{cases} D(a,q)3Dmax D(a,q)D(s,q)+Dmax D(a,q)D(s,q)+D(a,s)(三角)D(a,s)Dmax(Dmax定义)D(s,q)2Dmax(情况2/3条件)
  2. D ( a , q ) ≥ D max ⇐ { D ( a , q ) ≥ D ( s , q ) − D max ⇐ { D ( a , q ) ≥ D ( s , q ) − D ( a , s ) ( 三角 ) D ( a , s ) ≤ D max ( D max 定义 ) D ( s , q ) ≥ 2 D max ⁡ ( 情况 1 条件 ) D(a,q)\geq{}D_{\text{max}} \Leftarrow{} \begin{cases} D(a,q)\geq{}D(s,q)-D_{\text{max}} \Leftarrow{} \begin{cases} D(a,q)\geq{}D(s,q)-D(a,s) (三角)\\\\ D(a,s)\leq{}D_{\text{max}}(D_{\text{max}}定义) \end{cases}\\\\ D(s,q)\geq{}2 D_{\max }(情况1条件) \end{cases} D(a,q)Dmax D(a,q)D(s,q)Dmax D(a,q)D(s,q)D(a,s)(三角)D(a,s)Dmax(Dmax定义)D(s,q)2Dmax(情况1条件)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值