Dati di grafi grandi per test

nato_pigro1
Mi servirebbero dei grafi molto grandi forniti sotto forma di matrici di adiacenza per poter testare le prestazioni di function implementate in matlab.

Dove posso trovarli?

Risposte
hamming_burst
Ciao,
ho in mente un DB oppure un sito, ma dovrei vedere se sono ancora attivi. per il momento: tali grafi devono avere qualche particolare disposizione, definizione, ecc..
Solito:
- diretto
- SCC
- DAG
...

nato_pigro1
devo testare una function sul massimo flusso, quindi deve avere un pozzo e una sorgente. Poi devo testare l'algoritmo di Dijkstra, per cui non deve avere pesi negativi.

Raptorista1
Devono avere per forza un significato oppure vanno bene anche grafi generati casualmente?

nato_pigro1
vanno bene generati casualmente, però, per gli algoritmi che devono testare, non devono avere pesi negativi e devono avere pozzo/sorgente.

Raptorista1
Oooh, non c'è niente di meglio che un bell'esercizio di programmazione, la mattina appena alzati :D

Ti ho scritto un programma in C che fa quello che ti serve :)

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, const char *argv[])
{
        srand(time(NULL));
        int N = 50;
        int i, j;
        int* matrix = (int*) malloc(sizeof(int) * N * N);

        matrix[0] = 0;

        //sorgente
        for (i = 1; i < N - 1; i++)
        {
                matrix[i] = abs(rand() % 3 * rand() % 10);
                matrix[N*i+1] = 0;
        }

        //altri
        for (j = 1; j < N - 1; j++)
        {
                for (i = 1; i < N; i++)
                {
                        matrix[i + N * j] = abs(rand() % 3 * rand() % 10);
                }
        }

        //pozzo
        for (i = 0; i < N; i++)
        {
                matrix[N * N - N + i] = 0;
        }

        FILE* out = fopen("matrix.txt", "w");
        for (i = 0; i < N; i++)
        {
                for (j = 0; j < N; j++)
                {
                        fprintf(out, "%d\t", matrix[N*i + j]);
                }
                fprintf(out, "\n");
        }
        close(out);
        return 0;
}


Dovrebbe essere facile da leggere, così che lo puoi adattare alle tue necessità. Fammi sapere se ti soddisfa :)

nato_pigro1
grazie! :)

vict85
Immagino che debba anche essere connesso il grafo. Ha poco senso considerarne uno non connesso...

hamming_burst
@nato_pigro: Niente, ho controllato il DB non è più attivo. Ma se hai risolto con grafi random, meglio.

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