270 likes | 462 Views
Superseding Nearest Neighbor Search on Uncertain Spatial Databases. 何翊宇. Abstract :. 这篇论文提出一个新的论题,叫做 superseding nearest neighbor search .
E N D
Superseding Nearest Neighbor Search on Uncertain Spatial Databases 何翊宇
Abstract: • 这篇论文提出一个新的论题,叫做superseding nearest neighbor search. • 在不确定性数据集中,每一个事件都是用一个多维的概率密度函数描述的。给定一个查询点q,一个object如果有非0的概率是q的NN,则这个object就是q的一个NN候选者。给定两个NN候选者 o1 和 o2,如果o1比o2点靠近q的概率大,则o1点取代o2点。一个object如果可以取代所有其他的NN候选者,它就是q的一个SNN。有时候我们不能找到一个NN可以替代其他所有的NN候选者,在这种情况下,我们返回SNN—core,包含了所有能够替代其他NN候选者的最小集合。
NN search on precise data: 此处用到的方法叫best-first(BF)-algorithm。图中有9个点,q点是查询点,剩下还有8个点A~H是数据集。我们用面积最小的矩形将每两个点包围住。然后将矩形和q点到这些矩形的距离记录到R-tree中。然后我们可以根据此求出这些点到q的距离。 A~H按距离的排序:C,E,B,D,G,A,F,H
BF算法: • BF算法用到了一个min-heap H。 H = {N5,N6} • H={N2,N6,N1} • H={C,N6,N1,D} C就是要求的Nearest Neighbor。
BF算法: BF算法继续进行下去,将会把所有的点按照同q点的距离升序输出。 继续上图: • H={N1,N6,D} • H={N3,N1,D,N4} • H={E,N1,D,N4,F} 此时就求得了第二近的点E。
BF算法疑问! BF算法如果再继续进行下去(论文没有写了) 继续上页: • H={N1,D,N4,F} • H={B,D,N4,F,A} B、D是第三个和第四个。 • H={N4,F,A} • H={G,F,A,H} 得到最终结果为C,E,B,D,G,F,A,H 而从图中可以看出结果应该为C,E,B,D,G,A,F,H
NN Search on Uncertain Data: 定义:O.pdf(x) 是o出现在x点的概率。 • Expected-distance Principle:求得距离到q点的期望值最小的点。(可能会有极端情况出现) • PR-principle:求得成为NN的概率最大的点。 PR-principle可以看做是在求解top-1。PR-principle和SNN互补。PR-principle求出NN点,而SNN求出一个最佳NN候选者的集合SNN-core。
两种uncertain data: • 这两种算法(还有这篇论文的SNN算法)都是求的第一种uncertain data:数据确定,出现地点不确定。 • 除此之外还有一种不同的uncertain data:数据不确定是否出现,但是一旦出现地点确定。
问题描述及基础特性: • maxdist是o点到q点所有实例中最远的那个距离 • Minmax是Data中所有的object的maxdist中最小的那个
问题描述及基础特性: • 如果O有任意一个实例小于minmax, 说明当其他点都取maxdist的时候,O将成为NN,所以O是NN候选者。 • 所以以minmax为半径,q点为圆心做一个圆,在圆内部有实例的object就是NN候选者,没有的就不是。 • RI-list是所有NN候选者的实例按距离排序的一个集合。 • O<O’的定义:o比o’离p近.
问题描述及基础特性: • O出现在O[i]时比O’更接近p的概率,可以看做是O’的实例在RI-list内排在O[i]后面的概率。O取代O’则有边从O指向O’。 • 取代关系可以用图形来表示。(如前例) • SNN-core的决定条件: SNN-core内每一点都能够取代SNN-core以外的点 其真子集不能成为SNN-core
the full-graph approach: • 先计算得出superseding graph,然后推算出SNN-core。(要将所有的Object画出来) • First step: 通过minmax判定NN候选者。然后将每一个NN候选者的实例选出来。用BF算法实现。(本质上是求得RI-list) • Second step: 将其表示到superseding graph,再确定SNN,方法如下: 在superseding graph中,有最少的in-degree的点是SNN-core。所有能取代SNN-core成员的点属于SNN-core。(可以反证法证明)
The Pipeline Approach: • Full-graph 算法是一种低效的算法,因为它必须要遍历所有NN候选者的所有的实例,而在某些特定的情况下,这样会导致效率很低。如图。因此我们 需要找到一个更加高效 的方法。
The Pipeline Approach: Pipeline算法要管理一个集合G*(与SNN-core关联): • 先将一个unseen点加入到G*中。然后从RI-list中从前往后取。将取到的点O加入到G*中(符合以下条件:1、O以前不在G*中。2、O没有被剪枝。3、unseen点仍在G*中(说明尚有点未加入))。 • 当minmax-moment(每一个object的maxdist点都出现,得到了minmax)出现以后,就将unseen点移走。(如果已经出现的每一个点都取代了unseen,也将unseen移走) • 尽可能多的给出G*中点的关系。(每当一个点被G*中其他点取代,就将其移走) • 当得出了SNN-core后,算法停止。 (unseen代表还有未出现的点可能可以出现到G*中)
The Pipeline Approach: • Edge Phase: • 这个步骤的目的是将所有能够添加进G*的边添加进去。 • 这个步骤使用了一个矩阵low[i,j]和一个数组cnt[i]。 • Low[i,j]是一个m*m的方阵。随着实例的加入,low在不停的更新。m是object的总数。Low[i,j]储存当前Oi取代Oj的几率。 • i=j时Low[i,j]=0;(不能取代本身) • 因为O1代表的是unseen,第一行全部是0,第一列代表了出现过的O取代未出现过的点的最低的概率。 • 随着m的增加,更新low,当low[i,j]>0.5的时候,在G*中增加一条从Oi到Oj的边。
The Pipeline Approach: • Cnt[m]记录了Oi至今为止有多少实例已经被遍历了(在此例中,后面的通用版此处会被修改).O1是unseen所以cnt[1]=0。 • 每次新增一个实例,将对应的cnt[i]加1,如果此实例以前未出现过,就将cnt扩大1,然后赋值为1。对应的在low中新建一行和一列,新建行的前m-1列用low[i,1]对应初始化,新建列用0初始化。然后在low中更新对应的列,采取以下公式):
The Pipeline Approach: • Pruning Phase: • identify the smallest set Sret of vertices such that, for any vertex o ∈ Sret and o_ ∈ V∗ −Sret, G∗ has an edge from o to o_. We call Sret the retention-set; all the vertices in V∗ − Sret can be discarded. • Sret可以通过像在full superseding graph中计算SNN-core的方式计算获得: 先添加有最少的indgree的点,然后将可以取代它的点添加进去,然后将所有与它没有联系的点添加进去,直到无法再添加点。将不在Sret中的点移除。
The Pipeline Approach: • Validating Phase: • 这个步骤决定G*是否还可以缩小。(当无法缩小的时候,G*就是SNN-core的S-graph,算法结束) • 当且仅当G*是强连通的时候,G*是不可缩小的。
(前文提到的要修改处)如果将情况一般化。所有Object的实例不确定,出现几率不确定。Full-graph算法不用变。Pipeline算法的edge phase中 cnt数组改变,变成cnt[i]存放Oi的出现了的实例的出现几率,更改low的时候的算法改成: 其中表示O出现在Oi处的概率。
Pipeline与full-graph比较: 1: P不需要输入全部的O和实例。 2: 计算时,F的时间复杂度是o(n2),P的时间复杂度在没有剪枝情况下是o(n3),然而剪枝的时候要好很多。 3:Full-graph需要较多的I/O时间,而CPU时间比较少。 4:Full-graph更简单实现 5:Full-graph在特定情况下(R-tree可以快速有效的遍历的时候(例如:内存数库))效率更高。
论文总结: • SNN search是解决不确定性问题的一种可行方法,这篇文章通过两种算法得出SNN-core,并对其效率进行了比较。