13 std::vector<std::pair<storm::storage::sparse::state_type, uint_fast64_t>>
const& sortedStatePenaltyPairs,
15 std::vector<ValueType>
const& oneStepProbabilities,
PenaltyFunctionType const& penaltyFunction)
17 transitionMatrix(transitionMatrix),
18 backwardTransitions(backwardTransitions),
19 oneStepProbabilities(oneStepProbabilities),
21 stateToPriorityQueueEntry(),
22 penaltyFunction(penaltyFunction) {
24 for (
auto const& statePenalty : sortedStatePenaltyPairs) {
25 auto it = priorityQueue.insert(priorityQueue.end(), statePenalty);
26 stateToPriorityQueueEntry.emplace(statePenalty.first, it);
48 auto priorityQueueEntryIt = stateToPriorityQueueEntry.find(state);
51 if (priorityQueueEntryIt == stateToPriorityQueueEntry.end()) {
56 uint_fast64_t newPriority = penaltyFunction(state, transitionMatrix, backwardTransitions, oneStepProbabilities);
58 if (priorityQueueEntryIt->second->second != newPriority) {
60 priorityQueue.erase(priorityQueueEntryIt->second);
61 stateToPriorityQueueEntry.erase(priorityQueueEntryIt);
63 auto newElementIt = priorityQueue.emplace(state, newPriority);
64 stateToPriorityQueueEntry.emplace(state, newElementIt.first);
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)