Post on 08-Jan-2016
description
Zaiben Chen et al.Zaiben Chen et al.
Presented by Lian LiuPresented by Lian Liu
You’re traveling from s to t. Which gas station would you choose?
Problem modelingRoad networks a weighted undirected graph G(V, E)Sites a subset of nodes V’∈V, called objects
k-Path Nearest Neighbor (k-PNN)Input: s(starting node) and t (destination node)Output: k objects that nearest to the shortest path between s and t
Dijkstra’s Shortest Path (bi-directional)
k-NN queries in Euclidean spaceDistances between data points are measured by Euclidean distance metric
k-NN queries in road networksDistances between data points are measured by network distance metric
In-Route Nearest Neighbor (IRNN)Given shortest path (s, n2, n3, t), IRNN returns object B as 1st-PNNWhat’s the
difference with our problem?
Distance metrics used in this paperEuclidean distance: De(n1, n2)
Network distance: Dn(n1, n2)
Detour distance: Dd(n, p)
Task 1: Computing the shortest path between s and t, and find the k-PNN from the path (static)searching phaseverification phase
Task 2: Monitoring k-PNN, no matter the user follows or deviates from the current shortest path (dynamic)monitoring phase
Searching phaseVerification phaseMonitoring phase
Searching phase:Find the current shortest path SP(s, t)Generate a set CS of candidate objects, which is a super set of the current k-PNN
A brute-force solution:Compute the shortest path SP(s, t) between s and t using Dijkstra’s algorithmFor each object o, compute it’s detour distance from SP(s, t), select the k objects with the smallest detour distances Problem: It’s too
expensive! Do we have to compute the accurate
detour distance?
Upper bound of detour distanceUB(o, SP(s, t)) = min{c1, c2}
Lower bound of detour distanceLB(o, SP(s, t))= (c1+c2-L)/2
Alternately expand network in both directions. Once the two expansion trees meet, SP(s, t) is foundWhenever an expansion tree reach an object, update its detour distance upper/lower bound
Keep on expanding, adding scanned objects into CS, until we can find an object o and an object set O={o1, o2, … ok} in CS, such that LB(o, SP(s, t))≥ max{UB(oi, SP(s, t))}Return CS
Searching phaseVerification phaseMonitoring phase
Verification phase:Compute accurate detour distance from SP(s, t) to all candidates in CSFind the current k-PNN
Start Dijkstra’s network expansion from each candidate oi in CS
Once the expansion tree reaches SP(s, t), the detour distance Dd(oi, SP(s, t)) is found
Heuristic expansion: nodes with smaller detour distance lower bound are expanded with priority
Searching phaseVerification phaseMonitoring phase
Monitoring phase:Dynamically refresh the current k-PNN when the user is traveling around
Case 1: the user follows the current shortest pathCase 2: the user deviates from the current shortest path
Following the shortest pathKey point: first we need to figure out some “important points”, at which we need to re-compute the k-PNN
Will the current k-PNN change before s’ passes through n2? When will it change?
d(o2)=|SP(o5, n5)|-|SP(o2, n2)|
Update location of o2
Generally, oi’s update location can be computed byd(oi)=|SP(oi+1, ni+1)|-|SP(oi, ni)|
However, sometimes we need to modify it, for example:
We actually maintain (k+1)-PNN in our algorithmAlways, we compute and store update points for all current k-PNN
When the user arrives at the update point of oi:
Re-compute detour distance of oiRefresh the order of the current (k+1)-PNNIf the kth-PNN is not valid any longer
Re-compute the whole current (k+1)-PNN
Deviating from the shortest pathKey points:
When will the shortest path change?Where are the update points?Who will be the new candidates?
Split point:|(s, f)|= ½(|SP(st, t)-|SP(s, t)|+|(s, st)|)
We only focus on this interval
Two types of data:
For data object oi of type 1:
If oi is in the ith k-PNNoi.updateLoc=pos(s’)+|(s’, oi)|-Dd((i-1)thPNN)
Otherwiseoi.updateLoc=pos(s’)+|(s’, oi)|-Dd(kthPNN)
For data object oi of type 2:
If oi is in the ith k-PNNoi.updateLoc=pos(s’)+|(s’, st)|-Dd((i-1)thPNN)
Otherwiseoi.updateLoc=pos(s’)+|(s’, st)|-Dd(kthPNN)
Each time when we encounter an update point, we refresh the k-PNN
Testing platformJavaWindowsIntel Core2 CPU (2.13GHZ)2GB memory
Data set
California road network
California road network
City of Oldenburg road network
City of Oldenburg road network
Performance of verification
Problem: k-PNNFind the static k-PNNDynamically refresh current k-PNN
Algorithm:Searching phaseVerification phaseMonitoring phase
Experiments
Thanks!