The class for solving the Bounded Degree MST problem using Iterative Rounding. More...
#include <bounded_degree_mst.hpp>
Public Types | |
using | Edge = typename boost::graph_traits< Graph >::edge_descriptor |
using | Vertex = typename boost::graph_traits< Graph >::vertex_descriptor |
using | EdgeMap = boost::bimap< Edge, lp::col_id > |
using | VertexMap = std::unordered_map< lp::row_id, Vertex > |
using | EdgeMapOriginal = std::vector< std::pair< lp::col_id, Edge >> |
using | ErrorMessage = boost::optional< std::string > |
Public Member Functions | |
bounded_degree_mst (const Graph &g, const DegreeBounds °_bounds, CostMap cost_map, VertexIndex index, SpanningTreeOutputIterator result_spanning_tree, Oracle oracle=Oracle{}) | |
ErrorMessage | check_input_validity () |
template<typename LP > | |
auto | get_find_violation (LP &lp) |
const Graph & | get_graph () const |
const VertexIndex & | get_index () const |
void | remove_column (lp::col_id col_id) |
void | bind_edge_to_col (Edge e, lp::col_id col) |
decltype(get(std::declval < CostMap >(), std::declval < Edge >())) | get_cost (Edge e) |
decltype(std::declval < DegreeBounds >()(get(std::declval < VertexIndex > (), std::declval< Vertex >()))) | get_degree_bound (Vertex v) |
boost::optional< lp::col_id > | edge_to_col (Edge e) const |
const EdgeMap & | get_edge_map () const |
const EdgeMapOriginal & | get_original_edges_map () const |
void | add_to_result_spanning_tree (Edge e) |
utils::compare< double > | get_compare () const |
void | bind_vertex_to_row (Vertex v, lp::row_id row) |
void | remove_row (lp::row_id row_id) |
boost::optional< Vertex > | row_to_vertex (lp::row_id row) |
The class for solving the Bounded Degree MST problem using Iterative Rounding.
Graph | input graph |
DegreeBounds | map from Graph vertices to degree bounds |
CostMap | map from Graph edges to costs |
VertexIndex | map from Graph vertices to indices |
SpanningTreeOutputIterator | |
Oracle | separation oracle |
Definition at line 54 of file bounded_degree_mst.hpp.
|
inline |
Constructor.
Definition at line 59 of file bounded_degree_mst.hpp.
|
inline |
Adds an edge to the result spanning tree.
Definition at line 181 of file bounded_degree_mst.hpp.
|
inline |
Binds a graph edge to a LP column.
Definition at line 130 of file bounded_degree_mst.hpp.
|
inline |
Binds a graph vertex to an LP row.
Definition at line 196 of file bounded_degree_mst.hpp.
|
inline |
Checks if the input graph is connected.
Definition at line 81 of file bounded_degree_mst.hpp.
|
inline |
Returns the LP column corresponding to an edge, if it wasn't deleted from the LP.
Definition at line 157 of file bounded_degree_mst.hpp.
|
inline |
Returns the double comparison object.
Definition at line 189 of file bounded_degree_mst.hpp.
|
inline |
Returns the cost of a given edge.
Definition at line 140 of file bounded_degree_mst.hpp.
|
inline |
Returns the degree bound of a vertex.
Definition at line 149 of file bounded_degree_mst.hpp.
|
inline |
Returns a bimap between edges and LP column IDs.
Definition at line 169 of file bounded_degree_mst.hpp.
|
inline |
|
inline |
Returns the input graph.
Definition at line 112 of file bounded_degree_mst.hpp.
|
inline |
Returns the vertex index.
Definition at line 117 of file bounded_degree_mst.hpp.
|
inline |
Returns a mapping between LP column IDs and edges in the original graph.
Definition at line 174 of file bounded_degree_mst.hpp.
|
inline |
Removes an LP column and the graph edge corresponding to it.
Definition at line 122 of file bounded_degree_mst.hpp.
|
inline |
Unbinds the graph vertex from its corresponding (deleted) LP row.
Definition at line 203 of file bounded_degree_mst.hpp.
|
inline |
Returns the graph vertex corresponding to a given LP row, unless the row doen't correspond to any vertex.
Definition at line 212 of file bounded_degree_mst.hpp.