生成随机图

时间:2016-04-20 02:08:43

标签: c++ algorithm graph

有人输入一个整数N作为图中的顶点数。

  • 在每条边上指定随机权重,范围从1到10.不是所有可能的边 虽然存在!如上例所示,用X表示缺席边缘。
  • 返回一对(M,L),其中M和L分别是矩阵和列表表示 您正在生成的(相同)随机图。
  • 使用非数字字符作为顶点名称,以避免与边缘权重混淆。

#include <iostream>
#include <stdlib.h>
using namespace std;
void gen_random_graph(int n)
{
    int adj_matrix[n][n];
    for(int u = 0; u < n; u++)
    {
        for (int v = 0; v < n; v++)
        {
            if(adj_matrix[u][v]==adj_matrix[v][u])
            {
                adj_matrix[u][v] = rand() % 10 + 1;
                cout << adj_matrix[u][v] << endl;
            }
        }
    }

}

int main()
{
    int N;
    cout << "enter number of vertices" << endl;
    cin >> N;
    gen_random_graph(N);

    return 0;
}

到目前为止,这是我的代码。它是否产生了重量?什么意思我必须退回一对?

1 个答案:

答案 0 :(得分:1)

图形可以表示为N x N邻接矩阵(如您已设置的),其中matrix[i][j]中的值对应于将顶点i连接到顶点的边的权重{ {1}}。零对应于ji之间没有连接。如果j,那么您有一个无向图。此外,随机图将随机值作为顶点之间的边缘。

如果每条边存在或不存在(即权重为0或1),您可以拥有以下内容:

Undirected graphs

这张图片是从互联网上偷来的,所以我不相信。请注意,您可以轻松确认第一个图是无向的,因为邻接矩阵是对称的。同样,第二个图是有针对性的,因为矩阵不对称。