11namespace bisimulation {
13template<
typename DataType>
36 std::optional<storm::storage::sparse::state_type> representativeProb1State);
45 std::size_t
size()
const;
61 bool updatePositions =
true);
65 uint_fast64_t startIndex, uint_fast64_t endIndex,
100 std::vector<std::unique_ptr<Block<DataType>>>
const&
getBlocks()
const;
103 std::vector<std::unique_ptr<Block<DataType>>>&
getBlocks();
112 std::vector<storm::storage::sparse::state_type>::const_iterator
begin(
Block<DataType> const& block)
const;
115 std::vector<storm::storage::sparse::state_type>::iterator
end(
Block<DataType> const& block);
118 std::vector<storm::storage::sparse::state_type>::const_iterator
end(
Block<DataType> const& block)
const;
121 std::vector<storm::storage::sparse::state_type>::iterator
begin();
124 std::vector<storm::storage::sparse::state_type>::const_iterator
begin()
const;
127 std::vector<storm::storage::sparse::state_type>::iterator
end();
130 std::vector<storm::storage::sparse::state_type>::const_iterator
end()
const;
149 std::vector<storm::storage::sparse::state_type>::iterator last);
155 void mapStatesToPositions(std::vector<storm::storage::sparse::state_type>::const_iterator first,
156 std::vector<storm::storage::sparse::state_type>::const_iterator last);
163 std::vector<std::unique_ptr<Block<DataType>>> blocks;
166 std::vector<Block<DataType>*> stateToBlockMapping;
170 std::vector<storm::storage::sparse::state_type> states;
173 std::vector<storm::storage::sparse::state_type> positions;
A bit vector that is internally represented as a vector of 64-bit values.
void sortRange(storm::storage::sparse::state_type beginIndex, storm::storage::sparse::state_type endIndex, std::function< bool(storm::storage::sparse::state_type, storm::storage::sparse::state_type)> const &less, bool updatePositions=true)
storm::storage::sparse::state_type const & getPosition(storm::storage::sparse::state_type state) const
std::pair< typename std::vector< std::unique_ptr< Block< DataType > > >::iterator, bool > splitBlock(Block< DataType > &block, storm::storage::sparse::state_type position)
Block< DataType > & getBlock(storm::storage::sparse::state_type state)
storm::storage::sparse::state_type const & getState(storm::storage::sparse::state_type position) const
void sortBlock(Block< DataType > &block, std::function< bool(storm::storage::sparse::state_type, storm::storage::sparse::state_type)> const &less, bool updatePositions=true)
void splitStates(Block< DataType > &block, storm::storage::BitVector const &states)
void mapStatesToPositions(Block< DataType > const &block)
Partition(Partition const &other)=default
Partition & operator=(Partition &&other)=default
void swapStates(storm::storage::sparse::state_type state1, storm::storage::sparse::state_type state2)
std::vector< std::unique_ptr< Block< DataType > > > const & getBlocks() const
Partition & operator=(Partition const &other)=default
Partition(Partition &&other)=default
bool split(std::function< bool(storm::storage::sparse::state_type, storm::storage::sparse::state_type)> const &less, std::function< void(Block< DataType > &)> const &newBlockCallback)
std::vector< storm::storage::sparse::state_type >::iterator begin()
void mapStatesToBlock(Block< DataType > &block, std::vector< storm::storage::sparse::state_type >::iterator first, std::vector< storm::storage::sparse::state_type >::iterator last)
void swapStatesAtPositions(storm::storage::sparse::state_type position1, storm::storage::sparse::state_type position2)
std::vector< storm::storage::sparse::state_type >::iterator end()
std::vector< uint_fast64_t > computeRangesOfEqualValue(uint_fast64_t startIndex, uint_fast64_t endIndex, std::function< bool(storm::storage::sparse::state_type, storm::storage::sparse::state_type)> const &less)