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: Guilherme Ferraz de Arruda
Subject: Re: [igraph] igraph_get_all_shortest_paths memory problem
Date: Tue, 1 Mar 2011 23:34:50 -0300

I have made a little project that shows my problem.

Thanks for all.

Guilherme.


2011/3/1 Gábor Csárdi <address@hidden>:
> 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
>

Attachment: CMakeLists.txt
Description: Text document

Attachment: information.c
Description: Text Data

Attachment: information.h
Description: Text Data

Attachment: main.cpp
Description: Text Data


reply via email to

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