#include "storm-pomdp/analysis/UniqueObservationStates.h" namespace storm { namespace analysis { template UniqueObservationStates::UniqueObservationStates(storm::models::sparse::Pomdp const &pomdp) : pomdp(pomdp) { } template storm::storage::BitVector UniqueObservationStates::analyse() const { storm::storage::BitVector seenOnce(pomdp.getNrObservations(), false); storm::storage::BitVector seenMoreThanOnce(pomdp.getNrObservations(), false); for (auto const& observation : pomdp.getObservations()) { if (seenOnce.get(observation)) { seenMoreThanOnce.set(observation); } seenOnce.set(observation); } storm::storage::BitVector uniqueObservation(pomdp.getNumberOfStates(), false); for (uint64_t state = 0; state < pomdp.getNumberOfStates(); ++state) { if (!seenMoreThanOnce.get(pomdp.getObservation(state))) { uniqueObservation.set(state); } } return uniqueObservation; } template class UniqueObservationStates; template class UniqueObservationStates; } }