FANN问题概述

Flexible Aggregate Nearest Neighbor Queries in Road Networks 论文概述

本文的讨论基于论文
Flexible Aggregate Nearest Neighbor Queries in Road Networks
Published in: 2018 IEEE 34th International Conference on Data Engineering (ICDE)
论文链接:https://ieeexplore.ieee.org/document/8509295

论文综述部分请参照:
https://blog.csdn.net/weixin_43821874/article/details/94740453

本文解决了哪些问题

\qquad 集合最近邻查询 ( A N N ) (ANN) ANN问题在欧氏空间和道路网络等领域一直是一个热门的研究方向。灵活的集合最近邻查询 ( F A N N ) (FANN) FANN问题通过引入一个灵活性来扩展了 A N N ANN ANN问题。 F A N N FANN FANN问题简略定义为,给定一个数据点集合P,一个查询点集合Q,一个用户自定义的范围在(0,1]之间的灵活性参数 ψ \psi ψ F A N N FANN FANN算法能返回P中到Q中任意 ψ ∣ Q ∣ \psi |Q| ψQ个点总距离最小的那个点。在这篇文章中,作者专注于解决与道路网络相关的问题( F A N N R FANN_R FANNR),并展示了一系列用于解决 F A N N R FANN_R FANNR问题的算法;这些算法包括$Dijkstra-based 方 法 , 方法, queue-based 方 法 , 组 合 方法,组合 IER 和 和 kNN 两 种 思 想 的 算 法 。 同 时 作 者 也 提 出 了 一 些 针 对 两种思想的算法。同时作者也提出了一些针对 max-FANN_R$ 问题特定的算法,以及对 s u m − F A N N R sum-FANN_R sumFANNR 问题的近似算法。这些特定的算法非常容易实现,并且在解决某些问题中性能十分优越。

基本算法的描述

A . D i j k s t r a − b a s e d &ThinSpace; A l g o r i t h o m I n p u t : &ThinSpace; G ( V , E , W ) , Q , ψ O u t p u t : &ThinSpace; p ∗ , Q ψ ∗ , d ∗ 1 : p ∗ ← n u l l , Q ψ ∗ ← ⊘ , d ∗ ← ∞ 2 : f o r &ThinSpace; e a c h &ThinSpace; p ∈ V d o 3 : 用 D i j k s t r a 算 法 找 到 Q 中 距 离 p 最 近 的 [ ψ M ] 个 点 Q ψ P , 同 时 求 出 它 们 到 p 的 距 离 之 和 d 4 : i f &ThinSpace; d &lt; d ∗ t h e n 5 : p ∗ ← p , Q ψ ∗ ← Q ψ P , d ∗ ← d 6 : e n d &ThickSpace; i f 7 : e n d f o r A.\quad Dijkstra-based\, Algorithom\\ Input:\,G(V,E,W),Q,\psi \\ Output:\,p^*,Q_\psi^*,d^* \qquad\quad\\ 1:p^*\leftarrow null,Q_\psi^*\leftarrow\oslash,d^*\leftarrow \infty\\ 2:for\, each\,p\in V\quad do\qquad\qquad\\ 3:用Dijkstra算法找到Q中距离\quad\\ p最近的[\psi M]个点Q_\psi^P,同时求出它们\\ 到p的距离之和d\qquad\qquad\qquad\qquad\\ 4:\qquad if\,d&lt;d^*\quad then\qquad\quad\\ 5:\qquad\qquad p^*\leftarrow p,Q_\psi^*\leftarrow Q_\psi^P, \\\qquad d^*\leftarrow d\\ 6:\quad end\;if\qquad\qquad\qquad\qquad\\ 7:endfor\qquad\qquad\qquad\qquad A.DijkstrabasedAlgorithomInput:G(V,E,W),Q,ψOutput:p,Qψ,d1:pnull,Qψ,d2:foreachpVdo3:DijkstraQp[ψM]QψPpd4:ifd<dthen5:pp,QψQψP,dd6:endif7:endfor

