Grafo di Erdos-Renyi in C

Messaggioda bad.alex » 16/05/2017, 20:04

Ciao ragazzi.
Ho scritto il seguente codice per un grafo Erdos-Renyi:

Codice:
void erdos_graph(void){

    int i , j, connected[N], neighbour[N], matrix[N][N];
    double value;
   
    printf("\nErdos-Renyi Random Graph\n");
    printf("\n");
   
    for (i=0; i<N; i++){
        for (j=0; j<N; j++){
           
            matrix[i][j] = 0;
            matrix[j][i] = 0;
        }
    }
   
    srand((unsigned)time(NULL));
   
    double prob=(rand()/(double)(RAND_MAX+1.));
   
    int num_edges = 0;
   
    for(i=0; i<N; i++){
       
        connected[i]=0;
        j=rand()%N;
        if(i!=j){
            matrix[i][j]=1;
            neighbour[i]=j;
            value=prob;
            if(value>prob){
                matrix[i][j]=0;
                j=prob*N;
                matrix[i][j]=1;
                neighbour[i]=j;
            }
        }
       
        if(i!=j){
           
            matrix[i][j] = 1;
            matrix[j][i] = 1;
           
           
            num_edges++;
        }
    }
   
   
    for(i=0; i<N;++i){
        for(j=0; j<N; ++j){
            printf("%d", matrix[i][j]);
        }
        printf("\n");
    }


ma soltanto ora mi sono reso conto che il grafo è disconnesso. Potreste dirmi dove sto sbagliando?
Dovrei scrivere questo grafo/matrice all'interno di un file testo.

Spero possiate aiutarmi a capire dove sta l'errore.

Vi ringrazio,

Alex
bad.alex
Senior Member
Senior Member
 
Messaggio: 1066 di 1283
Iscritto il: 10/01/2007, 19:01

Re: Grafo di Erdos-Renyi in C

Messaggioda apatriarca » 17/05/2017, 10:44

Il modello di Erdos-Renyi non garantisce che il grafo sia connesso. Per avere un grafo connesso devi cambiare modello.
apatriarca
Moderatore
Moderatore
 
Messaggio: 4628 di 10435
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Grafo di Erdos-Renyi in C

Messaggioda bad.alex » 17/05/2017, 10:56

Ti ringrazio per la risposta.
Volevo provare a renderlo connesso per costruzione, ma effettivamente qualcosa non tornava :wink:
bad.alex
Senior Member
Senior Member
 
Messaggio: 1067 di 1283
Iscritto il: 10/01/2007, 19:01


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite