Storm 1.13.0.1
A Modern Probabilistic Model Checker
Loading...
Searching...
No Matches
graph.h
Go to the documentation of this file.
1#pragma once
2
3#include <limits>
4#include <set>
5
14
15namespace storm {
16namespace storage {
17class BitVector;
18template<typename VT>
19class SparseMatrix;
20} // namespace storage
21
22namespace models {
23
24namespace symbolic {
25template<storm::dd::DdType Type, typename ValueType>
26class Model;
27
28template<storm::dd::DdType Type, typename ValueType>
30
31template<storm::dd::DdType Type, typename ValueType>
33
34template<storm::dd::DdType Type, typename ValueType>
36} // namespace symbolic
37
38} // namespace models
39
40namespace dd {
41template<storm::dd::DdType Type>
42class Bdd;
43
44template<storm::dd::DdType Type, typename ValueType>
45class Add;
46
47} // namespace dd
48
49namespace storage {
51}
52
53namespace utility {
54namespace graph {
55
60template<typename T>
61storm::storage::BitVector getReachableOneStep(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::BitVector const& initialStates);
62
77template<typename T>
78storm::storage::BitVector getReachableStates(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::BitVector const& initialStates,
79 storm::storage::BitVector const& constraintStates, storm::storage::BitVector const& targetStates,
80 bool useStepBound = false, uint_fast64_t maximalSteps = 0,
81 boost::optional<storm::storage::BitVector> const& choiceFilter = boost::none);
82
89template<typename T>
90storm::storage::BitVector getBsccCover(storm::storage::SparseMatrix<T> const& transitionMatrix);
91
97template<typename T>
98bool hasCycle(storm::storage::SparseMatrix<T> const& transitionMatrix, boost::optional<storm::storage::BitVector> const& subsystem = boost::none);
99
110template<typename T>
111bool checkIfECWithChoiceExists(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::SparseMatrix<T> const& backwardTransitions,
112 storm::storage::BitVector const& subsystem, storm::storage::BitVector const& choices);
113
123template<typename T>
124std::vector<uint_fast64_t> getDistances(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::BitVector const& initialStates,
125 boost::optional<storm::storage::BitVector> const& subsystem = boost::none);
126
139template<typename T>
140storm::storage::BitVector performProbGreater0(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
141 storm::storage::BitVector const& psiStates, bool useStepBound = false, uint_fast64_t maximalSteps = 0);
142
157template<typename T>
158storm::storage::BitVector performProb1(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
159 storm::storage::BitVector const& psiStates, storm::storage::BitVector const& statesWithProbabilityGreater0);
160
173template<typename T>
174storm::storage::BitVector performProb1(storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
175 storm::storage::BitVector const& psiStates);
176
187template<typename T>
188std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01(storm::models::sparse::DeterministicModel<T> const& model,
189 storm::storage::BitVector const& phiStates,
190 storm::storage::BitVector const& psiStates);
191
202template<typename T>
203std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01(storm::storage::SparseMatrix<T> const& backwardTransitions,
204 storm::storage::BitVector const& phiStates,
205 storm::storage::BitVector const& psiStates);
206
218template<storm::dd::DdType Type, typename ValueType>
219storm::dd::Bdd<Type> performProbGreater0(storm::models::symbolic::Model<Type, ValueType> const& model, storm::dd::Bdd<Type> const& transitionMatrix,
220 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates,
221 boost::optional<uint_fast64_t> const& stepBound = boost::optional<uint_fast64_t>());
234template<storm::dd::DdType Type, typename ValueType>
235storm::dd::Bdd<Type> performProb1(storm::models::symbolic::Model<Type, ValueType> const& model, storm::dd::Bdd<Type> const& transitionMatrix,
236 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates,
237 storm::dd::Bdd<Type> const& statesWithProbabilityGreater0);
238
249template<storm::dd::DdType Type, typename ValueType>
250storm::dd::Bdd<Type> performProb1(storm::models::symbolic::Model<Type, ValueType> const& model, storm::dd::Bdd<Type> const& transitionMatrix,
251 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
252
262template<storm::dd::DdType Type, typename ValueType>
263std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>> performProb01(storm::models::symbolic::DeterministicModel<Type, ValueType> const& model,
264 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
265
276template<storm::dd::DdType Type, typename ValueType>
277std::pair<storm::dd::Bdd<Type>, storm::dd::Bdd<Type>> performProb01(storm::models::symbolic::Model<Type, ValueType> const& model,
278 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
279 storm::dd::Bdd<Type> const& psiStates);
280
290template<typename T, typename SchedulerValueType>
291void computeSchedulerStayingInStates(storm::storage::BitVector const& states, storm::storage::SparseMatrix<T> const& transitionMatrix,
292 storm::storage::Scheduler<SchedulerValueType>& scheduler,
293 boost::optional<storm::storage::BitVector> const& rowFilter = boost::none);
294
304template<typename T>
307
321template<typename T, typename SchedulerValueType>
322void computeSchedulerProbGreater0E(storm::storage::SparseMatrix<T> const& transitionMatrix, storm::storage::SparseMatrix<T> const& backwardTransitions,
323 storm::storage::BitVector const& phiStates, storm::storage::BitVector const& psiStates,
325 boost::optional<storm::storage::BitVector> const& rowFilter = boost::none);
326
335template<typename T, typename SchedulerValueType>
336void computeSchedulerRewInf(storm::storage::BitVector const& rewInfStates, storm::storage::SparseMatrix<T> const& transitionMatrix,
338
346template<typename T, typename SchedulerValueType>
347void computeSchedulerProb0E(storm::storage::BitVector const& prob0EStates, storm::storage::SparseMatrix<T> const& transitionMatrix,
349
361template<typename T, typename SchedulerValueType>
362void computeSchedulerProb1E(storm::storage::BitVector const& prob1EStates, storm::storage::SparseMatrix<T> const& transitionMatrix,
363 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
365 boost::optional<storm::storage::BitVector> const& rowFilter = boost::none);
366
380template<typename T>
382 storm::storage::BitVector const& psiStates, bool useStepBound = false, uint_fast64_t maximalSteps = 0);
383
384template<typename T>
386 storm::storage::BitVector const& psiStates);
387
401template<typename T>
403 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
404 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
405 storm::storage::BitVector const& psiStates,
406 boost::optional<storm::storage::BitVector> const& choiceConstraint = boost::none);
407
420template<typename T, typename RM>
422 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
423 storm::storage::BitVector const& psiStates);
424
425template<typename T>
426std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01Max(storm::storage::SparseMatrix<T> const& transitionMatrix,
427 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
428 storm::storage::SparseMatrix<T> const& backwardTransitions,
429 storm::storage::BitVector const& phiStates,
430 storm::storage::BitVector const& psiStates);
431
442template<typename T, typename RM>
443std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01Max(storm::models::sparse::NondeterministicModel<T, RM> const& model,
444 storm::storage::BitVector const& phiStates,
445 storm::storage::BitVector const& psiStates);
446
462template<typename T>
464 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
465 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
466 storm::storage::BitVector const& psiStates, bool useStepBound = false, uint_fast64_t maximalSteps = 0,
467 boost::optional<storm::storage::BitVector> const& choiceConstraint = boost::none);
468
481template<typename T, typename RM>
483 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
484 storm::storage::BitVector const& psiStates);
485template<typename T>
487 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
488 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
489 storm::storage::BitVector const& psiStates);
490
503template<typename T, typename RM>
505 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
506 storm::storage::BitVector const& psiStates);
507
508template<typename T>
510 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
511 storm::storage::SparseMatrix<T> const& backwardTransitions, storm::storage::BitVector const& phiStates,
512 storm::storage::BitVector const& psiStates);
513
514template<typename T>
515std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01Min(storm::storage::SparseMatrix<T> const& transitionMatrix,
516 std::vector<uint_fast64_t> const& nondeterministicChoiceIndices,
517 storm::storage::SparseMatrix<T> const& backwardTransitions,
518 storm::storage::BitVector const& phiStates,
519 storm::storage::BitVector const& psiStates);
520
531template<typename T, typename RM>
532std::pair<storm::storage::BitVector, storm::storage::BitVector> performProb01Min(storm::models::sparse::NondeterministicModel<T, RM> const& model,
533 storm::storage::BitVector const& phiStates,
534 storm::storage::BitVector const& psiStates);
535
546template<storm::dd::DdType Type, typename ValueType = double>
548 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
549 storm::dd::Bdd<Type> const& psiStates);
550
554template<storm::dd::DdType Type, typename ValueType>
556 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
557 storm::dd::Bdd<Type> const& psiStates);
558
569template<storm::dd::DdType Type, typename ValueType = double>
571 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
572
583template<storm::dd::DdType Type, typename ValueType = double>
585 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
586 storm::dd::Bdd<Type> const& psiStates);
587
598template<storm::dd::DdType Type, typename ValueType = double>
600 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
601
613template<storm::dd::DdType Type, typename ValueType = double>
615 storm::dd::Bdd<Type> const& psiStates, storm::dd::Bdd<Type> const& statesWithProbabilityGreater0A);
616
629template<storm::dd::DdType Type, typename ValueType = double>
631 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates,
632 storm::dd::Bdd<Type> const& statesWithProbabilityGreater0E);
633
637template<storm::dd::DdType Type, typename ValueType>
639 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
640 storm::dd::Bdd<Type> const& psiStates, storm::dd::Bdd<Type> const& statesWithProbability1E);
641
642template<storm::dd::DdType Type, typename ValueType = double>
644 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
645
646template<storm::dd::DdType Type, typename ValueType = double>
648 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
649 storm::dd::Bdd<Type> const& psiStates);
650
651template<storm::dd::DdType Type, typename ValueType = double>
653 storm::dd::Bdd<Type> const& phiStates, storm::dd::Bdd<Type> const& psiStates);
654
655template<storm::dd::DdType Type, typename ValueType = double>
657 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
658 storm::dd::Bdd<Type> const& psiStates);
659
660template<storm::dd::DdType Type>
669
670 bool hasPlayer1Strategy() const {
671 return static_cast<bool>(player1Strategy);
672 }
673
675 return player1Strategy.get();
676 }
677
678 boost::optional<storm::dd::Bdd<Type>> const& getOptionalPlayer1Strategy() {
679 return player1Strategy;
680 }
681
682 bool hasPlayer2Strategy() const {
683 return static_cast<bool>(player2Strategy);
684 }
685
687 return player2Strategy.get();
688 }
689
690 boost::optional<storm::dd::Bdd<Type>> const& getOptionalPlayer2Strategy() {
691 return player2Strategy;
692 }
693
695 return player1States;
696 }
697
699 return player2States;
700 }
701
704 boost::optional<storm::dd::Bdd<Type>> player1Strategy;
705 boost::optional<storm::dd::Bdd<Type>> player2Strategy;
706};
707
718template<storm::dd::DdType Type, typename ValueType>
720 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
721 storm::dd::Bdd<Type> const& psiStates, storm::OptimizationDirection const& player1Strategy,
722 storm::OptimizationDirection const& player2Strategy, bool producePlayer1Strategy = false,
723 bool producePlayer2Strategy = false);
724
736template<storm::dd::DdType Type, typename ValueType>
738 storm::dd::Bdd<Type> const& transitionMatrix, storm::dd::Bdd<Type> const& phiStates,
739 storm::dd::Bdd<Type> const& psiStates, storm::OptimizationDirection const& player1Strategy,
740 storm::OptimizationDirection const& player2Strategy, bool producePlayer1Strategy = false,
741 bool producePlayer2Strategy = false, boost::optional<storm::dd::Bdd<Type>> const& player1Candidates = boost::none);
742
745 ExplicitGameProb01Result(uint64_t numberOfPlayer1States, uint64_t numberOfPlayer2States)
746 : player1States(numberOfPlayer1States), player2States(numberOfPlayer2States) {
747 // Intentionally left empty.
748 }
749
754
756 return player1States;
757 }
758
760 return player2States;
761 }
762
765};
766
781template<typename ValueType>
782ExplicitGameProb01Result performProb0(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, std::vector<uint64_t> const& player1Groups,
783 storm::storage::SparseMatrix<ValueType> const& player1BackwardTransitions,
784 std::vector<uint64_t> const& player2BackwardTransitions, storm::storage::BitVector const& phiStates,
785 storm::storage::BitVector const& psiStates, storm::OptimizationDirection const& player1Direction,
786 storm::OptimizationDirection const& player2Direction, storm::storage::ExplicitGameStrategyPair* strategyPair = nullptr);
787
803template<typename ValueType>
804ExplicitGameProb01Result performProb1(storm::storage::SparseMatrix<ValueType> const& transitionMatrix, std::vector<uint64_t> const& player1Groups,
805 storm::storage::SparseMatrix<ValueType> const& player1BackwardTransitions,
806 std::vector<uint64_t> const& player2BackwardTransitions, storm::storage::BitVector const& phiStates,
807 storm::storage::BitVector const& psiStates, storm::OptimizationDirection const& player1Direction,
808 storm::OptimizationDirection const& player2Direction, storm::storage::ExplicitGameStrategyPair* strategyPair = nullptr,
809 boost::optional<storm::storage::BitVector> const& player1Candidates = boost::none);
810
817template<typename T>
818std::vector<uint_fast64_t> getTopologicalSort(storm::storage::SparseMatrix<T> const& matrix, std::vector<uint64_t> const& firstStates = {});
819
820template<typename T>
821std::vector<uint_fast64_t> getBFSSort(storm::storage::SparseMatrix<T> const& matrix, std::vector<uint_fast64_t> const& firstStates);
822
823} // namespace graph
824} // namespace utility
825} // namespace storm
The base class of sparse nondeterministic models.
Base class for all deterministic symbolic models.
Base class for all symbolic models.
Definition Model.h:42
Base class for all nondeterministic symbolic models.
This class represents a discrete-time stochastic two-player game.
A bit vector that is internally represented as a vector of 64-bit values.
Definition BitVector.h:16
This class defines which action is chosen in a particular state of a non-deterministic model.
Definition Scheduler.h:18
A class that holds a possibly non-square matrix in the compressed row storage format.
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01(storm::models::sparse::DeterministicModel< T > const &model, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 0 or 1, respectively, of satisfying phi until psi i...
Definition graph.cpp:393
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01Max(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Definition graph.cpp:819
void computeSchedulerStayingInStates(storm::storage::BitVector const &states, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the given states that chooses an action that stays completely in the very sa...
Definition graph.cpp:483
ExplicitGameProb01Result performProb0(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, std::vector< uint64_t > const &player1Groups, storm::storage::SparseMatrix< ValueType > const &player1BackwardTransitions, std::vector< uint64_t > const &player2BackwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, storm::OptimizationDirection const &player1Direction, storm::OptimizationDirection const &player2Direction, storm::storage::ExplicitGameStrategyPair *strategyPair)
Computes the set of states that have probability 0 given the strategies of the two players.
Definition graph.cpp:1292
std::vector< uint_fast64_t > getTopologicalSort(storm::storage::SparseMatrix< T > const &matrix, std::vector< uint64_t > const &firstStates)
Performs a topological sort of the states of the system according to the given transitions.
Definition graph.cpp:1845
void computeSchedulerProbGreater0E(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the ProbGreater0E-States such that in the induced system the given psiStates...
Definition graph.cpp:535
std::vector< uint_fast64_t > getBFSSort(storm::storage::SparseMatrix< T > const &matrix, std::vector< uint_fast64_t > const &firstStates)
Definition graph.cpp:1811
storm::storage::BitVector getReachableStates(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::BitVector const &initialStates, storm::storage::BitVector const &constraintStates, storm::storage::BitVector const &targetStates, bool useStepBound, uint_fast64_t maximalSteps, boost::optional< storm::storage::BitVector > const &choiceFilter)
Performs a forward depth-first search through the underlying graph structure to identify the states t...
Definition graph.cpp:41
storm::storage::BitVector getReachableOneStep(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::BitVector const &initialStates)
Computes the states reachable in one step from the states indicated by the bitvector.
Definition graph.cpp:29
storm::storage::BitVector performProbGreater0(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps)
Performs a backward depth-first search trough the underlying graph structure of the given model to de...
Definition graph.cpp:315
void computeSchedulerWithOneSuccessorInStates(storm::storage::BitVector const &states, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler)
Definition graph.cpp:508
storm::storage::BitVector performProbGreater0A(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps, boost::optional< storm::storage::BitVector > const &choiceConstraint)
Computes the sets of states that have probability greater 0 of satisfying phi until psi under any pos...
Definition graph.cpp:841
void computeSchedulerProb1E(storm::storage::BitVector const &prob1EStates, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, storm::storage::Scheduler< SchedulerValueType > &scheduler, boost::optional< storm::storage::BitVector > const &rowFilter)
Computes a scheduler for the given prob1EStates such that in the induced system the given psiStates a...
Definition graph.cpp:608
bool hasCycle(storm::storage::SparseMatrix< T > const &transitionMatrix, boost::optional< storm::storage::BitVector > const &subsystem)
Returns true if the graph represented by the given matrix has a cycle.
Definition graph.cpp:136
storm::storage::BitVector performProb1A(storm::models::sparse::NondeterministicModel< T, RM > const &model, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 1 of satisfying phi until psi under all possible re...
Definition graph.cpp:981
storm::storage::BitVector performProbGreater0E(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, bool useStepBound, uint_fast64_t maximalSteps)
Computes the sets of states that have probability greater 0 of satisfying phi until psi under at leas...
Definition graph.cpp:673
storm::storage::BitVector performProb0A(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Definition graph.cpp:733
storm::storage::BitVector performProb1(storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &, storm::storage::BitVector const &psiStates, storm::storage::BitVector const &statesWithProbabilityGreater0)
Computes the set of states of the given model for which all paths lead to the given set of target sta...
Definition graph.cpp:376
bool checkIfECWithChoiceExists(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &subsystem, storm::storage::BitVector const &choices)
Checks whether there is an End Component that.
Definition graph.cpp:175
storm::storage::BitVector performProb0E(storm::models::sparse::NondeterministicModel< T, RM > const &model, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Computes the sets of states that have probability 0 of satisfying phi until psi under at least one po...
Definition graph.cpp:960
storm::storage::BitVector getBsccCover(storm::storage::SparseMatrix< T > const &transitionMatrix)
Retrieves a set of states that covers als BSCCs of the system in the sense that for every BSCC exactl...
Definition graph.cpp:122
void computeSchedulerProb0E(storm::storage::BitVector const &prob0EStates, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::Scheduler< SchedulerValueType > &scheduler)
Computes a scheduler for the given states that have a scheduler that has a probability 0.
Definition graph.cpp:586
std::pair< storm::storage::BitVector, storm::storage::BitVector > performProb01Min(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates)
Definition graph.cpp:1063
std::vector< uint_fast64_t > getDistances(storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::BitVector const &initialStates, boost::optional< storm::storage::BitVector > const &subsystem)
Performs a breadth-first search through the underlying graph structure to compute the distance from a...
Definition graph.cpp:281
storm::storage::BitVector performProb1E(storm::storage::SparseMatrix< T > const &transitionMatrix, std::vector< uint_fast64_t > const &nondeterministicChoiceIndices, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::BitVector const &phiStates, storm::storage::BitVector const &psiStates, boost::optional< storm::storage::BitVector > const &choiceConstraint)
Computes the sets of states that have probability 1 of satisfying phi until psi under at least one po...
Definition graph.cpp:741
void computeSchedulerRewInf(storm::storage::BitVector const &rewInfStates, storm::storage::SparseMatrix< T > const &transitionMatrix, storm::storage::SparseMatrix< T > const &backwardTransitions, storm::storage::Scheduler< SchedulerValueType > &scheduler)
Computes a scheduler for the given states that have a scheduler that has a reward infinity.
Definition graph.cpp:592
solver::OptimizationDirection OptimizationDirection
ExplicitGameProb01Result(storm::storage::BitVector const &player1States, storm::storage::BitVector const &player2States)
Definition graph.h:750
storm::storage::BitVector const & getPlayer1States() const
Definition graph.h:755
storm::storage::BitVector player2States
Definition graph.h:764
storm::storage::BitVector const & getPlayer2States() const
Definition graph.h:759
ExplicitGameProb01Result(uint64_t numberOfPlayer1States, uint64_t numberOfPlayer2States)
Definition graph.h:745
storm::storage::BitVector player1States
Definition graph.h:763
boost::optional< storm::dd::Bdd< Type > > player1Strategy
Definition graph.h:704
SymbolicGameProb01Result(storm::dd::Bdd< Type > const &player1States, storm::dd::Bdd< Type > const &player2States, boost::optional< storm::dd::Bdd< Type > > const &player1Strategy=boost::none, boost::optional< storm::dd::Bdd< Type > > const &player2Strategy=boost::none)
Definition graph.h:663
boost::optional< storm::dd::Bdd< Type > > const & getOptionalPlayer2Strategy()
Definition graph.h:690
storm::dd::Bdd< Type > const & getPlayer2States() const
Definition graph.h:698
storm::dd::Bdd< Type > const & getPlayer1Strategy() const
Definition graph.h:674
boost::optional< storm::dd::Bdd< Type > > const & getOptionalPlayer1Strategy()
Definition graph.h:678
storm::dd::Bdd< Type > const & getPlayer2Strategy() const
Definition graph.h:686
boost::optional< storm::dd::Bdd< Type > > player2Strategy
Definition graph.h:705
storm::dd::Bdd< Type > const & getPlayer1States() const
Definition graph.h:694