B . I E R − k N N &ThinSpace; F r a m e w o r k Input: G , P , Q , ψ , g , R Output: p ∗ , Q ψ ∗ , d ∗ 1 : d ∗ ← ∞ , H ← 新 优 先 队 列 2 : H . e n q u e u e ( R . r o o t , g ψ ϵ ( R . r o o t , Q ) ) &ThinSpace;&ThinSpace; 3 : while &ThinSpace; H &ThinSpace; i s &ThinSpace; n o t &ThinSpace; e m p t y &ThinSpace; then 4 : e ← H . t o p ( ) 5 : if &ThinSpace; g ψ ϵ ( e , Q ) ≥ d ∗ then &ThinSpace;&ThinSpace; 6 : break &ThinSpace;&ThinSpace; 7 : H . d e q u e u e ( ) &ThinSpace;&ThinSpace; 8 : if &ThinSpace; e &ThinSpace; i s &ThinSpace; a n &ThinSpace; R − T r e e &ThinSpace; n o d e &ThinSpace; then &ThinSpace;&ThinSpace; 9 : foreach &ThinSpace; R − T r e e &ThinSpace; e n t r y &ThinSpace; e ^ o f &ThinSpace; e &ThinSpace; do 10 : H . e n q u e u e ( e ^ , g ψ ϵ , Q ) 11 : else 12 : ( Q ψ e , d e ) ← g ψ ( e , Q ) 13 : if d e &lt; d ∗ &ThinSpace; then 14 : p ∗ ← e , d ∗ ← d e , Q ψ ∗ ← Q ψ e B.IER-kNN\,Framework\qquad\qquad\quad\\ \textbf{Input:}G,P,Q,\psi,g,R\qquad\quad\qquad\qquad\\ \textbf{Output:}p^*,Q_\psi^*,d^*\qquad\qquad\quad\qquad\qquad\\ 1:d*\leftarrow \infty,H\leftarrow 新优先队列\qquad\quad\qquad\\ 2:H.enqueue(R.root,g_\psi^\epsilon(R.root,Q))\,\,\\ 3:\textbf{while}\,H\,is \,not\,empty\,\textbf{then}\qquad\qquad\\ 4:\quad e\leftarrow H.top()\qquad\qquad\qquad\qquad\quad\\ 5:\quad\textbf{if}\,g_\psi^\epsilon(e,Q)\ge d^* \textbf{then}\qquad\qquad \quad\,\,\\ 6:\qquad\textbf{break}\qquad\qquad\qquad\qquad\qquad\,\,\\ 7:\quad H.dequeue()\qquad\qquad\qquad\qquad\,\,\\ 8:\quad\textbf{if}\, e\,is\,an\, R-Tree\, node\, \textbf{then}\quad\,\,\\ 9:\quad\textbf{foreach}\,R-Tree\,entry\,\hat e of\,e\,\textbf{do}\\ 10:\qquad H.enqueue(\hat e,g_\psi^\epsilon,Q)\qquad\qquad\\ 11:\quad\textbf{else}\qquad\qquad\qquad\qquad\qquad\qquad\\ 12:\qquad(Q_\psi^e,d^e)\leftarrow g_\psi(e,Q)\qquad\qquad\\ 13:\qquad\textbf{if}\quad d^e&lt;d^*\,\textbf{then}\qquad\qquad\quad\\ 14:p^*\leftarrow e,d^*\leftarrow d^e,Q_\psi^*\leftarrow Q_\psi^e\qquad\quad B.IERkNNFrameworkInput:G,P,Q,ψ,g,ROutput:p,Qψ,d1:d,H2:H.enqueue(R.root,gψϵ(R.root,Q))3:whileHisnotemptythen4:eH.top()5:ifgψϵ(e,Q)dthen6:break7:H.dequeue()8:ifeisanRTreenodethen9:foreachRTreeentrye^ofedo10:H.enqueue(e^,gψϵ,Q)11:else12:(Qψe,de)gψ(e,Q)13:ifde<dthen14:pe,dde,QψQψe

