C 无向图邻接矩阵的生成
无向图的邻接矩阵本质上是对称的,矩阵中a->B或B->a的权重应对称表示。我已经实现了下面的代码来生成图的随机邻接矩阵,但它没有考虑这个属性。有人能建议我修改一下使它工作吗C 无向图邻接矩阵的生成,c,C,无向图的邻接矩阵本质上是对称的,矩阵中a->B或B->a的权重应对称表示。我已经实现了下面的代码来生成图的随机邻接矩阵,但它没有考虑这个属性。有人能建议我修改一下使它工作吗 #define INFTY INT_MAX int **edge; int N=5; edge= malloc(N * sizeof(int *)); for (i = 0; i < N; i++) {
#define INFTY INT_MAX
int **edge;
int N=5;
edge= malloc(N * sizeof(int *));
for (i = 0; i < N; i++)
{
edge[i] = malloc(N * sizeof(int));
}
srand(0);
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
if(i == j){
edge[i][j] = 0;
}
else{
int r = rand() % 10;
edge[i][j] = (r == 5)? INFTY: r;
}
}
}
#定义INFTY INT_MAX
整数**边;
int N=5;
边缘=malloc(N*sizeof(int*);
对于(i=0;i
观察无向图有对称的邻接矩阵:
然后简单地随机分配矩阵的上三角形,并使下三角形匹配:
#define INFTY INT_MAX
int **edge;
int N=5;
edge= malloc(N * sizeof(int *));
for (i = 0; i < N; i++)
{
edge[i] = malloc(N * sizeof(int));
}
srand(0);
for(i = 0; i < N; i++)
{
for(j = i; j < N; j++)
{
if(i == j){
edge[i][j] = 0;
}
else{
int r = rand() % 10;
int val = (r == 5)? INFTY: r;
edge[i][j] = val;
edge[j][i] = val; // If there is edge from i to j, then there
// must be edge from j to i
}
}
}
#定义INFTY INT_MAX
整数**边;
int N=5;
边缘=malloc(N*sizeof(int*);
对于(i=0;i
随机化不起作用?或者什么?是的,但我不知道谁来做矩阵对称是的,没错。我没有注意到这一点。非常感谢你。