igraph-help
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [igraph] igraph_get_all_shortest_paths memory problem


From: Gábor Csárdi
Subject: Re: [igraph] igraph_get_all_shortest_paths memory problem
Date: Tue, 1 Mar 2011 21:06:10 -0500

Hi,

please send a program that we can actually compile and run, and it
reproduces your problem.

Thanks,
Gabor

On Tue, Mar 1, 2011 at 8:56 PM, Guilherme Ferraz de Arruda
<address@hidden> wrote:
> Hi,
>
> I have a problem with memory allocation and free. My program memory is
> increasing.
> My code:
>
> long int GetValue(igraph_vector_t *v, long int i){
>  return (long int) VECTOR(*v)[i];
> }
>
> long int GetLastValue(igraph_vector_t *v){
>  return (long int) VECTOR(*v)[igraph_vector_size(v)-1];
> }
>
> double Ppib(igraph_t* g, igraph_vector_t *v){
>  long int ki = 0, kj = 0;
>  igraph_vector_t res0;
>  igraph_vector_init(&res0, 0);
>
>  double acc = 1.0;
>
>  igraph_degree(g, &res0,
> igraph_vss_1((igraph_integer_t)VECTOR(*v)[0]), IGRAPH_ALL,
> IGRAPH_NO_LOOPS);
>  ki = (double)VECTOR(res0)[0];
>  igraph_vector_clear(&res0);
>
>  long int l = 0;
>  for(l=1; l<igraph_vector_size(v) - 1; l++){
>    igraph_degree(g, &res0,
> igraph_vss_1((igraph_integer_t)VECTOR(*v)[l]), IGRAPH_ALL,
> IGRAPH_NO_LOOPS);
>    kj = (double)VECTOR(res0)[0];
>    acc *= (double)1.0/(double)(kj - 1.0);
>  }
>
>  igraph_vector_destroy(&res0);
>
>  return acc/ki;
> }
>
> int CreateSMatrix(igraph_t* g, double** S){
>  long int N = igraph_vcount(g);
>
>  long int vertice = 0;
>  long int i = 0, j = 0, k = 0;
>
>    for(vertice=0; vertice<N; vertice++){
>        igraph_vector_ptr_t vecs;
>        igraph_vector_ptr_init(&vecs, N);
>
>        for (i=0; i<igraph_vector_ptr_size(&vecs); i++) {
>          VECTOR(vecs)[i] = calloc(1, sizeof(igraph_vector_t));
>          igraph_vector_init(VECTOR(vecs)[i], 0);
>        }
>
>        igraph_get_all_shortest_paths(g, &vecs, NULL, vertice,
> igraph_vss_all(), IGRAPH_ALL);
>
>        for (k=0; k<igraph_vector_ptr_size(&vecs); k++) {
>          //P(p(i,b)
>          S[GetValue(VECTOR(vecs)[k], 0)][GetLastValue(VECTOR(vecs)[k])] +=
> Ppib(g, VECTOR(vecs)[k]);
>
>          igraph_vector_destroy(VECTOR(vecs)[k]);
>          free(VECTOR(vecs)[k]);
>        }
>
>        igraph_vector_ptr_destroy(&vecs);
>
>      }
>
>      for(i=0; i<N; i++)
>        for(k=0; k<N; k++)
>          if(S[i][k] != 0.0) S[i][k] = (-1)*log2(S[i][k]);
>
>      return 1;
> }
>
> There is no error at compiling time and execution time.
>
> It's almost  iqual as the igraph_get_shortest-paths.c example. I
> checked it many times and couldn't find an memory problem.
> Is there a trick?
>
> Thanks for all.
>
> Guilherme.
>
> _______________________________________________
> igraph-help mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/igraph-help
>



-- 
Gabor Csardi <address@hidden>     UNIL DGM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]