11#ifndef RASCALMCES_PARTITION_SET_H
12#define RASCALMCES_PARTITION_SET_H
17#include <boost/dynamic_bitset.hpp>
30 const std::vector<std::pair<int, int>> &vtxPairs,
31 const std::vector<unsigned int> &vtx1Labels,
32 const std::vector<unsigned int> &vtx2Labels,
33 unsigned int lowerBound);
35 bool isEmpty()
const {
return d_parts.empty(); }
37 size_t numParts()
const {
return d_parts.size(); }
54 std::shared_ptr<const std::vector<boost::dynamic_bitset<>>> d_ModProd;
55 std::shared_ptr<const std::vector<std::pair<int, int>>> d_VtxPairs;
56 std::shared_ptr<const std::vector<unsigned int>> d_vtx1Labels;
57 std::shared_ptr<const std::vector<unsigned int>> d_vtx2Labels;
58 std::vector<std::vector<unsigned int>> d_parts;
60 std::vector<int> d_vtx1Counts, d_vtx2Counts;
62 std::vector<int> d_vtx1TypeCounts, d_vtx2TypeCounts;
64 void sortPartitions();
66 void calcVtxTypeCounts();
68 void decrementVertexCounts(
int vtxNum);
unsigned int popLastVertex()
PartitionSet(const std::vector< boost::dynamic_bitset<> > &modProd, const std::vector< std::pair< int, int > > &vtxPairs, const std::vector< unsigned int > &vtx1Labels, const std::vector< unsigned int > &vtx2Labels, unsigned int lowerBound)
void pruneVertices(unsigned int vtx_num)
friend std::ostream & operator<<(std::ostream &os, const PartitionSet &pt)