生成随机图

时间:2011-04-24 14:28:54

标签: c++ graph

我需要生成不同维度的随机单源/单汇流网络,以便我可以衡量一些算法的性能,例如Ford-Fulkerson和Dinic。

Kruskal算法是否可以生成这样的图形?

1 个答案:

答案 0 :(得分:1)

要创建通用流网络,您只需创建一个邻接矩阵。

adj [u] [v] =从节点u到节点v的容量

所以,你只需要随机创建这个矩阵。

例如,如果n是您想要的顶点数(您也可以随机生成):

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()