Grafo di Erdos-Renyi in C

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

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

Risposte
apatriarca
Il modello di Erdos-Renyi non garantisce che il grafo sia connesso. Per avere un grafo connesso devi cambiare modello.

bad.alex
Ti ringrazio per la risposta.
Volevo provare a renderlo connesso per costruzione, ma effettivamente qualcosa non tornava :wink:

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.