Address PR comments

This commit is contained in:
Patrick Niklaus
2015-12-08 03:16:07 +01:00
parent f2ee0aad20
commit 20c45be3b3
6 changed files with 120 additions and 99 deletions
+6 -6
View File
@@ -67,10 +67,10 @@ class ManyToManyRouting final
~ManyToManyRouting() {}
std::shared_ptr<std::vector<EdgeWeight>>
operator()(const PhantomNodeArray &phantom_targets_array, const PhantomNodeArray &phantom_sources_array = PhantomNodeArray(0)) const
operator()(const PhantomNodeArray &phantom_sources_array, const PhantomNodeArray &phantom_targets_array) const
{
const auto number_of_sources = phantom_sources_array.size();
const auto number_of_targets = phantom_targets_array.size();
const auto number_of_sources = (phantom_sources_array.size()) ? phantom_sources_array.size() : number_of_targets;
std::shared_ptr<std::vector<EdgeWeight>> result_table =
std::make_shared<std::vector<EdgeWeight>>(number_of_targets * number_of_sources,
std::numeric_limits<EdgeWeight>::max());
@@ -114,7 +114,7 @@ class ManyToManyRouting final
// for each source do forward search
unsigned source_id = 0;
for (const std::vector<PhantomNode> &phantom_node_vector : (phantom_sources_array.size() ? phantom_sources_array : phantom_targets_array))
for (const std::vector<PhantomNode> &phantom_node_vector : phantom_sources_array)
{
query_heap.Clear();
for (const PhantomNode &phantom_node : phantom_node_vector)
@@ -148,7 +148,7 @@ class ManyToManyRouting final
}
void ForwardRoutingStep(const unsigned source_id,
const unsigned number_of_locations,
const unsigned number_of_targets,
QueryHeap &query_heap,
const SearchSpaceWithBuckets &search_space_with_buckets,
std::shared_ptr<std::vector<EdgeWeight>> result_table) const
@@ -168,12 +168,12 @@ class ManyToManyRouting final
const unsigned target_id = current_bucket.target_id;
const int target_distance = current_bucket.distance;
const EdgeWeight current_distance =
(*result_table)[source_id * number_of_locations + target_id];
(*result_table)[source_id * number_of_targets + target_id];
// check if new distance is better
const EdgeWeight new_distance = source_distance + target_distance;
if (new_distance >= 0 && new_distance < current_distance)
{
(*result_table)[source_id * number_of_locations + target_id] =
(*result_table)[source_id * number_of_targets + target_id] =
(source_distance + target_distance);
}
}