14template<
typename ValueType>
59 void initialize(uint64_t numStates,
bool computeSccDepths);
77template<
typename ValueType>
92template<
typename ValueType>
99template<
typename ValueType>
157 uint_fast64_t
getSccDepth(uint_fast64_t
const& sccIndex)
const;
182 std::optional<std::vector<uint_fast64_t>> sccDepths;
Helper class that optionally holds a reference to an object of type T.
A bit vector that is internally represented as a vector of 64-bit values.
This class represents the decomposition of a model into blocks which are of the template type.
A class that holds a possibly non-square matrix in the compressed row storage format.
This class represents the decomposition of a graph-like structure into its strongly connected compone...
StronglyConnectedComponentDecomposition & operator=(StronglyConnectedComponentDecomposition const &other)
Assigns the contents of the given SCC decomposition to the current one by copying its contents.
uint_fast64_t getSccDepth(uint_fast64_t const &sccIndex) const
Gets the depth of the SCC with the given index.
std::vector< uint64_t > computeStateToSccIndexMap(uint64_t numberOfStates) const
Computes a vector that for each state has the index of the scc of that state in it.
bool hasSccDepth() const
Retrieves whether SCCDepths have been computed during construction of this.
uint_fast64_t getMaxSccDepth() const
Gets the maximum depth of an SCC.
StronglyConnectedComponentDecomposition()
Creates an empty SCC decomposition.
void performSccDecomposition(storm::storage::SparseMatrix< ValueType > const &transitionMatrix, StronglyConnectedComponentDecompositionOptions const &options, SccDecompositionResult &result)
Computes an SCC decomposition for the given matrix and options.
Holds temporary computation data used during the SCC decomposition algorithm.
bool hasPreorderNumber(uint64_t stateIndex) const
std::vector< uint64_t > recursionStateStack
std::vector< uint64_t > preorderNumbers
void initialize(uint64_t numStates)
std::vector< uint64_t > p
std::vector< uint64_t > s
Holds the result data of the implemented SCC decomposition algorithm.
std::vector< uint64_t > stateToSccMapping
Number of found SCCs.
void initialize(uint64_t numStates, bool computeSccDepths)
storm::storage::BitVector nonTrivialStates
Mapping from states to the SCC it belongs to.
bool stateHasScc(uint64_t stateIndex) const
uint64_t sccCount
True if an SCC is associated to the given state.
std::optional< std::vector< uint64_t > > sccDepths
Keep track of trivial states (singleton SCCs without selfloop).
StronglyConnectedComponentDecompositionOptions & computeSccDepths(bool value=true)
Sets if scc depths can be retrieved.
storm::OptionalRef< storm::storage::BitVector const > optChoices
StronglyConnectedComponentDecompositionOptions & dropNaiveSccs(bool value=true)
Sets if trivial SCCs (i.e. SCCs consisting of just one state without a self-loop) are to be kept in t...
bool isTopologicalSortForced
StronglyConnectedComponentDecompositionOptions & forceTopologicalSort(bool value=true)
Enforces that the returned SCCs are sorted in a topological order.
StronglyConnectedComponentDecompositionOptions & subsystem(storm::storage::BitVector const &subsystem)
Sets a bit vector indicating which subsystem to consider for the decomposition into SCCs.
StronglyConnectedComponentDecompositionOptions & choices(storm::storage::BitVector const &choices)
Sets a bit vector indicating which choices of the states are contained in the subsystem.
bool isComputeSccDepthsSet
bool areOnlyBottomSccsConsidered
StronglyConnectedComponentDecompositionOptions & onlyBottomSccs(bool value=true)
Sets if only bottom SCCs, i.e. SCCs in which all states have no way of leaving the SCC),...
storm::OptionalRef< storm::storage::BitVector const > optSubsystem