Advertisement
Guest User

Untitled

a guest
Nov 21st, 2014
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. struct find_approximate_number_of_cliques_visitor
  2.     {
  3.         typedef typename boost::graph_traits<BaseGraph>::vertex_descriptor Vertex;
  4.         typedef typename boost::graph_traits<BaseGraph>::vertex_iterator VertexIterator;
  5.         typedef std::deque<Vertex> Clique;
  6.  
  7.         // What size cliques we are looking for.
  8.         int desired_clique_size;
  9.         // Total number of cliques of size desired_clique_size (INCLUDING OVERLAPPING CLIQUES)
  10.         long long total_number_of_cliques;
  11.  
  12.         // Constructor
  13.         find_approximate_number_of_cliques_visitor(int size) : desired_clique_size(size), total_number_of_cliques(0) {}
  14.  
  15.         // Called when a maximal clique is found
  16.         template <typename Clique, typename BaseGraph>
  17.         void clique(const Clique& maximal_clique, const BaseGraph& g)
  18.         {
  19.             std::cout << "in clique start (approx), size:" << maximal_clique.size() << ", total number:" << total_number_of_cliques << std::endl;
  20.             // TODO: may need to sort edges?
  21.             int maxclique_size = maximal_clique.size();
  22.             std::cout << "in clique (approx), size:" << maximal_clique.size() << std::endl;
  23.             long long number_of_cliques = 0;
  24.             if(maxclique_size < desired_clique_size)
  25.                 number_of_cliques = 0;
  26.             else
  27.                 number_of_cliques = 1;
  28.             std::cout << "in clique preloop(approx), number_of_cliques:" << number_of_cliques << std::endl;
  29.             // Repeat maxclique_size - desired_clique_size times.
  30.             for(int i = maxclique_size; i > desired_clique_size; --i) {
  31.                 std::cout << "in clique loop(approx), number_of_cliques:" << number_of_cliques << ", i:" << i << std::endl;
  32.                 number_of_cliques *= i;
  33.             }
  34.             std::cout << "in clique postloop(approx), number_of_cliques:" << number_of_cliques << std::endl;
  35.             total_number_of_cliques += number_of_cliques;
  36.             std::cout << "in clique end(approx), total_number_of_cliques:" << total_number_of_cliques << std::endl;
  37.         }
  38.     };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement