g2o
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
g2o::BackBoneTreeAction Struct Reference

#include <backbone_tree_action.h>

Inheritance diagram for g2o::BackBoneTreeAction:
Inheritance graph
[legend]
Collaboration diagram for g2o::BackBoneTreeAction:
Collaboration graph
[legend]

Public Member Functions

 BackBoneTreeAction (SparseOptimizer *optimizer, const std::string &vertexTag, int level, int step)
 
void init ()
 initializes the visit and clears the internal structures
 
VertexStarMapvertexStarMap ()
 map vertex->star. Contains the most recent vertex assignment
 
VertexStarMultimapvertexStarMultiMap ()
 multimap vertex->star. Contains all the vertex assignments to all stars
 
HyperGraph::EdgeSetfreeEdges ()
 edges that are not yet assigned to any star
 
virtual double perform (HyperGraph::Vertex *v, HyperGraph::Vertex *vParent, HyperGraph::Edge *e, double distance)
 
- Public Member Functions inherited from g2o::HyperDijkstra::TreeAction
virtual double perform (HyperGraph::Vertex *v, HyperGraph::Vertex *vParent, HyperGraph::Edge *e)
 

Protected Member Functions

void addToMap (Star *s, HyperGraph::Vertex *v)
 
StargetStar (HyperGraph::Vertex *v)
 
bool fillStar (Star *s, HyperGraph::Edge *e_)
 helper function that adds to a star an edge and all its vertices
 

Protected Attributes

SparseOptimizer_optimizer
 
std::string _vertexTag
 
int _level
 
int _step
 
VertexStarMap _vsMap
 
VertexStarMultimap _vsMmap
 
HyperGraph::EdgeSet _freeEdges
 
Factory_factory
 

Detailed Description

Dijkstra traversal action that constructs a backbone skeleton on the graph. It assumes that the traversal contains only edges and vertices belonging to classes that can be used to construct a backbone. After a visit is invoked, it returns vector of stars to which the backbone nodes have been assigned

Definition at line 47 of file backbone_tree_action.h.

Constructor & Destructor Documentation

◆ BackBoneTreeAction()

g2o::BackBoneTreeAction::BackBoneTreeAction ( SparseOptimizer optimizer,
const std::string &  vertexTag,
int  level,
int  step 
)

creates a tree action for constructing the backbone

Parameters
optimizerthe optimizer on which the stars are constructed
vertexTagthe tag of the vertices to use as backbone nodes
levelthe level of the lowLevelEdges of the stars in the backbone
stepdepth in tree after which a new star is initialized

Definition at line 37 of file backbone_tree_action.cpp.

40 : _optimizer(optimizer), _vertexTag(vertexTag), _level(level), _step(step) {
42 init();
43}
static Factory * instance()
return the instance
Definition factory.cpp:46
yylloc step()
void init()
initializes the visit and clears the internal structures

References _factory, init(), and g2o::Factory::instance().

Member Function Documentation

◆ addToMap()

void g2o::BackBoneTreeAction::addToMap ( Star s,
HyperGraph::Vertex v 
)
protected

helper function for adding a vertex to a star. If the vertex is already in _vertexToEdgeMap it replaces the associated star. _vertexStarMultimap is only augmented, thus it contains all associations

Parameters
sthe star
vthe vertex

Definition at line 81 of file backbone_tree_action.cpp.

81 {
82 OptimizableGraph::Vertex* v = (OptimizableGraph::Vertex*)v_;
83 VertexStarMap::iterator it = _vsMap.find(v);
84 if (it != _vsMap.end())
85 it->second = s;
86 else
87 _vsMap.insert(make_pair(v, s));
88 _vsMmap.insert(make_pair(v, s));
89 s->_lowLevelVertices.insert(v);
90}

References g2o::Star::_lowLevelVertices, _vsMap, and _vsMmap.

Referenced by perform().

◆ fillStar()

bool g2o::BackBoneTreeAction::fillStar ( Star s,
HyperGraph::Edge e_ 
)
protected

helper function that adds to a star an edge and all its vertices

Definition at line 99 of file backbone_tree_action.cpp.

99 {
100 OptimizableGraph::Edge* e = (OptimizableGraph::Edge*)e_;
101 HyperGraph::EdgeSet::iterator it = _freeEdges.find(e);
102 if (it != _freeEdges.end()) {
103 _freeEdges.erase(it);
104 s->_lowLevelEdges.insert(e);
105 for (size_t i = 0; i < e->vertices().size(); i++) {
106 s->_lowLevelVertices.insert(e->vertices()[i]);
107 }
108 return true;
109 }
110 return false;
111}
HyperGraph::EdgeSet _freeEdges

References _freeEdges, g2o::Star::_lowLevelEdges, g2o::Star::_lowLevelVertices, and g2o::HyperGraph::Edge::vertices().

Referenced by perform().

◆ freeEdges()

HyperGraph::EdgeSet & g2o::BackBoneTreeAction::freeEdges ( )
inline

edges that are not yet assigned to any star

Definition at line 66 of file backbone_tree_action.h.

66{ return _freeEdges; }

References _freeEdges.

Referenced by g2o::computeSimpleStars().

◆ getStar()

Star * g2o::BackBoneTreeAction::getStar ( HyperGraph::Vertex v)
protected

helper function to retrieve the most recent star of a vertex.