C . T h e &ThinSpace; E x a c t − m a x &ThinSpace; A l g o r i t h m I n p u t : G , P , Q , ψ , δ , g O u t p u t : p ∗ , Q ψ ∗ , d ∗ 1 : for   each &ThinSpace; p ∗ ∈ P &ThinSpace; d o 2 : c o u n t [ p ] ← 0 &ThinSpace;&ThinSpace;&ThinSpace; 3 : while &ThinSpace; t r u e d o &ThinSpace;&ThinSpace; 4 : L m i n ← 头 节 点 距 离 的 最 小 队 列 5 : c o u n t [ L m i n . t o p ( ) ] ← c o u n t [ L m i n . t o p ( ) ] + 1 6 : if &ThickSpace; c o u n t [ L m i n . t o p ( ) ] ≥ ψ ∣ Q ∣ then 7 : p ∗ ← L m i n . t o p ( ) ( Q ψ ∗ , d ∗ ) ← g ψ ( L m i n . t o p ( ) , Q ) 8 : break 9 : L m i n . d e q u e u e ( ) C.\quad The \,Exact-max\,Algorithm\\ Input:G,P,Q,\psi,\delta,g \qquad\qquad\quad\\ Output:p^*,Q_\psi^*,d*\qquad\qquad\qquad\\ 1:\textbf{for each}\,p^*\in P\,do\qquad\qquad\quad\\ 2:\quad count[p]\leftarrow 0\qquad\qquad\quad\quad\,\,\,\\ 3:\textbf{while}\, true \quad do\qquad\qquad\qquad\,\,\\ 4:\quad L_{min}\leftarrow 头节点距离的最小队列\\ 5:\quad count[L_{min}.top()]\leftarrow \qquad\quad\\ count[L_{min}.top()]+1\\ 6:\quad\textbf{if}\;count[L_{min}.top()]\ge \psi|Q|\\ \textbf {then}\quad\qquad\qquad\qquad\quad\\ 7:\qquad \qquad p*\leftarrow L_{min}.top()\qquad\\ (Q_\psi^*,d^*)\leftarrow g_\psi (L_{min}.top(),Q)\\ 8:\qquad\qquad \textbf{break}\qquad\qquad\qquad\\ 9:\quad L_{min}.dequeue()\quad\qquad\qquad C.TheExactmaxAlgorithmInput:G,P,Q,ψ,δ,gOutput:p,Qψ,d1:for eachpPdo2:count[p]03:whiletruedo4:Lmin5:count[Lmin.top()]count[Lmin.top()]+16:ifcount[Lmin.top()]ψQthen7:pLmin.top()(Qψ,d)gψ(Lmin.top(),Q)8:break9:Lmin.dequeue()

D . T h e &ThinSpace; A P X − s u m &ThinSpace; A l g o r i t h m I n p u t : G , P , Q , ψ , δ , g O u t p u t : p α , Q ψ α , d α 1 : c a n d i d a t e ← ⊘ 2 : foreach q ∈ Q &ThinSpace; do &ThinSpace;&ThinSpace; 3 : p ← t h e &ThinSpace; n e a r e s t &ThinSpace; n e i g h b o r &ThinSpace; o f &ThinSpace; q &ThinSpace; i n &ThinSpace; P 4 : c a n d i d a t e . i n s e r t ( p ) 5 : F A N N R ( G , c a n d i d a t e , Q , ψ , s u m ) D.\quad The\,APX-sum\,Algorithm\qquad\quad\\ Input:G,P,Q,\psi,\delta,g\qquad\qquad\qquad\qquad\\ Output:p^\alpha,Q_\psi^\alpha,d^\alpha\qquad\qquad\qquad\qquad\quad\\ 1:candidate\leftarrow\oslash\qquad\qquad\qquad\qquad\quad\\ 2:\textbf{foreach}\quad q\in Q \,\textbf{do}\qquad\qquad\qquad\quad\,\,\\ 3:\quad p\leftarrow the\,nearest\,neighbor\,of\, q\,in\,P\\ 4:\quad candidate.insert(p)\qquad\qquad\qquad\\ 5:FANN_R(G,candidate,Q,\psi,sum)\quad D.TheAPXsumAlgorithmInput:G,P,Q,ψ,δ,gOutput:pα,Qψα,dα1:candidate2:foreachqQdo3:pthenearestneighborofqinP4:candidate.insert(p)5:FANNR(G,candidate,Q,ψ,sum)

