Merge pull request #1481 from Project-OSRM/fix/no-big-cc-pruning
Only activate pruning for big cc after one was found
This commit is contained in:
		
						commit
						8b8188710e
					
				| @ -651,6 +651,9 @@ class StaticRTree | |||||||
|         unsigned inspected_elements = 0; |         unsigned inspected_elements = 0; | ||||||
|         unsigned number_of_elements_from_big_cc = 0; |         unsigned number_of_elements_from_big_cc = 0; | ||||||
|         unsigned number_of_elements_from_tiny_cc = 0; |         unsigned number_of_elements_from_tiny_cc = 0; | ||||||
|  |         // is true if a big cc was added to the queue to we also have a lower bound
 | ||||||
|  |         // for them. it actives pruning for big components
 | ||||||
|  |         bool has_big_cc = false; | ||||||
| 
 | 
 | ||||||
| #ifdef NDEBUG | #ifdef NDEBUG | ||||||
|         unsigned pruned_elements = 0; |         unsigned pruned_elements = 0; | ||||||
| @ -697,10 +700,11 @@ class StaticRTree | |||||||
|                         BOOST_ASSERT(0.f <= current_perpendicular_distance); |                         BOOST_ASSERT(0.f <= current_perpendicular_distance); | ||||||
| 
 | 
 | ||||||
|                         if (pruning_bound.get() >= current_perpendicular_distance || |                         if (pruning_bound.get() >= current_perpendicular_distance || | ||||||
|                             current_edge.is_in_tiny_cc()) |                             (!has_big_cc && !current_edge.is_in_tiny_cc())) | ||||||
|                         { |                         { | ||||||
|                             pruning_bound.insert(current_perpendicular_distance); |                             pruning_bound.insert(current_perpendicular_distance); | ||||||
|                             traversal_queue.emplace(current_perpendicular_distance, current_edge); |                             traversal_queue.emplace(current_perpendicular_distance, current_edge); | ||||||
|  |                             has_big_cc = has_big_cc || !current_edge.is_in_tiny_cc(); | ||||||
|                         } |                         } | ||||||
| #ifdef NDEBUG | #ifdef NDEBUG | ||||||
|                         else |                         else | ||||||
| @ -812,6 +816,10 @@ class StaticRTree | |||||||
|         unsigned number_of_elements_from_big_cc = 0; |         unsigned number_of_elements_from_big_cc = 0; | ||||||
|         unsigned number_of_elements_from_tiny_cc = 0; |         unsigned number_of_elements_from_tiny_cc = 0; | ||||||
| 
 | 
 | ||||||
|  |         // is true if a big cc was added to the queue to we also have a lower bound
 | ||||||
|  |         // for them. it actives pruning for big components
 | ||||||
|  |         bool has_big_cc = false; | ||||||
|  | 
 | ||||||
|         unsigned pruned_elements = 0; |         unsigned pruned_elements = 0; | ||||||
| 
 | 
 | ||||||
|         std::pair<double, double> projected_coordinate = { |         std::pair<double, double> projected_coordinate = { | ||||||
| @ -852,10 +860,11 @@ class StaticRTree | |||||||
|                         BOOST_ASSERT(0.f <= current_perpendicular_distance); |                         BOOST_ASSERT(0.f <= current_perpendicular_distance); | ||||||
| 
 | 
 | ||||||
|                         if (pruning_bound.get() >= current_perpendicular_distance || |                         if (pruning_bound.get() >= current_perpendicular_distance || | ||||||
|                             current_edge.is_in_tiny_cc()) |                             (!has_big_cc && !current_edge.is_in_tiny_cc())) | ||||||
|                         { |                         { | ||||||
|                             pruning_bound.insert(current_perpendicular_distance); |                             pruning_bound.insert(current_perpendicular_distance); | ||||||
|                             traversal_queue.emplace(current_perpendicular_distance, current_edge); |                             traversal_queue.emplace(current_perpendicular_distance, current_edge); | ||||||
|  |                             has_big_cc = has_big_cc || !current_edge.is_in_tiny_cc(); | ||||||
|                         } |                         } | ||||||
|                         else |                         else | ||||||
|                         { |                         { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user