Storm 1.11.1.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
stateelimination.h
Go to the documentation of this file.
1#pragma once
2
3#include <boost/optional.hpp>
4#include <memory>
5#include <vector>
6
10
11namespace storm {
12namespace solver {
13namespace stateelimination {
14class StatePriorityQueue;
15}
16} // namespace solver
17
18namespace storage {
19class BitVector;
20
21template<typename ValueType>
22class FlexibleSparseMatrix;
23
24template<typename ValueType>
25class SparseMatrix;
26} // namespace storage
27
28namespace utility {
29namespace stateelimination {
30
32
38
39template<typename ValueType>
40uint_fast64_t estimateComplexity(ValueType const& value);
41
42template<>
43uint_fast64_t estimateComplexity(storm::RationalFunction const& value);
44
45template<typename ValueType>
47 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
48 std::vector<ValueType> const& oneStepProbabilities);
49
50template<typename ValueType>
53 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
54 std::vector<ValueType> const& oneStepProbabilities);
55
56template<typename ValueType>
57std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(boost::optional<std::vector<uint_fast64_t>> const& stateDistances,
59 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
60 std::vector<ValueType> const& oneStepProbabilities, storm::storage::BitVector const& states);
61
62std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(storm::storage::BitVector const& states);
63std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(std::vector<storm::storage::sparse::state_type> const& states);
64
65template<typename ValueType>
66std::vector<uint_fast64_t> getDistanceBasedPriorities(storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
67 storm::storage::SparseMatrix<ValueType> const& transitionMatrixTransposed,
68 storm::storage::BitVector const& initialStates, std::vector<ValueType> const& oneStepProbabilities,
69 bool forward, bool reverse);
70
71template<typename ValueType>
72std::vector<uint_fast64_t> getStateDistances(storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
73 storm::storage::SparseMatrix<ValueType> const& transitionMatrixTransposed,
74 storm::storage::BitVector const& initialStates, std::vector<ValueType> const& oneStepProbabilities, bool forward);
75
76} // namespace stateelimination
77} // namespace utility
78} // namespace storm
EliminationOrder
An enum that contains all available state elimination orders.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
The flexible sparse matrix is used during state elimination.
A class that holds a possibly non-square matrix in the compressed row storage format.
storage::BitVector BitVector
std::shared_ptr< StatePriorityQueue > createStatePriorityQueue(boost::optional< std::vector< uint_fast64_t > > const &distanceBasedStatePriorities, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &oneStepProbabilities, storm::storage::BitVector const &states)
uint_fast64_t computeStatePenalty(storm::storage::sparse::state_type const &state, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &oneStepProbabilities)
std::vector< uint_fast64_t > getStateDistances(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &transitionMatrixTransposed, storm::storage::BitVector const &initialStates, std::vector< ValueType > const &oneStepProbabilities, bool forward)
bool eliminationOrderIsStatic(storm::settings::modules::EliminationSettings::EliminationOrder const &order)
bool eliminationOrderNeedsForwardDistances(storm::settings::modules::EliminationSettings::EliminationOrder const &order)
uint_fast64_t computeStatePenaltyRegularExpression(storm::storage::sparse::state_type const &state, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &)
uint_fast64_t estimateComplexity(ValueType const &)
bool eliminationOrderNeedsDistances(storm::settings::modules::EliminationSettings::EliminationOrder const &order)
std::vector< uint_fast64_t > getDistanceBasedPriorities(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, storm::storage::SparseMatrix< ValueType > const &transitionMatrixTransposed, storm::storage::BitVector const &initialStates, std::vector< ValueType > const &oneStepProbabilities, bool forward, bool reverse)
bool eliminationOrderNeedsReversedDistances(storm::settings::modules::EliminationSettings::EliminationOrder const &order)
bool eliminationOrderIsPenaltyBased(storm::settings::modules::EliminationSettings::EliminationOrder const &order)