Monitoring Path Nearest Neighbor in Road Networks

Post on 08-Jan-2016

49 views 1 download

description

Monitoring Path Nearest Neighbor in Road Networks. Zaiben Chen et al. Presented by Lian Liu. INTRODUCTION. You’re traveling from s to t . Which gas station would you choose?. PROBLEM DEFINITION. Problem modeling Road networks  a weighted undirected graph G(V, E) - PowerPoint PPT Presentation

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!