怎样随机生成一个有n个顶点的无向连通图,用C++怎么写?
有什么要求吗?
如果没有任何要求 那就很简单了
生成在[m,n]中的随机数会吧
随机生成总结点数n
i = 0;
loop i
生成第i个节点
如果i>1 对[0,i-1]每个节点 随机生成是否连通关系
i++
直到i==n时退出循环
ok了
将N阶全1方阵 A 遍历一次...
每个元素 A[i][j] = (rand()&1)
....
由于对称性只要 n*(1+n)/2 次即可。
1、使用随机函数rand生成随机数即可。
2、例程:
#define MAX_DISTANCE 100000
bool** G;//图,G[i][j]=true表示顶点i和j相邻
int N;//图的顶点个数
int **D;//D[i][j]表示点i和点j的距离
void floyd(){
//initialize
for (int i=0;i<N;i++)
{
for (int j=0;j<N;j++)
{
if (G[i][j])//i和j连通,则他们的距离是1
{
D[i][j]=1;
D[j][i]=1;
}else{//否则不可达
D[i][j]=MAX_DISTANCE;
}
}
}
//floyd
for (int k=0;k<N;k++)
{
for (int i=0;i<N;i++)
{
for (int j=0;j<N;j++)
{
if (D[i][j]>D[i][k]+D[k][j])
{
D[i][j]=D[i][k]+D[k][j];
}
}
}
}
}
int main(){
srand((unsigned int)time(NULL));
N=rand()%10+5;
G=new bool *[N];
D=new int *[N];
for (int i=0;i<N;i++)
{
G[i]=new bool[N];
D[i]=new int[N];
for (int j=0;j<N;j++)
{
G[i][j]=0;
D[i][j]=0;
}
}
for (int i=0;i<N;i++)
{
int n=rand()%N;//顶点i最多和n个顶点连通
for (int k=0;k<n;k++)
{
int j=rand()%N;
G[i][j]=true;
G[j][i]=true;
}
}
floyd();
}
#define MAX_DISTANCE 100000
bool** G;//图,G[i][j]=true表示顶点i和j相邻
int N;//图的顶点个数
int **D;//D[i][j]表示点i和点j的距离
void floyd(){
//initialize
for (int i=0;i<N;i++)
{
for (int j=0;j<N;j++)
{
if (G[i][j])//i和j连通,则他们的距离是1
{
D[i][j]=1;
D[j][i]=1;
}else{//否则不可达
D[i][j]=MAX_DISTANCE;
}
}
}
//floyd
for (int k=0;k<N;k++)
{
for (int i=0;i<N;i++)
{
for (int j=0;j<N;j++)
{
if (D[i][j]>D[i][k]+D[k][j])
{
D[i][j]=D[i][k]+D[k][j];
}
}
}
}
}
int main(){
srand((unsigned int)time(NULL));
N=rand()%10+5;
G=new bool *[N];
D=new int *[N];
for (int i=0;i<N;i++)
{
G[i]=new bool[N];
D[i]=new int[N];
for (int j=0;j<N;j++)
{
G[i][j]=0;
D[i][j]=0;
}
}
for (int i=0;i<N;i++)
{
int n=rand()%N;//顶点i最多和n个顶点连通
for (int k=0;k<n;k++)
{
int j=rand()%N;
G[i][j]=true;
G[j][i]=true;
}
}
floyd();
}
JAVA请从控制台输入一个整数N,随机产生该N*N范围内的数字(含1和N),不...
import java.util.Scanner;import java.util.Random;public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in);Random random = new Random();System.out.print("请输入一个整数N:");int n = input.nextInt();if (n < 1) { System.out....
matlab 如何生成一个n行3列的随机矩阵,每一行元素相同,矩阵元素为1...
a=randint(8,1,[1,4]);U=[a,a,a];这个行不?
请问:怎样用matlab随机生成一个只有0,1元素的矩阵?用什么命令,谢谢啊...
编写rand_BinaryMatrix函数,代码如下:function [ BinaryMatrix ] = rand_BinaryMatrix( i, j )随机生成i行j列的0和1元素填充的矩阵 BinaryMatrix = rand(i,j);for count_i = 1:i for count_j = 1:j if BinaryMatrix(count_i, count_j) < 0.5 BinaryMatrix(count_i, count_j) = 0...
如何用matlab生成随机数函数
rand函数的用法 :(1)命令:rand(N),rand(M,N)等 (2)对于rand(N),通过help rand得到的解释是:R = rand(N) returns an N-by-N matrix containing pseudorandom values drawn from the standard uniform distribution on the open interval(0,1).(3)即rand(N)是生成一个符合标准均匀...
c语言生成的随机数能指定其中一个数字出现的次数,求大神赐教,顺便解释...
include<stdio.h> include<stdlib.h> include define NT 10\/\/生成随机数的个数 define MN 1\/\/随机数范围(正整数)define MX 100\/\/随机数范围(正整数)int main(){ int i,a[NT],num=0,n=-1,rn;srand(time(NULL));printf("即将生成%d~%d的%d个随机数,请指定某一个数字出现的次数:\\n...
excel如何随机产生一个各个位置上的数各不相同的四位整数?
strResult = strResult & CStr(GetOneRandomDigit(oRecord, nIndex <> 1))Next MyRandomNumber = strResult End Function 3、键入Alt+Q退出VBA编辑器;4、在需要使用的单元格输入公式:=MyRandomNumber(4),回车;5、自动生成了一个四位随机数,各个数位均不重复。6、向下拖动复制可以生成一列随机...
请问:怎样用matlab随机生成一个只有0,1元素的矩阵?用什么命令,谢谢啊...
没听说过有直接生成的。可以这样子,比如要生成m*n的矩阵,先用rand函数生成元素均为0-1之间的随机数的矩阵,然后逐个判断,0.5一下的改为0,0.5以上的改为1:A=rand(m,n);for i=1:m for j=1:n if A(i,j)<=0.5 A(i,j)=0; else A(i,j)=1; end endend stevenxcy | 发布于2010-10-21 举...
vb编程问题,求求各位大神,随机产生一个m行n列的二维数组,编写一个
If c Mod 10 = 0 Then Print End If Next j Next iEnd SubPrivate Sub Sort(ByRef a() As Integer, ByVal m As Integer, ByVal n As Integer) For i = 1 To m For j = 1 To n - 1 For k = j + 1 To n If a(i, k) < a(...
python随机选择多少行(2023年最新整理)
high=4)#打印结果print(n)#结果:2.4462417140153114 3按照指定概率生成随机数 有时候我们需要按照指定的概率生成随机数,比如已知盒子中每种颜色的球的比例,猜测下一次取出的球的颜色。在这里介绍的问题和上面的例子相似,要求给定一个概率列表,从列表对应的数字列表或区间列表中生成随机数,分两部分讨论...
excel如何在一个单元格内输出N个随机数?
Private Sub Worksheet_Change(ByVal Target As Range)If Target = [a3] Then [b3].ClearContents For i = 1 To [a3][b3] = [b3] & " " & Int((Rnd * (85 - 82)) + 82)Next End If End Sub
度祁希瓦: #define MAX_DISTANCE 100000 bool** G;//图,G[i][j]=true表示顶点i和j相邻 int N;//图的顶点个数 int **D;//D[i][j]表示点i和点j的距离 void floyd(){ //initialize for (int i=0;i<N;i++) { for (int j=0;j<N;j++) { if (G[i][j])//i和j连通,则他们的距离是1 { D[i][j]=1; ...
陵水黎族自治县18469413415: 怎样随机生成一个无向连通图,说出思路即可 - ?
度祁希瓦: 将N阶全1方阵 A 遍历一次...每个元素 A[i][j] = (rand()&1)....由于对称性只要 n*(1+n)/2 次即可.
陵水黎族自治县18469413415: 如何求有n个顶点的无向连通图个数? - ?
度祁希瓦: 无向连通图 • 设为 f[n],再设 n 个点的图个数为 h[n] • 递推,减掉不合法的,有公式: • f[n] = h[n] - sum{i• 可以FFT加速的样子……
陵水黎族自治县18469413415: 最小生成数 顶点 边?
度祁希瓦: 顶点数n边数n-1 证明... 生成树的定义就是要包含所有的顶点...所以是n个顶点. 如果少于n-1条边,那么图不连通,如果多于n-1条边,那么将出现环 我... 最小生成树首先是一个生成树 生成树的定义: 1. 图的生成树和森林 对于一个拥有n个顶点的无向连通图,它的边数一定多余n-1条.若从中选择n-1条边,使得无向图仍然连通,则由n个顶点及这 n-1条边(弧)组成的图被称为原无向图的生成树.显示了一个无向连通图的生成树,双线圈表示的顶点为生成树的根结点. http://baike.baidu.com/view/143347.html
陵水黎族自治县18469413415: 数据结构无向图的建立 - ?
度祁希瓦: 您好,这是我们数据结构一个作业程序,希望能帮到你.#include <stdio.h>#include<stdlib.h>#define int_max 10000#define inf 9999#define max 20//邻接矩阵定义 typedef struct ArcCell { int adj; char *info; }ArcCell,AdjMatrix[20][20]; typedef struct ...
陵水黎族自治县18469413415: 一个有n个顶点的无向连通图,最少有几条边 - ?
度祁希瓦:[答案] 设边数为E 首先,有向连通的一个必要条件是图的无向底图连通,这意味着E >= n-1 其次,证明E > n-1.因当E=n-1时,无向底图为树,任取两顶点s,t,从s到t有且只有一条无向路径,若有向路径s->t连通,则有向路径t->s必不存在.得证 再次,证明E...
陵水黎族自治县18469413415: 对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为??? - ?
度祁希瓦: 对于一个具有n个顶点的无向连通图,它包含的连通分量的个数为:n(n-1)/2 希望对你有帮助,记得采纳哦~
陵水黎族自治县18469413415: 怎么用c语言生成一个固定顶点数和固定边数的无向图 - ?
度祁希瓦: #defineInfinity1000#defineMaxVertexNum35#defineMAX40#include#include#include#include#includetypedefstructarcell//边的权值信息{intadj;//权值}arcell,adjmatrix[MaxVertexNum][MaxVertexNum];//图的邻接矩阵类型typedefstructvexsinfo//顶点...
陵水黎族自治县18469413415: 具有n个顶点的无向图的生成树的边数为 - ?
度祁希瓦: 具有n个顶点的无向图的生成树的边数为N-1条边
陵水黎族自治县18469413415: 设无向连通图G有n个顶点,证明G至少有(n - 1)条边. - ?
度祁希瓦: 设连通图G有(n+1)个顶点,若每个顶点连出至少两条边,那么此时至少有n+1条边(任意图上所有顶点度数和等于边数的两倍),结论已经成立.否则,那么至少有一个顶点只连出一条边. 不妨设为A,由于去掉这条边AB后不影响其他点的...