生成随机图

让某人输入一个整数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;
    }
    

    这是迄今为止我的代码。 它是否产生权重? 这是什么意思,我必须退还一双?


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

    在每条边都存在或不存在的情况下(即权重为0或1),可以有以下几种:

    无向图

    这张图片是从互联网上被盗取的,所以我对此不以为然。 请注意,由于邻接矩阵是对称的,因此您可以轻松确认第一个图是无向的。 同样,由于矩阵不是对称的,所以第二个图是有向的。

    链接地址: http://www.djcxy.com/p/37313.html

    上一篇: Generating random Graph

    下一篇: Bipartite selection with associated vertex cost