14 std::vector<std::pair<storm::storage::sparse::state_type, uint_fast64_t>>
const& sortedStatePenaltyPairs,
16 std::vector<ValueType>
const& oneStepProbabilities,
PenaltyFunctionType const& penaltyFunction)
18 transitionMatrix(transitionMatrix),
19 backwardTransitions(backwardTransitions),
20 oneStepProbabilities(oneStepProbabilities),
22 stateToPriorityQueueEntry(),
23 penaltyFunction(penaltyFunction) {
25 for (
auto const& statePenalty : sortedStatePenaltyPairs) {
26 auto it = priorityQueue.insert(priorityQueue.end(), statePenalty);
27 stateToPriorityQueueEntry.emplace(statePenalty.first, it);
49 auto priorityQueueEntryIt = stateToPriorityQueueEntry.find(state);
52 if (priorityQueueEntryIt == stateToPriorityQueueEntry.end()) {
57 uint_fast64_t newPriority = penaltyFunction(state, transitionMatrix, backwardTransitions, oneStepProbabilities);
59 if (priorityQueueEntryIt->second->second != newPriority) {
61 priorityQueue.erase(priorityQueueEntryIt->second);
62 stateToPriorityQueueEntry.erase(priorityQueueEntryIt);
64 auto newElementIt = priorityQueue.emplace(state, newPriority);
65 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)