Parameters
vthe vertex

Definition at line 92 of file backbone_tree_action.cpp.

92 {
93 OptimizableGraph::Vertex* v = (OptimizableGraph::Vertex*)v_;
94 VertexStarMap::iterator it = _vsMap.find(v);
95 if (it == _vsMap.end()) return 0;
96 return it->second;
97}

References _vsMap.

Referenced by perform().

◆ init()

void g2o::BackBoneTreeAction::init ( )

initializes the visit and clears the internal structures

Definition at line 45 of file backbone_tree_action.cpp.

45 {
46 _vsMap.clear();
47 _vsMmap.clear();
48 _freeEdges.clear();
49 for (HyperGraph::EdgeSet::iterator it = _optimizer->edges().begin();
50 it != _optimizer->edges().end(); ++it) {
51 OptimizableGraph::Edge* e = (OptimizableGraph::Edge*)(*it);
52 if (e->level() == _level) {
53 _freeEdges.insert(e);
54 }
55 }
56}
const EdgeSet & edges() const

References _freeEdges, _level, _optimizer, _vsMap, _vsMmap, g2o::HyperGraph::edges(), and g2o::OptimizableGraph::Edge::level().

Referenced by BackBoneTreeAction(), and g2o::computeSimpleStars().

◆ perform()

double g2o::BackBoneTreeAction::perform ( HyperGraph::Vertex v,
HyperGraph::Vertex vParent,
HyperGraph::Edge e,
double  distance 
)
virtual

action to be performed during the descent of the dijkstra tree. it constructs stars according to the dijkstra tree A new star is created every time the depth increases of _step.

Parameters
vthe vertex
vParentthe parent vertex
ethe edge between v and its parent
distancethe depth in the tree

Reimplemented from g2o::HyperDijkstra::TreeAction.

Definition at line 58 of file backbone_tree_action.cpp.

60 {
61 int depth = (int)distance;
62 if (_factory->tag(v) != _vertexTag) return 0;
63 Star* parentStar = getStar(vParent);
64 if (!parentStar) {
65 parentStar = new Star(_level + 1, _optimizer);
66 addToMap(parentStar, vParent);
67 parentStar->_gauge.insert(vParent);
68 }
69 addToMap(parentStar, v);
70 fillStar(parentStar, e);
71
72 // every _step levels you go down in the tree, create a new star
73 if (depth && !(depth % _step)) {
74 Star* star = new Star(_level + 1, _optimizer);
75 addToMap(star, v);
76 star->_gauge.insert(v);
77 }
78 return 1;
79}
const std::string & tag(const HyperGraph::HyperGraphElement *v) const
return the TAG given a vertex
Definition factory.cpp:138
Star * getStar(HyperGraph::Vertex *v)
bool fillStar(Star *s, HyperGraph::Edge *e_)
helper function that adds to a star an edge and all its vertices
void addToMap(Star *s, HyperGraph::Vertex *v)

References _factory, g2o::Star::_gauge, _level, _optimizer, _step, _vertexTag, addToMap(), fillStar(), getStar(), and g2o::Factory::tag().

◆ vertexStarMap()

VertexStarMap & g2o::BackBoneTreeAction::vertexStarMap ( )
inline

map vertex->star. Contains the most recent vertex assignment

Definition at line 62 of file backbone_tree_action.h.

62{ return _vsMap; }

References _vsMap.

◆ vertexStarMultiMap()

VertexStarMultimap & g2o::BackBoneTreeAction::vertexStarMultiMap ( )
inline

multimap vertex->star. Contains all the vertex assignments to all stars

Definition at line 64 of file backbone_tree_action.h.

64{ return _vsMmap; }

References _vsMmap.

Referenced by g2o::computeSimpleStars().

Member Data Documentation

◆ _factory

Factory* g2o::BackBoneTreeAction::_factory
protected

Definition at line 104 of file backbone_tree_action.h.

Referenced by BackBoneTreeAction(), and perform().

◆ _freeEdges

HyperGraph::EdgeSet g2o::BackBoneTreeAction::_freeEdges
protected

Definition at line 103 of file backbone_tree_action.h.

Referenced by fillStar(), freeEdges(), and init().

◆ _level

int g2o::BackBoneTreeAction::_level
protected

Definition at line 98 of file backbone_tree_action.h.

Referenced by init(), and perform().

◆ _optimizer

SparseOptimizer* g2o::BackBoneTreeAction::_optimizer
protected

Definition at line 96 of file backbone_tree_action.h.

Referenced by init(), and perform().

◆ _step

int g2o::BackBoneTreeAction::_step
protected

Definition at line 99 of file backbone_tree_action.h.

Referenced by perform().

◆ _vertexTag

std::string g2o::BackBoneTreeAction::_vertexTag
protected

Definition at line 97 of file backbone_tree_action.h.

Referenced by perform().

◆ _vsMap

VertexStarMap g2o::BackBoneTreeAction::_vsMap
protected

Definition at line 101 of file backbone_tree_action.h.

Referenced by addToMap(), getStar(), init(), and vertexStarMap().

◆ _vsMmap

VertexStarMultimap g2o::BackBoneTreeAction::_vsMmap
protected

Definition at line 102 of file backbone_tree_action.h.

Referenced by addToMap(), init(), and vertexStarMultiMap().


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