举例说明

在这里插入图片描述

在这里插入图片描述

  1. I E R − k N N F r a m e w o r k IER-kNN\quad Framework IERkNNFramework 算法

    \qquad 我们首先看下这个算法是怎么找到 s u m − F A N N R sum-FANN_R sumFANNR.如图一所示,此时令 ψ = 50 % \psi=50\% ψ=50%.我们在图2中说明这个算法的过程,为了更好地观察这个过程,图中去掉了一些无关的路段。在第一轮的循环中,我们让 ( M B R 1 , 8 ) , ( M B R 2 , 1.5 ) , ( M B R 3 , 26 ) (MBR_1,8),(MBR_2,1.5),(MBR_3,26) (MBR1,8),(MBR2,1.5),(MBR3,26)进入队列H。在这之后, ( M B R 2 , 1.5 ) (MBR_2,1.5) (MBR2,1.5)将会出队,然后我们检查下在 M B R 2 MBR_2 MBR2中的 p 3 , p 6 p_3,p_6 p3,p6。显然, d ∗ d^* d将会是4。我们总是能安全的使这个算法停止,这是因为 d ∗ d^* d小于队列H中头节点的值。

  2. E x a c t − m a x Exact-max Exactmax算法

    \qquad 我们看下这个算法怎么在图一中找到 m a x − F A N N R max-FANN_R maxFANNR,此时 ψ = 50 % \psi=50\% ψ=50%. { q 1 , q 2 , q 3 , q 4 } \{q_1,q_2,q_3,q_4\} {q1,q2,q3,q4}的扩张路径可以用 { p 3 , … &ThinSpace; } , { p 3 , … &ThinSpace; } , { p 4 , … &ThinSpace; } , { p 5 , … &ThinSpace; } \{p_3,\dots\},\{p_3,\dots\},\{p_4,\dots\},\{p_5,\dots\} {p3,},{p3,},{p4,},{p5,}象征性地表示。很明显 p 3 p_3 p3的计数器首先到达 ψ × 4 = 2 \psi \times 4 = 2 ψ×4=2。因此这个 m a x − F A N N R max-FANN_R maxFANNR查询的结果是 p ∗ = p 3 , d ∗ = 2 , Q ψ ∗ = { q 1 , q 2 } p^* = p_3,d^* = 2, Q_\psi^* = \{q_1,q_2\} p=p3,d=2,Qψ={q1,q2}

  3. A P X − s u m APX-sum APXsum算法

    \qquad 我们仍然通过图一的例子来说明这个算法,此时 ψ = 50 % \psi=50\% ψ=50%。首先,我们可以很容易获得参与的数据点的集合为 A = { p 3 , p 4 , p 5 } A=\{p_3,p_4,p_5\} A={p3,p4,p5}。因为真正的优化解 p ∗ p^* p属于这个集合A,APX-sum将会返回最终结果$p^=p_3, d^ = 4,Q_\psi^*={q_1,q_2} $

采用什么思想解决这个问题

A. T h e D i j k s t r a − b a s e d A l g o r i t h m The\quad Dijkstra-based\quad Algorithm TheDijkstrabasedAlgorithm

\qquad 基于 D i j k s t r a Dijkstra Dijkstra的算法基于以下思想。 关于 D i j k s t r a Dijkstra Dijkstra算法运行步骤:在其扩展的每一步,它选择一个未访问的源节点最近节点来访问并更新其邻居到源节点的距离。 这种行为在运行 g ψ ( p , Q ) g_{\psi}(p,Q) gψ(p,Q)时也有意义。 首先,让 p p p为源节点,我们在其上调用 D i j k s t r a Dijkstra Dijkstra算法。 然后我们保持路径扩展直到 ψ ∣ Q ∣ \psi | Q | ψQ Q Q Q中的节点标记为已访问。 因此,这些 ψ ∣ Q ∣ \psi | Q | ψQ 节点恰好是 Q ψ p Q_\psi^p Qψp。因此,我们可以枚举 P P P中的点并返回具有最小柔性聚合距离的点。

