8namespace stateelimination {
10template<
typename ValueType>
14 std::vector<ValueType>& additionalStateValuesVector)
16 additionalStateValues({std::ref(additionalStateValuesVector)}) {}
18template<
typename ValueType>
21 std::vector<storm::storage::sparse::state_type>
const& statesToEliminate,
22 std::vector<ValueType>& stateValues, std::vector<ValueType>& additionalStateValuesVector)
24 additionalStateValues({std::ref(additionalStateValuesVector)}) {}
26template<
typename ValueType>
29 for (
auto additionalStateValueVectorRef : additionalStateValues) {
30 additionalStateValueVectorRef.get()[state] =
storm::utility::simplify((ValueType)(loopProbability * additionalStateValueVectorRef.get()[state]));
34template<
typename ValueType>
37 this->stateValues[predecessor] =
39 for (
auto additionalStateValueVectorRef : additionalStateValues) {
40 additionalStateValueVectorRef.get()[predecessor] =
46template<
typename ValueType>
48 super::clearStateValues(state);
49 for (
auto additionStateValueVectorRef : additionalStateValues) {
50 additionStateValueVectorRef.get()[state] = storm::utility::zero<ValueType>();
void updatePredecessor(storm::storage::sparse::state_type const &predecessor, ValueType const &probability, storm::storage::sparse::state_type const &state) override
std::shared_ptr< StatePriorityQueue > PriorityQueuePointer
MultiValueStateEliminator(storm::storage::FlexibleSparseMatrix< ValueType > &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > &backwardTransitions, PriorityQueuePointer priorityQueue, std::vector< ValueType > &stateValues, std::vector< ValueType > &additionalStateValues)
virtual void clearStateValues(storm::storage::sparse::state_type const &state) override
void updateValue(storm::storage::sparse::state_type const &state, ValueType const &loopProbability) override
The flexible sparse matrix is used during state elimination.
ValueType simplify(ValueType value)