59 virtual bool buildStructure(
bool zeroBlocks =
false) = 0;
63 virtual bool updateStructure(
const std::vector<HyperGraph::Vertex*>& vset,
const HyperGraph::EdgeSet& edges) = 0;
67 virtual bool buildSystem() = 0;
72 virtual bool solve() = 0;
88 virtual bool setLambda(
double lambda,
bool backup =
false) = 0;
93 virtual void restoreDiagonal() = 0;
96 double*
x() {
return _x;}
97 const double*
x()
const {
return _x;}
99 double*
b() {
return _b;}
100 const double*
b()
const {
return _b;}
111 void setLevenberg(
bool levenberg);
120 virtual bool schur()=0;
121 virtual void setSchur(
bool s)=0;
124 void setAdditionalVectorSpace(
size_t s);
129 virtual void setWriteDebug(
bool) = 0;
130 virtual bool writeDebug()
const = 0;
133 virtual bool saveHessian(
const std::string& )
const = 0;
143 void resizeVector(
size_t sx);
SparseOptimizer * _optimizer
bool levenberg() const
the system is Levenberg-Marquardt
std::set< Edge * > EdgeSet
class G2O_CORE_API SparseOptimizer
virtual bool supportsSchur()
Generic interface for a sparse solver operating on a graph which solves one iteration of the lineariz...
size_t _additionalVectorSpace
SparseOptimizer * optimizer() const
the optimizer (graph) on which the solver works
bool _isLevenberg
the system we gonna solve is a Levenberg-Marquardt system
double * x()
return x, the solution vector
double * b()
return b, the right hand side of the system
size_t vectorSize() const
return the size of the solution vector (x) and b
size_t additionalVectorSpace() const
Sparse matrix which uses blocks.