B. I E R − k N N F r a m e w o r k IER-kNN\quad Framework IERkNNFramework

\qquad 基于引理1,我们可以使用基于P构建的R树来解决 F A N N R FANN_R FANNR查询。我们在算法 I E R − k N N F r a m e w o r k IER-kNN\quad Framework IERkNNFramework中展示了这个过程。假设 h e a d head head是一个从队列中获取 h e a d head head元素的函数。最初, R R R树的根被排入优先级队列,该优先级队列按照升序排序 g ψ ϵ ( e , Q ) g_{\psi}^{\epsilon}(e,Q) gψϵ(e,Q)(第2行)。 对于每次迭代,我们首先检查 g ψ ϵ ( e , Q ) g_{\psi}^{\epsilon}(e,Q) gψϵ(e,Q)是否大于或等于当前最佳候选结果(第5行)。 如果是这样,我们终止算法(第6行); 否则,我们检查出列项是否是R树节点(第8行)。如果是,将此节点下的所有条目推入优先级队列(第9-10行);否则,我们在其上运行 g ψ ϵ ( e , Q ) g_{\psi}^{\epsilon}(e,Q) gψϵ(e,Q)并在 d e &lt; d ∗ d^e&lt;d^* de<d时更新结果(第12-14行)。另外,在第9行中,如果 e e e是叶节点,则条目 e e e P P P中的数据点,如果 e e e是非叶节点,则它是 R R R树节点。

C.$ The\quad Exact-max\quad Algorithm$

\qquad 算法2中提出了 E x a c t − m a x Exact-max Exactmax方法(精确 m a x − F A N N R max-FANNR maxFANNR),它与 R − L i s t R-List RList具有相似的思想和数据结构。主要区别在于我们为P中的每个点添加一个计数器。最初,这些计数器设置为0(第2行)。在每次迭代期间,我们得到具有最小距离的头节点(第4行),然后将与头节点相关联的计数器增加1(第5行)。如果与头节点相关联的计数器达到$ \psi|Q | , 则 头 节 点 正 好 是 ,则头节点正好是 p^* , 然 后 我 们 可 以 安 全 地 终 止 算 法 ( 第 6 − 9 行 ) 。 因 此 , 我 们 能 运 行 一 次 并 耗 时 ,然后我们可以安全地终止算法(第6-9行)。因此,我们能运行一次并耗时 69g_\psi ( 第 8 行 ) 。 这 就 是 (第8行)。这就是 8Exact-max 可 以 高 效 的 原 因 。 此 外 , 这 也 表 明 可以高效的原因。此外,这也表明 g_\psi 的 不 同 实 现 对 的不同实现对 Exact-max 几 乎 没 有 影 响 。 换 句 话 说 , 即 使 我 们 没 有 在 整 个 几乎没有影响。换句话说,即使我们没有在整个 使G$上建立道路网络索引,我们也可获得良好的结果。

D. T h e A P X − s u m A l g o r i t h m The\quad APX-sum\quad Algorithm TheAPXsumAlgorithm

\qquad 对于道路网络中的 s u m − F A N N R sum-FANNR sumFANNR问题,算法3中提出了近似方法 A P X − s u m APX-sum APXsum(近似 s u m − F A N N R sum-FANN_R sumFANNR)。该算法非常简单,但它具有恒定的近似比。我们只检查 Q Q Q中那些查询节点的最近邻居的那些数据点而不是考虑整个 P P P(第2-4行)。 然后我们将候选集视为 P P P,并运行 F A N N R FANN_R FANNR算法(其 g g g s u m sum sum)。因此,算法将候选数据点的数量减少到 ∣ Q ∣ | Q | Q,通常远小于 ∣ P ∣ | P | P。 这就是它可以显着提高搜索效率的原因。 实际上,候选集的大小甚至可能小于 ∣ Q ∣ | Q | Q,因为不同的查询点可能具有相同的最近数据点邻居。 A P X − s u m APX-sum APXsum最吸引人的特性之一是改变 P P P时的稳定性,因为它通常只受 Q Q Q的影响。可以证明该算法的近似比 d α / d ∗ d^\alpha / d^* dα/d不大于3。

