Storm 1.14.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
StateEliminationUtility.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 storage {
13class BitVector;
14
15template<typename ValueType>
17
18template<typename ValueType>
19class SparseMatrix;
20} // namespace storage
21
22namespace solver {
23namespace stateelimination {
24
26
32
33template<typename ValueType>
34uint_fast64_t estimateComplexity(ValueType const& value);
35
36template<>
37uint_fast64_t estimateComplexity(storm::RationalFunction const& value);
38
39template<typename ValueType>
40uint_fast64_t computeStatePenalty(storm::storage::sparse::state_type const& state, storm::storage::FlexibleSparseMatrix<ValueType> const& transitionMatrix,
41 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
42 std::vector<ValueType> const& oneStepProbabilities);
43
44template<typename ValueType>
46 storm::storage::FlexibleSparseMatrix<ValueType> const& transitionMatrix,
47 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
48 std::vector<ValueType> const& oneStepProbabilities);
49
50template<typename ValueType>
51std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(EliminationOrder const& order, boost::optional<std::vector<uint_fast64_t>> const& stateDistances,
52 storm::storage::FlexibleSparseMatrix<ValueType> const& transitionMatrix,
53 storm::storage::FlexibleSparseMatrix<ValueType> const& backwardTransitions,
54 std::vector<ValueType> const& oneStepProbabilities, storm::storage::BitVector const& states);
55
56std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(storm::storage::BitVector const& states);
57std::shared_ptr<StatePriorityQueue> createStatePriorityQueue(std::vector<storm::storage::sparse::state_type> const& states);
58
59template<typename ValueType>
60std::vector<uint_fast64_t> getDistanceBasedPriorities(EliminationOrder const& order, storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
61 storm::storage::SparseMatrix<ValueType> const& transitionMatrixTransposed,
62 storm::storage::BitVector const& initialStates, std::vector<ValueType> const& oneStepProbabilities,
63 bool forward, bool reverse);
64
65template<typename ValueType>
66std::vector<uint_fast64_t> getStateDistances(storm::storage::SparseMatrix<ValueType> const& transitionMatrix,
67 storm::storage::SparseMatrix<ValueType> const& transitionMatrixTransposed,
68 storm::storage::BitVector const& initialStates, std::vector<ValueType> const& oneStepProbabilities, bool forward);
69
70} // namespace stateelimination
71} // namespace solver
72} // namespace storm
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.
bool eliminationOrderIsStatic(EliminationOrder const &order)
uint_fast64_t estimateComplexity(ValueType const &)
bool eliminationOrderNeedsReversedDistances(EliminationOrder const &order)
bool eliminationOrderNeedsForwardDistances(EliminationOrder const &order)
bool eliminationOrderIsPenaltyBased(EliminationOrder const &order)
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)
std::shared_ptr< StatePriorityQueue > createStatePriorityQueue(EliminationOrder const &order, 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)
bool eliminationOrderNeedsDistances(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 &)
EliminationOrder
An enum that contains all available state elimination orders.
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 > getDistanceBasedPriorities(EliminationOrder const &order, 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)
carl::RationalFunction< Polynomial, true > RationalFunction