Research Article

An Efficient Algorithm for Maximizing Range Sum Queries in a Road Network

Algorithm 1

generateSegments( , , ).
Input   : adjacency list flat file, : facilities flat file , : network radius
(1)    Initialize the list finishedEdges
(2)    for each facility in flat file do
(3)     startN = getNode( .startId)
(4)     endN = getNode( .endId)
(5)     edge =
(6)     finishedEdges.add(edge)
(7)     create a new node fN at facility location
(8)     if  ( .offset ≥   ) then
(9)      create new node nN between fN and startN, dist(fN, nN) =
(10)   newS = new segment(fN, nN, .weight, .Id)
(11)   insertSegment(edge, newS)
(12)  else
(13)   newS = new segment(fN, startN, .weight, .Id)
(14)   insertSegment(edge, newS)
(15)   recursiveGenerateSegs(startN, endN, .offset, )
(16)  end if
(17)  endOff = edge.length − .offset
(18)  if  (endOff ≥ ) then
(19)   create new node nN between fN and endN, dist(fN, nN) = endOff
(20)   newS = new segment(fN, nN, .weight, .Id)
(21)   insertSegment(edge, newS)
(22)  else
(23)   newS = new segment(fN, endN, .weight, .Id)
(24)   insertSegment(edge, newS)
(25)   recursiveGenerateSegs(endN, startN, − endOff, )
(26)  end if
(27)  finishedEdges.clear()
(28) end for