|
@ -82,6 +82,30 @@ namespace storm { |
|
|
visitQueue.push(subTreeRoots[0]); |
|
|
visitQueue.push(subTreeRoots[0]); |
|
|
bool consideredDependencies = false; |
|
|
bool consideredDependencies = false; |
|
|
while (true) { |
|
|
while (true) { |
|
|
|
|
|
if (consideredDependencies) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
stateIndex = performStateGenerationInfoDFS(generationInfo, visitQueue, visited, stateIndex); |
|
|
|
|
|
|
|
|
|
|
|
// Consider dependencies
|
|
|
|
|
|
for (size_t idDependency : getDependencies()) { |
|
|
|
|
|
std::shared_ptr<DFTDependency<ValueType> const> dependency = getDependency(idDependency); |
|
|
|
|
|
visitQueue.push(dependency->id()); |
|
|
|
|
|
visitQueue.push(dependency->triggerEvent()->id()); |
|
|
|
|
|
visitQueue.push(dependency->dependentEvent()->id()); |
|
|
|
|
|
} |
|
|
|
|
|
consideredDependencies = true; |
|
|
|
|
|
} |
|
|
|
|
|
assert(stateIndex = mStateVectorSize); |
|
|
|
|
|
|
|
|
|
|
|
STORM_LOG_TRACE(generationInfo); |
|
|
|
|
|
|
|
|
|
|
|
return generationInfo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template<typename ValueType> |
|
|
|
|
|
size_t DFT<ValueType>::performStateGenerationInfoDFS(DFTStateGenerationInfo& generationInfo, std::queue<size_t>& visitQueue, std::set<size_t>& visited, size_t stateIndex) const { |
|
|
while (!visitQueue.empty()) { |
|
|
while (!visitQueue.empty()) { |
|
|
size_t id = visitQueue.front(); |
|
|
size_t id = visitQueue.front(); |
|
|
visitQueue.pop(); |
|
|
visitQueue.pop(); |
|
@ -114,28 +138,8 @@ namespace storm { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
if (consideredDependencies) { |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Consider dependencies
|
|
|
|
|
|
for (size_t idDependency : getDependencies()) { |
|
|
|
|
|
std::shared_ptr<DFTDependency<ValueType> const> dependency = getDependency(idDependency); |
|
|
|
|
|
visitQueue.push(dependency->id()); |
|
|
|
|
|
visitQueue.push(dependency->triggerEvent()->id()); |
|
|
|
|
|
visitQueue.push(dependency->dependentEvent()->id()); |
|
|
|
|
|
|
|
|
return stateIndex; |
|
|
} |
|
|
} |
|
|
consideredDependencies = true; |
|
|
|
|
|
} |
|
|
|
|
|
assert(stateIndex = mStateVectorSize); |
|
|
|
|
|
|
|
|
|
|
|
STORM_LOG_TRACE(generationInfo); |
|
|
|
|
|
|
|
|
|
|
|
return generationInfo; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template<typename ValueType> |
|
|
template<typename ValueType> |
|
|
std::string DFT<ValueType>::getElementsString() const { |
|
|
std::string DFT<ValueType>::getElementsString() const { |
|
|