#pragma once #include "storm/storage/dd/bisimulation/PartitionRefiner.h" namespace storm { namespace models { namespace symbolic { template class Mdp; } } namespace dd { namespace bisimulation { template class MdpPartitionRefiner : public PartitionRefiner { public: MdpPartitionRefiner(storm::models::symbolic::Mdp const& mdp, Partition const& initialStatePartition); /*! * Refines the partition. * * @param mode The signature mode to use. * @return False iff the partition is stable and no refinement was actually performed. */ virtual bool refine(bisimulation::SignatureMode const& mode = bisimulation::SignatureMode::Eager) override; /*! * Retrieves the current choice partition in the refinement process. */ Partition const& getChoicePartition() const; private: virtual bool refineWrtStateActionRewards(storm::models::symbolic::Model const& model, storm::dd::Add const& stateActionRewards) override; // The choice partition in the refinement process. Partition choicePartition; // The object used to compute the state signatures. SignatureComputer stateSignatureComputer; // The object used to refine the state partition based on the signatures. SignatureRefiner stateSignatureRefiner; }; } } }