Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
StateEliminator.cpp
Go to the documentation of this file.
2
7
8namespace storm {
9namespace solver {
10namespace stateelimination {
11
12template<typename ValueType>
15 : EliminatorBase<ValueType, ScalingMode::DivideOneMinus>(transitionMatrix, backwardTransitions) {
16 // Intentionally left empty.
17}
18
19template<typename ValueType>
21 STORM_LOG_TRACE("Eliminating state " << state << ".");
22 if (this->matrix.hasTrivialRowGrouping()) {
23 this->eliminate(state, state, removeForwardTransitions);
24 } else {
25 STORM_LOG_THROW(this->matrix.getRowGroupSize(state) == 1, storm::exceptions::IllegalArgumentException,
26 "Invoked state elimination on a state with multiple choices. This is not supported.");
27 this->eliminate(this->matrix.getRowGroupIndices()[state], state, removeForwardTransitions);
28 }
29}
30
31template class StateEliminator<double>;
32
35} // namespace stateelimination
36} // namespace solver
37} // namespace storm
EliminatorBase(storm::storage::FlexibleSparseMatrix< ValueType > &matrix, storm::storage::FlexibleSparseMatrix< ValueType > &transposedMatrix)
StateEliminator(storm::storage::FlexibleSparseMatrix< ValueType > &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > &backwardTransitions)
void eliminateState(storm::storage::sparse::state_type state, bool removeForwardTransitions)
The flexible sparse matrix is used during state elimination.
#define STORM_LOG_TRACE(message)
Definition logging.h:15
#define STORM_LOG_THROW(cond, exception, message)
Definition macros.h:28