parent
708b47938d
commit
d0936dc7fd
@ -255,7 +255,8 @@ void routingStep(const DataFacade<Algorithm> &facade,
|
|||||||
auto reverse_weight = reverse_heap.GetKey(node);
|
auto reverse_weight = reverse_heap.GetKey(node);
|
||||||
auto path_weight = weight + reverse_weight;
|
auto path_weight = weight + reverse_weight;
|
||||||
|
|
||||||
// if loops are forced, they are so at the source
|
// MLD uses loops forcing only to prune single node paths in forward and/or
|
||||||
|
// backward direction (there is no need to force loops in MLD but in CH)
|
||||||
if (!(force_loop_forward && forward_heap.GetData(node).parent == node) &&
|
if (!(force_loop_forward && forward_heap.GetData(node).parent == node) &&
|
||||||
!(force_loop_reverse && reverse_heap.GetData(node).parent == node) &&
|
!(force_loop_reverse && reverse_heap.GetData(node).parent == node) &&
|
||||||
(path_weight >= 0) && (path_weight < path_upper_bound))
|
(path_weight >= 0) && (path_weight < path_upper_bound))
|
||||||
|
@ -456,9 +456,6 @@ void unpackPackedPaths(InputIt first,
|
|||||||
util::static_assert_iter_category<OutIt, std::output_iterator_tag>();
|
util::static_assert_iter_category<OutIt, std::output_iterator_tag>();
|
||||||
util::static_assert_iter_value<InputIt, WeightedViaNodePackedPath>();
|
util::static_assert_iter_value<InputIt, WeightedViaNodePackedPath>();
|
||||||
|
|
||||||
const bool force_loop_forward = needsLoopForward(phantom_node_pair);
|
|
||||||
const bool force_loop_backward = needsLoopBackwards(phantom_node_pair);
|
|
||||||
|
|
||||||
const Partition &partition = facade.GetMultiLevelPartition();
|
const Partition &partition = facade.GetMultiLevelPartition();
|
||||||
|
|
||||||
Heap &forward_heap = *search_engine_data.forward_heap_1;
|
Heap &forward_heap = *search_engine_data.forward_heap_1;
|
||||||
@ -530,8 +527,8 @@ void unpackPackedPaths(InputIt first,
|
|||||||
facade,
|
facade,
|
||||||
forward_heap,
|
forward_heap,
|
||||||
reverse_heap,
|
reverse_heap,
|
||||||
force_loop_forward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
force_loop_backward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
INVALID_EDGE_WEIGHT,
|
INVALID_EDGE_WEIGHT,
|
||||||
sublevel,
|
sublevel,
|
||||||
parent_cell_id);
|
parent_cell_id);
|
||||||
@ -587,9 +584,6 @@ makeCandidateVias(SearchEngineData<Algorithm> &search_engine_data,
|
|||||||
// we're over factor * weight. We have to set the weight for routingStep to INVALID_EDGE_WEIGHT
|
// we're over factor * weight. We have to set the weight for routingStep to INVALID_EDGE_WEIGHT
|
||||||
// so that stepping will continue even after we reached the shortest path upper bound.
|
// so that stepping will continue even after we reached the shortest path upper bound.
|
||||||
|
|
||||||
const bool force_loop_forward = needsLoopForward(phantom_node_pair);
|
|
||||||
const bool force_loop_backward = needsLoopBackwards(phantom_node_pair);
|
|
||||||
|
|
||||||
EdgeWeight forward_heap_min = forward_heap.MinKey();
|
EdgeWeight forward_heap_min = forward_heap.MinKey();
|
||||||
EdgeWeight reverse_heap_min = reverse_heap.MinKey();
|
EdgeWeight reverse_heap_min = reverse_heap.MinKey();
|
||||||
|
|
||||||
@ -615,8 +609,8 @@ makeCandidateVias(SearchEngineData<Algorithm> &search_engine_data,
|
|||||||
reverse_heap,
|
reverse_heap,
|
||||||
overlap_via,
|
overlap_via,
|
||||||
overlap_weight,
|
overlap_weight,
|
||||||
force_loop_forward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
force_loop_backward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
phantom_node_pair);
|
phantom_node_pair);
|
||||||
|
|
||||||
if (!forward_heap.Empty())
|
if (!forward_heap.Empty())
|
||||||
@ -641,8 +635,8 @@ makeCandidateVias(SearchEngineData<Algorithm> &search_engine_data,
|
|||||||
forward_heap,
|
forward_heap,
|
||||||
overlap_via,
|
overlap_via,
|
||||||
overlap_weight,
|
overlap_weight,
|
||||||
force_loop_forward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
force_loop_backward,
|
DO_NOT_FORCE_LOOPS,
|
||||||
phantom_node_pair);
|
phantom_node_pair);
|
||||||
|
|
||||||
if (!reverse_heap.Empty())
|
if (!reverse_heap.Empty())
|
||||||
|
Loading…
Reference in New Issue
Block a user