32 std::cout <<
"Bitvector does not represent the relations properly." << std::endl;
37 unsigned int numOnesInVector = 0;
38 for (
bool bit : pBitvector) numOnesInVector += bit;
39 if (numOnesInVector <
mNumObjects - 1)
return false;
40 if (numOnesInVector == pBitvector.size())
return true;
49 unsigned int firstObject = 0;
53 for (
unsigned int j = firstObject + 1; j <
mNumObjects; j++)
55 if (pBitvector[firstObject * mNumObjects - firstObject * (firstObject + 1) / 2 + j])
66 std::vector<unsigned int> nodesToVisit;
67 nodesToVisit.push_back(firstObject);
68 std::vector<unsigned int> seenNodes;
69 seenNodes.push_back(firstObject);
70 while (!nodesToVisit.empty())
72 unsigned int currentNode = nodesToVisit[0];
73 nodesToVisit.erase(nodesToVisit.begin());
77 unsigned int indexMin = std::min(currentNode, i);
78 unsigned int indexMax = std::max(currentNode, i);
79 unsigned int bitvectorindex = indexMin * mNumObjects - indexMin * (indexMin + 1) / 2 + (indexMax - indexMin) - 1;
81 if (pBitvector[bitvectorindex] && (std::find(seenNodes.begin(), seenNodes.end(), i) == seenNodes.end()))
83 nodesToVisit.push_back(i);
84 seenNodes.push_back(i);
bool isConnected(std::vector< bool > pBitvector)
ConnectivityChecker(unsigned int pNumObjects)