Aleph-w 3.0
A C++ Library for Data Structures and Algorithms
Loading...
Searching...
No Matches
Aleph::blossom_weighted_detail::mwmatching::impl::NonTrivialBlossom< WeightType > Struct Template Reference

Represents a non-trivial blossom (an odd cycle of sub-blossoms). More...

#include <blossom_weighted_mwmatching.H>

Inheritance diagram for Aleph::blossom_weighted_detail::mwmatching::impl::NonTrivialBlossom< WeightType >:
[legend]
Collaboration diagram for Aleph::blossom_weighted_detail::mwmatching::impl::NonTrivialBlossom< WeightType >:
[legend]

Classes

struct  SubBlossom
 

Public Member Functions

 NonTrivialBlossom ()
 
template<class Blossom_Container , class Edge_Container >
 NonTrivialBlossom (const Blossom_Container &subblossoms, const Edge_Container &edges)
 Construct a new non-trivial blossom.
 
VertexId find_subblossom_pos (Blossom< WeightType > *subblossom) const
 
- Public Member Functions inherited from Aleph::blossom_weighted_detail::mwmatching::impl::Blossom< WeightType >
 Blossom ()
 
 Blossom (VertexId base_vertex)
 
NonTrivialBlossom< WeightType > * nontrivial ()
 Safe downcast to NonTrivialBlossom.
 
const NonTrivialBlossom< WeightType > * nontrivial () const
 Safe downcast to NonTrivialBlossom (const version).
 

Public Attributes

DynDlist< SubBlossomsubblossoms
 Ring of sub-blossoms forming this blossom.
 
WeightType dual_var
 Dual variable value for this blossom.
 
DynDlist< const Edge< WeightType > * > best_edge_set
 
- Public Attributes inherited from Aleph::blossom_weighted_detail::mwmatching::impl::Blossom< WeightType >
NonTrivialBlossom< WeightType > * parent
 Parent in the blossom hierarchy, or null if top-level.
 
VertexId base_vertex
 Index of the base vertex (the unmatched vertex in the blossom).
 
BlossomLabel label
 Label S or T if this is part of the current alternating forest.
 
bool is_nontrivial_blossom
 Flag to distinguish between Blossom and NonTrivialBlossom.
 
VertexPair tree_edge
 Tree edge attaching this blossom to its parent in the alternating forest.
 
const Edge< WeightType > * best_edge
 Best edge for dual variable calculation (least slack).
 

Additional Inherited Members

- Protected Member Functions inherited from Aleph::blossom_weighted_detail::mwmatching::impl::Blossom< WeightType >
 Blossom (const VertexId base_vertex, const bool is_nontrivial_blossom)
 

Detailed Description

template<typename WeightType>
struct Aleph::blossom_weighted_detail::mwmatching::impl::NonTrivialBlossom< WeightType >

Represents a non-trivial blossom (an odd cycle of sub-blossoms).

Non-trivial blossoms have associated dual variables in the LPP.

Definition at line 383 of file blossom_weighted_mwmatching.H.

Constructor & Destructor Documentation

◆ NonTrivialBlossom() [1/2]

◆ NonTrivialBlossom() [2/2]

Member Function Documentation

◆ find_subblossom_pos()

Member Data Documentation

◆ best_edge_set

◆ dual_var

◆ subblossoms


The documentation for this struct was generated from the following file: