1 #pragma clang diagnostic push 2 #pragma clang diagnostic ignored "-Weverything" 5 #include "HyperCube.hh" 13 nVertex = pow(2, power);
26 std::vector<std::string> bitsVector(nVertex);
28 for (
int i = 0; i < nVertex; i++) {
30 std::string bits = b.to_string<char, std::char_traits<char>, std::allocator<char>>();
31 bits.erase(0, 64 - (
mPower + 1));
38 for (std::size_t i = 0; i < bitsVector.size(); i++) {
40 for (std::size_t j = 0; j < bitsVector.size(); j++) {
42 for (std::size_t k = 0; k < bitsVector[i].length(); k++) {
43 if (bitsVector[i][k] != bitsVector[j][k]) diff++;
55 if (it->second == nodeName) {
56 SPD_INFO(
"a node with that name has already been added");
64 _nodeMap.insert(std::pair<int, std::string>(i, nodeName));
72 if (it->second == nodeName) {
75 std::map<int, std::string> newMap;
78 for (std::map<int, std::string>::iterator mi =
_nodeMap.begin(); mi !=
_nodeMap.end(); ++mi) {
79 newMap[i] = mi->second;
94 std::vector<int> initVector = {
mStart};
95 mPaths.push_back(initVector);
99 std::vector<int> tmpVector;
100 for (std::size_t i = 0; i <
mPaths[
mPaths.size() - 1].size(); i++) {
103 for (std::size_t j = 0; j <
mAdjMatrix[pos].size(); j++) {
108 tmpVector.push_back(j + 1);
114 if (tmpVector.size() > 0) {
115 mPaths.push_back(tmpVector);
126 for (std::size_t i = 0; i <
mAdjMatrix.size(); ++i) {
128 for (std::size_t j = 0; j <
mAdjMatrix[i].size(); ++j) {
134 for (std::size_t i = 0; i <
mPaths.size(); ++i) {
136 for (std::size_t j = 0; j <
mPaths[i].size(); ++j) {
140 s.append(std::to_string(
mPaths[i][j]) +
"(" + position->second +
") ");
143 s.append(std::to_string(
mPaths[i][j]) +
" ");
150 #pragma clang diagnostic pop HyperCube(int power=3, int start=1)
Create HyperCube.
int mStart
Starting point.
std::vector< int > mPassedNodes
Passed nodes.
void createAdjMatrix()
create matrix adjacency
void createPaths()
Creat outPut vectors.
std::vector< std::vector< int > > mPaths
Output paths.
void print() const
Printing Hyper cube paths.
std::map< int, std::string > _nodeMap
avalible nodes and their numbers
void addNode(std::string nodeName)
add new node in HC
void removeNode(std::string nodeName)
remove node from HC
std::vector< std::vector< int > > mAdjMatrix
Matrix adjacency.