1. A method of routing data through a network having a plurality of nodes interconnected by a plurality of links represented by a graph, the method comprising the steps of: (a) receiving a path request for routing the data between a source node and a destination node in the network based on a demand; (b) reversing the links in the graph to generate paths from the destination node to nodes along reverse paths to the source node; (c) performing shortest-path computations for portions of the reverse paths to generate weights for potential active-path links, wherein each weight of a link in a reverse path is based on a number of reverse paths in which the link is included; and (d) repeating the shortest-path computations of step (c) for the graph from the destination to the source using the weighted links to generate an active path satisfying the path request, wherein each link in the active path has a defined back-up path.