C++ 程序,用于针对给定的边数生成随机无向图


这是一款 C++ 程序,在其中我们针对给定的边数“e”生成无向随机图。该算法基本上实现了网络通信,并且该算法的时间复杂度为 O(log(n))。

算法

Begin
   Function GenerateRandomGraphs(), has ‘e’ as the number edges in the argument list.
   Initialize i = 0
   while(i < e)
      edge[i][0] = rand()%N+1
      edge[i][1] = rand()%N+1
      Increment I;
   For i = 0 to N-1
      Initialize count = 0
      For j = 0 to e-1
         if(edge[j][0] == i+1)
            Print edge[j][1]
            Increase count
         else if(edge[j][1] == i+1)
            Print edge[j][0]
            Increase count
         else if(j == e-1 && count == 0)
   Print Isolated Vertex
End

示例

 在线演示

#include<iostream>
#include<stdlib.h>
#define N 10
using namespace std;
void GenerateRandomGraphs(int e) {
   int i, j, edge[e][2], count;
   i = 0;
   // generate a connection between two random numbers, for //sample a small case, limit the number of vertex to 10.
   while(i < e) {
      edge[i][0] = rand()%N+1;
      edge[i][1] = rand()%N+1;
      i++;
   }
   //Print all the connection of each vertex, irrespective of the //direction.
   cout<<"\nThe generated random graph is: ";
   for(i = 0; i < N; i++) {
      count = 0;
      cout<<"\n\t"<<i+1<<"-> { ";
         for(j = 0; j < e; j++) {
            if(edge[j][0] == i+1) {
               cout<<edge[j][1]<<" ";
               count++;
            }
            else if(edge[j][1] == i+1) {
               cout<<edge[j][0]<<" ";
               count++;
            }
            //Print “Isolated vertex” for the vertex having zero degree.
            else if(j == e-1 && count == 0)
               cout<<"Isolated Vertex!";
         }
      cout<<" }";
   }
}
int main() {
   int n, i ,e;
   cout<<"Enter the number of edges for the random graphs: ";
   cin>>e;
   GenerateRandomGraphs(e);
}

输出

Enter the number of edges for the random graphs: 10

The generated random graph is:
1-> { 10 7 }
2-> { 10 }
3-> { 7 8 7 }
4-> { 7 6 7 }
5-> { Isolated Vertex! }
6-> { 8 4 }
7-> { 4 3 4 1 3 }
8-> { 6 3 }
9-> { Isolated Vertex! }
10-> { 2 1 }

更新于:2019 年 7 月 30 日

357 次浏览

开启你的职业生涯

完成课程,获得认证

开始
广告