Monitoring Path Nearest Neighbor in Road Networks
description
Transcript of Monitoring Path Nearest Neighbor in Road Networks
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!