IterOrbit
Subgraph isomorphism with iterative graphlet-orbit filtering
Loading...
Searching...
No Matches
Classes | Namespaces | Typedefs | Functions
OrbitCounter.cpp File Reference

Graphlet orbit counting on top of the Escape/EVOKE library (extern/Escape). More...

#include "OrbitCounter.h"
#include <algorithm>
#include <chrono>
#include <cmath>
#include <utility>
#include <stdexcept>
#include <iostream>
#include "Escape/OrbitStructure.h"
#include "Escape/GetAllOrbitCounts.h"
#include "Escape/FiveVertexOrbit.h"
#include "Escape/FourVertexOrbit.h"
Include dependency graph for OrbitCounter.cpp:

Classes

struct  anonymous_namespace{OrbitCounter.cpp}::EdgeTriangles
 

Namespaces

namespace  anonymous_namespace{OrbitCounter.cpp}
 

Typedefs

using anonymous_namespace{OrbitCounter.cpp}::Clock = std::chrono::high_resolution_clock
 

Functions

double anonymous_namespace{OrbitCounter.cpp}::msSince (Clock::time_point start)
 
void anonymous_namespace{OrbitCounter.cpp}::fourCliqueOrbitsByMarking (const CGraph *gout, double *clique_counts, const std::vector< double > *cap)
 
void anonymous_namespace{OrbitCounter.cpp}::fiveCliqueOrbitsByMarking (const CGraph *gout, double *clique_counts, const std::vector< double > *cap)
 
void anonymous_namespace{OrbitCounter.cpp}::threeVertexOrbitsByMarking (const CGraph *cg, const CGraph *gout, OrbitInfo &oc, bool count_triangles)
 
void anonymous_namespace{OrbitCounter.cpp}::pawDiamondOrbits (const CGraph *gout, OrbitInfo &oc)
 
void anonymous_namespace{OrbitCounter.cpp}::fourCycleOrbits (const CGraph *gout, const CGraph *gin, double *cycle_counts)
 
template<typename F >
void anonymous_namespace{OrbitCounter.cpp}::forEachFourClique (const CGraph *gout, F &&f)
 
void anonymous_namespace{OrbitCounter.cpp}::fourCliqueOrbitsWithEdges (const CGraph *gout, OrbitInfo &oc)
 
void anonymous_namespace{OrbitCounter.cpp}::pattern66Orbits (const CGraph *gout, OrbitInfo &oc)
 
void anonymous_namespace{OrbitCounter.cpp}::intersectSortedInto (const VertexIdx *a, EdgeIdx na, const VertexIdx *b, EdgeIdx nb, std::vector< VertexIdx > &out)
 
EdgeTriangles anonymous_namespace{OrbitCounter.cpp}::buildEdgeTriangles (const CGraph *cg, const CGraph *gout, const CGraph *gin)
 
std::vector< EdgeIdx > anonymous_namespace{OrbitCounter.cpp}::ginToGoutPositions (const CGraph *gout, const CGraph *gin)
 
void anonymous_namespace{OrbitCounter.cpp}::fourCycleOrbitsWithEdges (const CGraph *gout, const CGraph *gin, OrbitInfo &oc)
 
void anonymous_namespace{OrbitCounter.cpp}::fiveCycleOrbits (const CGraph *cg, const CGraph *gout, const CGraph *gin, double *c34)
 
void anonymous_namespace{OrbitCounter.cpp}::chordalWedgeOrbits (const CGraph *cg, const EdgeTriangles &et, OrbitInfo &oc, bool do62, bool do6364, bool do6869)
 
void anonymous_namespace{OrbitCounter.cpp}::almostFiveCliqueOrbits (const CGraph *cg, const EdgeTriangles &et, OrbitInfo &oc)
 

Detailed Description

Graphlet orbit counting on top of the Escape/EVOKE library (extern/Escape).

The routines in the anonymous namespace are reimplementations of Escape routines that return the same counts with less work, mostly by replacing binary searches for edges with marking; each one's comment names the Escape routine it replaces and what differs. test/orbit_equivalence.cpp checks them against the originals. See OrbitCounter.h.