5#include <unordered_map>
12template<
typename ValueType>
20 bool operator()(std::pair<storm::storage::sparse::state_type, uint_fast64_t>
const& first,
21 std::pair<storm::storage::sparse::state_type, uint_fast64_t>
const& second)
const {
22 return (first.second < second.second) || (first.second == second.second && first.first < second.first);
26template<
typename ValueType>
29 typedef std::function<uint_fast64_t(
34 DynamicStatePriorityQueue(std::vector<std::pair<storm::storage::sparse::state_type, uint_fast64_t>>
const& sortedStatePenaltyPairs,
39 virtual bool hasNext()
const override;
42 virtual std::size_t
size()
const override;
45 typedef std::set<std::pair<storm::storage::sparse::state_type, uint_fast64_t>,
PriorityComparator> PriorityQueue;
46 typedef std::unordered_map<storm::storage::sparse::state_type, PriorityQueue::const_iterator> StatePriorityQueueEntryMap;
50 std::vector<ValueType>
const& oneStepProbabilities;
51 PriorityQueue priorityQueue;
52 StatePriorityQueueEntryMap stateToPriorityQueueEntry;
DynamicStatePriorityQueue(std::vector< std::pair< storm::storage::sparse::state_type, uint_fast64_t > > const &sortedStatePenaltyPairs, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &oneStepProbabilities, PenaltyFunctionType const &penaltyFunction)
std::function< uint_fast64_t(storm::storage::sparse::state_type const &state, storm::storage::FlexibleSparseMatrix< ValueType > const &transitionMatrix, storm::storage::FlexibleSparseMatrix< ValueType > const &backwardTransitions, std::vector< ValueType > const &oneStepProbabilities)> PenaltyFunctionType
virtual bool hasNext() const override
virtual void update(storm::storage::sparse::state_type state) override
virtual std::size_t size() const override
virtual storm::storage::sparse::state_type pop() override
The flexible sparse matrix is used during state elimination.
bool operator()(std::pair< storm::storage::sparse::state_type, uint_fast64_t > const &first, std::pair< storm::storage::sparse::state_type, uint_fast64_t > const &second) const