Research Article

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

Algorithm 2

recursiveGenerateSegs(curN, oldN, newR, ).
Input curN: the node (vertex) will be processed, oldN: the node has been already processed,
newR: new network radius from this node, f: the original facility
(1)   neighList = curN.getNeighborList()/oldN
(2)   for each neighN in neighList do
(3)    edge =
(4)    if  (edge not in finishedEdges) then
(5)     if  (edge.length ≥ newR) then
(6)      create new node nN between curN and neighN, dist(curN, nN) = newR
(7)      newS = new segment(curN, nN, .weight, .Id)
(8)      insertSegment(edge, newS)
(9)     else
(10)    finishedEdge.add(edge)
(11)    newS = new segment(curN, neighN, .weight, .Id)
(12)    insertSegment(edge, news)
(13)    recursiveGenerateSegs(neighNode, curN, newR − edge.length, )
(14)   end if
(15)  else
(16)   if  (newR − edge.length > 0) then
(17)    recursiveGenerateSegs(neighNode, curN, newR − edge.length, )
(18)   end if
(19)  end if
(20) end for