@@ -37,18 +37,12 @@ class bellman_visitor_base {
37
37
38
38
// Visitor Functions
39
39
public:
40
- // vertex visitor functions
41
- // constexpr void on_initialize_vertex(vertex_desc_type&& vdesc) {}
42
- // constexpr void on_discover_vertex(vertex_desc_type&& vdesc) {}
43
- // constexpr void on_examine_vertex(vertex_desc_type&& vdesc) {}
44
- // constexpr void on_finish_vertex(vertex_desc_type&& vdesc) {}
45
-
46
40
// edge visitor functions
47
- constexpr void on_examine_edge (sourced_edge_desc_type& & edesc) {}
48
- constexpr void on_edge_relaxed (sourced_edge_desc_type& & edesc) {}
49
- constexpr void on_edge_not_relaxed (sourced_edge_desc_type& & edesc) {}
50
- constexpr void on_edge_minimized (sourced_edge_desc_type& & edesc) {}
51
- constexpr void on_edge_not_minimized (sourced_edge_desc_type& & edesc) {}
41
+ constexpr void on_examine_edge (const sourced_edge_desc_type& edesc) {}
42
+ constexpr void on_edge_relaxed (const sourced_edge_desc_type& edesc) {}
43
+ constexpr void on_edge_not_relaxed (const sourced_edge_desc_type& edesc) {}
44
+ constexpr void on_edge_minimized (const sourced_edge_desc_type& edesc) {}
45
+ constexpr void on_edge_not_minimized (const sourced_edge_desc_type& edesc) {}
52
46
};
53
47
54
48
template <class G , class Visitor >
@@ -86,10 +80,10 @@ concept bellman_visitor = //is_arithmetic<typename Visitor::distance_type> &&
86
80
*/
87
81
template <index_adjacency_list G, forward_range Predecessors, class OutputIterator >
88
82
requires output_iterator<OutputIterator, vertex_id_t <G>>
89
- void find_negative_cycle (G& g,
90
- const Predecessors& predecessor,
91
- const std:: optional<vertex_id_t <G>>& cycle_vertex_id,
92
- OutputIterator out_cycle) {
83
+ void find_negative_cycle (G& g,
84
+ const Predecessors& predecessor,
85
+ const optional<vertex_id_t <G>>& cycle_vertex_id,
86
+ OutputIterator out_cycle) {
93
87
// Does a negative weight cycle exist?
94
88
if (cycle_vertex_id.has_value ()) {
95
89
vertex_id_t <G> uid = cycle_vertex_id.value ();
@@ -137,7 +131,7 @@ template <index_adjacency_list G,
137
131
input_range Sources,
138
132
random_access_range Distances,
139
133
random_access_range Predecessors,
140
- class WF = std:: function<range_value_t <Distances>(edge_reference_t <G>)>,
134
+ class WF = function<range_value_t <Distances>(edge_reference_t <G>)>,
141
135
class Visitor = bellman_visitor_base<G>,
142
136
class Compare = less<range_value_t <Distances>>,
143
137
class Combine = plus<range_value_t <Distances>>>
@@ -148,7 +142,7 @@ requires convertible_to<range_value_t<Sources>, vertex_id_t<G>> && //
148
142
sized_range<Predecessors> && //
149
143
basic_edge_weight_function<G, WF, range_value_t <Distances>, Compare, Combine>
150
144
// && bellman_visitor<G, Visitor>
151
- [[nodiscard]] std:: optional<vertex_id_t <G>> bellman_ford_shortest_paths (
145
+ [[nodiscard]] optional<vertex_id_t <G>> bellman_ford_shortest_paths (
152
146
G& g,
153
147
const Sources& sources,
154
148
Distances& distances,
@@ -160,7 +154,7 @@ requires convertible_to<range_value_t<Sources>, vertex_id_t<G>> && //
160
154
using id_type = vertex_id_t <G>;
161
155
using DistanceValue = range_value_t <Distances>;
162
156
using weight_type = invoke_result_t <WF, edge_reference_t <G>>;
163
- using return_type = std:: optional<vertex_id_t <G>>;
157
+ using return_type = optional<vertex_id_t <G>>;
164
158
165
159
// relxing the target is the function of reducing the distance from the source to the target
166
160
auto relax_target = [&g, &predecessor, &distances, &compare, &combine] //
@@ -240,7 +234,7 @@ requires convertible_to<range_value_t<Sources>, vertex_id_t<G>> && //
240
234
template <index_adjacency_list G,
241
235
random_access_range Distances,
242
236
random_access_range Predecessors,
243
- class WF = std:: function<range_value_t <Distances>(edge_reference_t <G>)>,
237
+ class WF = function<range_value_t <Distances>(edge_reference_t <G>)>,
244
238
class Visitor = bellman_visitor_base<G>,
245
239
class Compare = less<range_value_t <Distances>>,
246
240
class Combine = plus<range_value_t <Distances>>>
@@ -250,7 +244,7 @@ requires is_arithmetic_v<range_value_t<Distances>> && //
250
244
sized_range<Predecessors> && //
251
245
basic_edge_weight_function<G, WF, range_value_t <Distances>, Compare, Combine>
252
246
// && bellman_visitor<G, Visitor>
253
- [[nodiscard]] std:: optional<vertex_id_t <G>> bellman_ford_shortest_paths (
247
+ [[nodiscard]] optional<vertex_id_t <G>> bellman_ford_shortest_paths (
254
248
G& g,
255
249
const vertex_id_t <G> source,
256
250
Distances& distances,
@@ -265,7 +259,7 @@ requires is_arithmetic_v<range_value_t<Distances>> && //
265
259
266
260
267
261
/* *
268
- * @brief Shortest distnaces from a single source using Bellman-Ford's single-source shortest paths
262
+ * @brief Shortest distances from a single source using Bellman-Ford's single-source shortest paths
269
263
* algorithm with a visitor.
270
264
*
271
265
* This is identical to bellman_ford_shortest_paths() except that it does not require a predecessors range.
@@ -297,7 +291,7 @@ requires is_arithmetic_v<range_value_t<Distances>> && //
297
291
template <index_adjacency_list G,
298
292
input_range Sources,
299
293
random_access_range Distances,
300
- class WF = std:: function<range_value_t <Distances>(edge_reference_t <G>)>,
294
+ class WF = function<range_value_t <Distances>(edge_reference_t <G>)>,
301
295
class Visitor = bellman_visitor_base<G>,
302
296
class Compare = less<range_value_t <Distances>>,
303
297
class Combine = plus<range_value_t <Distances>>>
@@ -306,7 +300,7 @@ requires convertible_to<range_value_t<Sources>, vertex_id_t<G>> && //
306
300
sized_range<Distances> && //
307
301
basic_edge_weight_function<G, WF, range_value_t <Distances>, Compare, Combine>
308
302
// && bellman_visitor<G, Visitor>
309
- [[nodiscard]] std:: optional<vertex_id_t <G>> bellman_ford_shortest_distances (
303
+ [[nodiscard]] optional<vertex_id_t <G>> bellman_ford_shortest_distances (
310
304
G& g,
311
305
const Sources& sources,
312
306
Distances& distances,
@@ -315,21 +309,20 @@ requires convertible_to<range_value_t<Sources>, vertex_id_t<G>> && //
315
309
Compare&& compare = less<range_value_t <Distances>>(),
316
310
Combine&& combine = plus<range_value_t <Distances>>()) {
317
311
return bellman_ford_shortest_paths (g, sources, distances, _null_predecessors, forward<WF>(weight),
318
- std::forward<Visitor>(visitor), std::forward<Compare>(compare),
319
- std::forward<Combine>(combine));
312
+ forward<Visitor>(visitor), forward<Compare>(compare), forward<Combine>(combine));
320
313
}
321
314
322
315
template <index_adjacency_list G,
323
316
random_access_range Distances,
324
- class WF = std:: function<range_value_t <Distances>(edge_reference_t <G>)>,
317
+ class WF = function<range_value_t <Distances>(edge_reference_t <G>)>,
325
318
class Visitor = bellman_visitor_base<G>,
326
319
class Compare = less<range_value_t <Distances>>,
327
320
class Combine = plus<range_value_t <Distances>>>
328
321
requires is_arithmetic_v<range_value_t <Distances>> && //
329
322
sized_range<Distances> && //
330
323
basic_edge_weight_function<G, WF, range_value_t <Distances>, Compare, Combine>
331
324
// && bellman_visitor<G, Visitor>
332
- [[nodiscard]] std:: optional<vertex_id_t <G>> bellman_ford_shortest_distances (
325
+ [[nodiscard]] optional<vertex_id_t <G>> bellman_ford_shortest_distances (
333
326
G& g,
334
327
const vertex_id_t <G> source,
335
328
Distances& distances,
@@ -338,8 +331,8 @@ requires is_arithmetic_v<range_value_t<Distances>> && //
338
331
Compare&& compare = less<range_value_t <Distances>>(),
339
332
Combine&& combine = plus<range_value_t <Distances>>()) {
340
333
return bellman_ford_shortest_paths (g, subrange (&source, (&source + 1 )), distances, _null_predecessors,
341
- forward<WF>(weight), std:: forward<Visitor>(visitor),
342
- std::forward<Compare>(compare), std:: forward<Combine>(combine));
334
+ forward<WF>(weight), forward<Visitor>(visitor), forward<Compare>(compare ),
335
+ forward<Combine>(combine));
343
336
}
344
337
345
338
} // namespace graph
0 commit comments