diff --git a/cpp/switchchain.cpp b/cpp/switchchain.cpp index 88c661e51c188682775e3ff0659f274d5cea1b69..188620c860f59c1cbc8690d1eed0e77dd8bf3262 100644 --- a/cpp/switchchain.cpp +++ b/cpp/switchchain.cpp @@ -2,6 +2,7 @@ #include "graph.hpp" #include "powerlaw.hpp" #include +#include #include #include #include @@ -63,6 +64,27 @@ class SwitchChain { std::bernoulli_distribution permutationDistribution; }; +void getTriangleDegrees(const Graph& g) { + std::vector> trids; + const auto& adj = g.getAdj(); + int triangles = 0; + for (auto& v : adj) { + for (unsigned int i = 0; i < v.size(); ++i) { + for (unsigned int j = i + 1; j < v.size(); ++j) { + if (g.hasEdge({v[i], v[j]})) { + ++triangles; + std::array ds = {v.size(), adj[v[i]].size(), + adj[v[j]].size()}; + std::sort(ds.begin(), ds.end()); + trids.push_back(ds); + } + } + } + } + assert(triangles % 3 == 0); + return; +} + // // Assumes degree sequence does NOT contain any zeroes! // @@ -201,7 +223,7 @@ int main() { // For a single n,tau take samples over several instances of // the degree distribution. // 500 samples seems to give reasonable results - for (int degreeSample = 0; degreeSample < 200; ++degreeSample) { + for (int degreeSample = 0; degreeSample < 1; ++degreeSample) { // Generate a graph // might require multiple tries for (int i = 1; ; ++i) { @@ -277,6 +299,7 @@ int main() { constexpr int measureSkip = 1; + int movesDone = 0; int triangles[measurements];