C ++程序使用随机边生成来创建随机图
在此程序中,将为随机顶点和边缘生成随机图。该程序的时间复杂度为O(v*e)。其中v是顶点数,e是边数。
算法
Begin
Develop a function GenRandomGraphs(), with ‘e’ as the
number of edges and ‘v’ as the number of vertexes, in the argument list.
为顶点和边的数量分配随机值 of the graph,
using rand() function.
打印每个顶点的连接,而不管 the
direction.
Print “Isolated vertex” for the vertex having no degree.
End示例
#include<iostream>
#include<stdlib.h>
using namespace std;
void GenRandomGraphs(int NOEdge, int NOVertex)
{
int i, j, edge[NOEdge][2], count;
i = 0;
//为顶点和边的数量分配随机值
of the graph, Using rand().
while(i < NOEdge)
{
edge[i][0] = rand()%NOVertex+1;
edge[i][1] = rand()%NOVertex+1;
//打印每个顶点的连接,而不管
the direction.
if(edge[i][0] == edge[i][1])
continue;
else
{
for(j = 0; j < i; j++)
{
if((edge[i][0] == edge[j][0] &&
edge[i][1] == edge[j][1]) || (edge[i][0] == edge[j][1] &&
edge[i][1] == edge[j][0]))
i--;
}
}i
++;
}
cout<<"\nThe generated random graph is: ";
for(i = 0; i < NOVertex; i++)
{
count = 0;
cout<<"\n\t"<<i+1<<"-> { ";
for(j = 0; j < NOEdge; j++)
{
if(edge[j][0] == i+1)
{
cout<<edge[j][1]<<" ";
count++;
} else if(edge[j][1] == i+1)
{
cout<<edge[j][0]<<" ";
count++;
} else if(j== NOEdge-1 && count == 0)
cout<<"孤立的顶点!"; //Print “Isolated vertex” for the vertex having no degree.
}
cout<<" }";
}
}
int main(){
int i, e, n;
cout<<"Random graph generation: ";
n= 7 + rand()%6;
cout<<"\nThe graph has "<<n<<" vertices";
e = rand()%((n*(n-1))/2);
cout<<"\nand has "<<e<<" edges.";
GenRandomGraphs(e, n);
}输出结果
Random graph generation:
The graph has 8 vertices
and has 18 edges.
The generated random graph is:
1-> { 5 4 2 }
2-> { 4 8 6 3 1 5 }
3-> { 5 4 7 2 }
4-> { 2 3 7 1 8 5 }
5-> { 3 1 7 4 2 8 }
6-> { 2 8 7 }
7-> { 4 3 5 6 }
8-> { 2 6 4 5 }热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短