51#include <lal/linear_arrangement.hpp>
52#include <lal/numeric/rational.hpp>
53#include <lal/linarr/D/D.hpp>
54#include <lal/utilities/aggregations.hpp>
85template <
class graph_t>
87(
const std::vector<graph_t>& L,
const std::vector<linear_arrangement>& P = {})
90 static_assert(std::is_base_of_v<graphs::graph, graph_t>);
95 assert(P.size() == 0 or L.size() == P.size());
105 L.begin(), L.end(),
nullptr,
nullptr,
107 [](
const graph_t& G) {
108 return mean_dependency_distance_rational(
110 linear_arrangement::identity(G.get_num_nodes())
114 [](
const ratio& MDD) { return MDD; },
116 [](ratio& total,
const ratio& MDD) { total += MDD; },
118 [](
const ratio& sum_MDD, std::size_t num_graphs) { return sum_MDD/num_graphs; }
125 L.begin(), L.end(), P.begin(), P.end(),
127 [](
const graph_t& G,
const ARR& arr) { return mean_dependency_distance_rational(G, arr); },
129 [](
const ratio& MDD) { return MDD; },
131 [](ratio& sum_MDD,
const ratio& MDD) { sum_MDD += MDD; },
133 [](
const ratio& sum_MDD, std::size_t num_graphs) { return sum_MDD/num_graphs; }
152template <
class graph_t>
154(
const std::vector<graph_t>& L,
const std::vector<linear_arrangement>& P = {})
Linear arrangement of vertices.
Definition linear_arrangement.hpp:103
Exact rational number.
Definition rational.hpp:63
double to_double() const noexcept
Converts this rational to a double-precision floating-point value.
Definition rational.hpp:853
numeric::rational mean_dependency_distance_2level_rational(const std::vector< graph_t > &L, const std::vector< linear_arrangement > &P={}) noexcept
2-level Mean Dependency Distance over an ensemble of graphs.
Definition 2level.hpp:87
double mean_dependency_distance_2level(const std::vector< graph_t > &L, const std::vector< linear_arrangement > &P={}) noexcept
2-level Mean Dependency Distance over an ensemble of graphs.
Definition 2level.hpp:154
result_t two_level_aggregation(iterator_first_t bfirst, const iterator_first_t efirst, iterator_second_t bsecond, const iterator_second_t esecond, metric values, combine comb_values, accumulate acc_values, make_average avg) noexcept
Computation of 2-level aggregation of and .
Definition aggregations.hpp:263
Main namespace of the library.
Definition basic_types.hpp:48