2011-04-24 5 views
0

J'ai besoin de générer des réseaux de flux aléatoires mono-source/mono-puits de différentes dimensions afin que je puisse mesurer la performance de certains algorithmes tels que Ford-Fulkerson et Dinic. L'algorithme de Kruskal est-il un moyen de générer de tels graphes?Génération de graphiques aléatoires

Répondre

1

Pour créer un réseau de flux générique, il vous suffit de créer une matrice d'adjanctions.

adj [u] [v] = capacité du nœud u vers le nœud v

Alors, il vous suffit de créer au hasard cette matrice.

Par exemple, si n est le nombre de sommets que vous voulez (vous pouvez faire ce hasard aussi):

for u in 0..n-1: 
    for v in 0..u-1: 
     if (rand() % 2 and u != sink and v != source or u == source): 
     adj[u][v] = rand() 
     adj[v][u] = 0 
     else: 
     adj[u][v] = 0 
     adj[v][u] = rand() 
+0

Ma mise en œuvre utilise déjà une matrice de contiguïté donc s'il est comme vous le dites, il est simple. Mais ne devrais-je pas m'assurer que le graphique aura une seule source et un seul puits? –

+0

Oui. Vous pouvez simplement ajouter une vérification de la source et du récepteur, par exemple dans mon code source édité. Le puits et la source ne sont que 2 sommets que vous avez désignés à l'avance comme source et puits. –

+0

Merci pour votre aide. Après tout, cela nécessitait une méthode simple. Merci encore! –

Questions connexes