#include "src/solver/stateelimination/PrioritizedStateEliminator.h" #include "src/solver/stateelimination/StatePriorityQueue.h" #include "src/utility/macros.h" #include "src/utility/constants.h" namespace storm { namespace solver { namespace stateelimination { template PrioritizedStateEliminator::PrioritizedStateEliminator(storm::storage::FlexibleSparseMatrix& transitionMatrix, storm::storage::FlexibleSparseMatrix& backwardTransitions, PriorityQueuePointer priorityQueue, std::vector& stateValues) : StateEliminator(transitionMatrix, backwardTransitions), priorityQueue(priorityQueue), stateValues(stateValues) { } template void PrioritizedStateEliminator::updateValue(storm::storage::sparse::state_type const& state, ValueType const& loopProbability) { stateValues[state] = storm::utility::simplify(loopProbability * stateValues[state]); } template void PrioritizedStateEliminator::updatePredecessor(storm::storage::sparse::state_type const& predecessor, ValueType const& probability, storm::storage::sparse::state_type const& state) { stateValues[predecessor] = storm::utility::simplify(stateValues[predecessor] + storm::utility::simplify(probability * stateValues[state])); } template void PrioritizedStateEliminator::updatePriority(storm::storage::sparse::state_type const& state) { priorityQueue->update(state); } template class PrioritizedStateEliminator; #ifdef STORM_HAVE_CARL template class PrioritizedStateEliminator; template class PrioritizedStateEliminator; #endif } // namespace stateelimination } // namespace storage } // namespace storm