Don't use stalling in core search
This commit is contained in:
		
							parent
							
								
									78283a0e0e
								
							
						
					
					
						commit
						fd84827e51
					
				| @ -194,12 +194,12 @@ class DirectShortestPathRouting final | |||||||
|             if (!forward_core_heap.Empty()) |             if (!forward_core_heap.Empty()) | ||||||
|             { |             { | ||||||
|                 super::RoutingStep(forward_core_heap, reverse_core_heap, &middle, &distance, |                 super::RoutingStep(forward_core_heap, reverse_core_heap, &middle, &distance, | ||||||
|                                    min_edge_offset, true); |                                    min_edge_offset, true, false); | ||||||
|             } |             } | ||||||
|             if (!reverse_core_heap.Empty()) |             if (!reverse_core_heap.Empty()) | ||||||
|             { |             { | ||||||
|                 super::RoutingStep(reverse_core_heap, forward_core_heap, &middle, &distance, |                 super::RoutingStep(reverse_core_heap, forward_core_heap, &middle, &distance, | ||||||
|                                    min_edge_offset, false); |                                    min_edge_offset, false, false); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -64,7 +64,8 @@ template <class DataFacadeT, class Derived> class BasicRoutingInterface | |||||||
|                      NodeID *middle_node_id, |                      NodeID *middle_node_id, | ||||||
|                      int *upper_bound, |                      int *upper_bound, | ||||||
|                      const int min_edge_offset, |                      const int min_edge_offset, | ||||||
|                      const bool forward_direction) const |                      const bool forward_direction, | ||||||
|  |                      const bool stalling=true) const | ||||||
|     { |     { | ||||||
|         const NodeID node = forward_heap.DeleteMin(); |         const NodeID node = forward_heap.DeleteMin(); | ||||||
|         const int distance = forward_heap.GetKey(node); |         const int distance = forward_heap.GetKey(node); | ||||||
| @ -99,25 +100,28 @@ template <class DataFacadeT, class Derived> class BasicRoutingInterface | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // Stalling
 |         // Stalling
 | ||||||
|         for (const auto edge : facade->GetAdjacentEdgeRange(node)) |         if (stalling) | ||||||
|         { |         { | ||||||
|             const EdgeData &data = facade->GetEdgeData(edge); |           for (const auto edge : facade->GetAdjacentEdgeRange(node)) | ||||||
|             const bool reverse_flag = ((!forward_direction) ? data.forward : data.backward); |           { | ||||||
|             if (reverse_flag) |               const EdgeData &data = facade->GetEdgeData(edge); | ||||||
|             { |               const bool reverse_flag = ((!forward_direction) ? data.forward : data.backward); | ||||||
|                 const NodeID to = facade->GetTarget(edge); |               if (reverse_flag) | ||||||
|                 const int edge_weight = data.distance; |               { | ||||||
|  |                   const NodeID to = facade->GetTarget(edge); | ||||||
|  |                   const int edge_weight = data.distance; | ||||||
| 
 | 
 | ||||||
|                 BOOST_ASSERT_MSG(edge_weight > 0, "edge_weight invalid"); |                   BOOST_ASSERT_MSG(edge_weight > 0, "edge_weight invalid"); | ||||||
| 
 | 
 | ||||||
|                 if (forward_heap.WasInserted(to)) |                   if (forward_heap.WasInserted(to)) | ||||||
|                 { |                   { | ||||||
|                     if (forward_heap.GetKey(to) + edge_weight < distance) |                       if (forward_heap.GetKey(to) + edge_weight < distance) | ||||||
|                     { |                       { | ||||||
|                         return; |                           return; | ||||||
|                     } |                       } | ||||||
|                 } |                   } | ||||||
|             } |               } | ||||||
|  |           } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         for (const auto edge : facade->GetAdjacentEdgeRange(node)) |         for (const auto edge : facade->GetAdjacentEdgeRange(node)) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user