算法分析的结论

A.$ The \quad Dijkstra-based \quad Algorithm$

\qquad 由于 g ψ g_\psi gψ D i j k s t r a Dijkstra Dijkstra具有相同的时间成本,即 O ( ∣ E ∣ + ∣ V ∣ l o g ∣ V ∣ ) O(| E | + | V | log | V |) OE+VlogV(假设 m i n − p r i o r i t y min-priority minpriority队列由 F i b o n a c c i Fibonacci Fibonacci堆实现),因此总的时间成本是 O ( ( ∣ E ∣ + ∣ V ∣ l o g ∣ V ∣ ) ∣ P ∣ ) O((| E | + | V | log | V |)| P |) OE+VlogVP。 在最坏的情况下,空间成本是 O ( ∣ P ∣ + ∣ Q ∣ + ∣ V ∣ + 2 ψ ∣ Q ∣ ) = O ( ∣ V ∣ ) O(| P | + | Q | + | V | +2\psi | Q |)= O(| V |) OP+Q+V+2ψQ=OV

B. I E R − k N N F r a m e w o r k IER-kNN\quad Framework IERkNNFramework

\qquad 在最坏的情况下,我们仍然需要访问P中的每个点。以 I E R − G T r e e IER-GTree IERGTree为例, k N N kNN kNN搜索的最差时间成本是 O ( ∣ V ∣ l o g ∣ V ∣ ) O(| V | log | V |) OVlogV。总时间成本为 O ( ∣ P ∣ ∣ V ∣ l o g ∣ V ∣ ) O(| P || V | log | V |) OPVlogV。 如所述,复杂性比实际中最坏的情况复杂性要小得多。 因为与 G G G树相比, R R R树或 O c c Occ Occ的空间成本可以忽略不计,所以空间成本主要由 G G G树的成本组成,即 O ( ∣ V ∣ + ∣ V ∣ ∣ l o g ∣ V ∣ + ∣ E ∣ ) O(| V | + | V | | log | V | + | E |) OV+VlogV+E

C. T h e E x a c t − m a x A l g o r i t h m The\quad Exact-max \quad Algorithm TheExactmaxAlgorithm

\qquad 假设 g p s i g_psi gpsi由类似 D i j k s t r a Dijkstra Dijkstra的方法实现。 对于 R − L i s t R-List RList算法,在最坏的情况下将访问 P P P中的每个点。因此,时间成本是 O ( ( ∣ E ∣ + ∣ V ∣ l o g ∣ V ∣ ) ∣ P ∣ ) O((| E | + | V | log | V |)| P |) OE+VlogVP。 在实践中,由于下限,时间复杂度通常小于它。 在最坏的情况下,空间成本是 O ( ∣ Q ∣ ∣ V ∣ ) O(| Q || V |) OQV,它主要由队列列表组成。同样, E x a c t − m a x Exact-max Exactmax的时间成本为 O ( ∣ E ∣ + ∣ V ∣ l o g ∣ V ∣ ) O(| E | + | V | log | V |) OE+VlogV,其空间成本也包括计数器用量,即 O ( ∣ Q ∣ ∣ V ∣ + ∣ P ∣ ) O(| Q || V | + | P |) OQV+P 在最坏的情况下 = O ( ∣ Q ∣ ∣ V ∣ ) = O(| Q || V |) =OQV

D.$ The APX-sum Algorithm$

A P X − s u m \qquad APX-sum APXsum包括找到最近邻居和 F A N N R FANN_R FANNR。如果 g ψ g_\psi gψ实现为 D i j k s t r a Dijkstra Dijkstra I N E INE INE,则时间成本为 O ( ( ∣ E ∣ + ∣ V ∣ l o g ∣ V ∣ ) ∣ Q ∣ ) O((| E | + | V | log | V |)| Q |) OE+VlogVQ

在最坏的情况下,空间成本是 O ( ∣ V ∣ ) O(| V |) OV

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值