Eclipse SUMO - Simulation of Urban MObility
Loading...
Searching...
No Matches
customizable_contraction_hierarchy.h
Go to the documentation of this file.
1#ifndef ROUTING_KIT_CUSTOMIZABLE_CONSTRACTION_HIERARCHY_H
2#define ROUTING_KIT_CUSTOMIZABLE_CONSTRACTION_HIERARCHY_H
3
8
9#include <vector>
10#include <string>
11#include <functional>
12
13namespace RoutingKit{
14
15class ContractionHierarchy;
16
19
20 CustomizableContractionHierarchy(std::vector<unsigned>order, std::vector<unsigned>tail, std::vector<unsigned>head, std::function<void(const std::string&)>log_message = [](const std::string&){}, bool filter_always_inf_arcs = false);
21
22 unsigned node_count()const{
23 return rank.size();
24 }
25
26 unsigned input_arc_count() const {
27 return input_arc_to_cch_arc.size();
28 }
29
30 unsigned cch_arc_count() const {
31 return up_head.size();
32 }
33
34// private:
35 std::vector<unsigned>order;
36 std::vector<unsigned>rank;
37
38 std::vector<unsigned>elimination_tree_parent;
39
40 std::vector<unsigned>up_first_out;
41 std::vector<unsigned>up_head;
42 std::vector<unsigned>up_tail;
43
44 std::vector<unsigned>down_first_out;
45 std::vector<unsigned>down_head;
46 std::vector<unsigned>down_to_up;
47
48 std::vector<unsigned>input_arc_to_cch_arc;
50
53
54 std::vector<unsigned>forward_input_arc_of_cch;
55 std::vector<unsigned>backward_input_arc_of_cch;
56
59
62
63 std::vector<unsigned>extra_forward_input_arc_of_cch;
64 std::vector<unsigned>extra_backward_input_arc_of_cch;
65};
66
89
109
124
128
131
132 CustomizableContractionHierarchyQuery&add_source(unsigned s, unsigned dist_to_s = 0);
133 CustomizableContractionHierarchyQuery&add_target(unsigned t, unsigned dist_to_t = 0);
134
136
137 unsigned get_used_source();
138 unsigned get_used_target();
139
140 unsigned get_distance();
141 std::vector<unsigned> get_node_path();
142 std::vector<unsigned> get_arc_path();
143
144 // One-To-Many
146 CustomizableContractionHierarchyQuery& pin_targets(const std::vector<unsigned>&);
148
150 std::vector<unsigned> get_distances_to_targets();
151
152 // Many-To-One
154 CustomizableContractionHierarchyQuery& pin_sources(const std::vector<unsigned>&);
156
158 std::vector<unsigned> get_distances_to_sources();
159
160// private:
162 std::vector<unsigned>source_node;
163 std::vector<unsigned>source_elimination_tree_end;
164 std::vector<unsigned>target_node;
165 std::vector<unsigned>target_elimination_tree_end;
166
168
170
172
175 unsigned state;
176};
177
178} // namespace RoutingKit
179
180#endif
std::vector< unsigned > tail
CustomizableContractionHierarchyMetric * metric
CustomizableContractionHierarchyMetric & reset(const CustomizableContractionHierarchy &cch, const unsigned *input_weight)
CustomizableContractionHierarchyParallelization & reset(const CustomizableContractionHierarchy &cch)
CustomizableContractionHierarchyParallelization & customize(CustomizableContractionHierarchyMetric &metric)
CustomizableContractionHierarchyPartialCustomization & customize(CustomizableContractionHierarchyMetric &metric)
CustomizableContractionHierarchyPartialCustomization & update_arc(unsigned xy)
CustomizableContractionHierarchyQuery & pin_targets(const std::vector< unsigned > &)
CustomizableContractionHierarchyQuery & pin_sources(const std::vector< unsigned > &)
CustomizableContractionHierarchyQuery & add_source(unsigned s, unsigned dist_to_s=0)
CustomizableContractionHierarchyQuery & add_target(unsigned t, unsigned dist_to_t=0)