Exemplo n.º 1
0
int main(int argc, char* argv[]) {
  if(argc != 2) {
	printf("USAGE: %s path/to/file.graphml.xml\n", argv[0]);
	return -1;
  }

  char* fileName = argv[1];

  igraph_attribute_table_t* oldHandler = igraph_i_set_attribute_table(&igraph_cattribute_table);
  FILE* graphFile = fopen(fileName, "r");
  if(!graphFile) {
	printf("error opening graph file at %s\n", fileName);
	return -2;
  }

  igraph_t graph;
  time_t start = time(NULL);
  int r = igraph_read_graph_graphml(&graph, graphFile, 0);
  time_t end = time(NULL);
  fclose(graphFile);

  if(r != IGRAPH_SUCCESS) {
	printf("error loading graph file at %s\n", fileName);
	r = -3;
  } else {
	printf("successfully loaded graph file at %s in %li seconds\n", fileName, (long int)(end-start));
	r = 0;
  }

  printf("graph has %li vertices and %li edges\n", (long int)igraph_vcount(&graph), (long int)igraph_ecount(&graph));

  igraph_integer_t largestCliqueSize = 0;
  start = time(NULL);
  r = igraph_clique_number(&graph, &largestCliqueSize);
  end = time(NULL);

  if(r != IGRAPH_SUCCESS) {
	printf("error computing igraph_clique_number\n");
	r = -4;
  } else {
	printf("igraph_clique_number = %i in %li seconds\n", (int) largestCliqueSize, (long int)(end-start));
	r = 0;
  }

  start = time(NULL);
  igraph_destroy(&graph);
  end = time(NULL);
  printf("igraph_destroy finished in %li seconds\n", (long int)end-start);

  return r;
}
Exemplo n.º 2
0
int main() {
  
  igraph_t g;
  igraph_vector_ptr_t result;
  igraph_es_t es;
  igraph_integer_t omega;
  long int i, j, n;
  const int params[] = {4, -1, 2, 2, 0, 0, -1, -1};
 
  igraph_set_warning_handler(warning_handler_ignore);

  igraph_vector_ptr_init(&result, 0);
  igraph_full(&g, 6, 0, 0);
  igraph_es_pairs_small(&es, 0, 0, 1, 0, 2, 3, 5, -1);
  igraph_delete_edges(&g, es);
  igraph_es_destroy(&es);
  
  for (j=0; j<sizeof(params)/(2*sizeof(params[0])); j++) {
    if (params[2*j+1] != 0) {
      igraph_cliques(&g, &result, params[2*j], params[2*j+1]);  
    } else {
      igraph_largest_cliques(&g, &result);
    }
    n = igraph_vector_ptr_size(&result);
    printf("%ld cliques found\n", (long)n);
    canonicalize_list(&result);
    for (i=0; i<n; i++) {
      igraph_vector_t* v = (igraph_vector_t*) igraph_vector_ptr_e(&result,i);
      print_vector(v);
      igraph_vector_destroy(v);
      free(v);
    }
  }
   
  igraph_clique_number(&g, &omega);
  printf("omega=%ld\n", (long)omega);

  test_callback(&g);

  igraph_destroy(&g);

  igraph_tree(&g, 5, 2, IGRAPH_TREE_OUT);
  igraph_cliques(&g, &result, 5, 5);
  if (igraph_vector_ptr_size(&result) != 0) return 1;

  igraph_destroy(&g);
  igraph_vector_ptr_destroy(&result);

  return 0;
}