标题:怎样做一个随机邻接矩阵
只看楼主
daidairen1ha
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-2-27
结帖率:0
已结贴  问题点数:20 回复次数:5 
怎样做一个随机邻接矩阵
如何生成一个10x10随机邻接矩阵?邻接矩阵的意思是矩阵中只有0和1,矩阵的对角线必须是0.如果矩阵中有一行或者几行全部是0,那么我需要产生一个在{0,...,9} \ {x}并将x连接到该顶点,但是不能把x连接到自身。
这是我写的代码,不过只是写到对角线全为0,请大佬帮帮忙,谢谢
===============================================================================================
#include<stdio.h>
#include<math.h>
#include<stdlib.h>

#define M 10
#define N 10

int main()
{
    int i, j;
    int G[10][10] = { {0} };
    int transpose[10][10];

    srand(time(NULL));
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++) {
                if (i == j) {
                    G[i][j] = 0;

                }
                else {
                    G[i][j] = rand() % 2;
                    G[j][i] = G[i][j];
                }
            }
        }
    printf("G[%d][%d] is: \n", M, N);
    for (i = 0; i < M; i++) {
        for (j = 0; j < N; j++) {
            printf("%d\t", G[i][j]);
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
搜索更多相关主题的帖子: 随机 矩阵 include int for 
2018-02-27 15:39
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:10 
等大佬来说。不过“那么我需要产生一个在{0,...,9} \ {x}并将x连接到该顶点,但是不能把x连接到自身。”这句话什么意思啊
2018-02-27 17:16
daidairen1ha
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-2-27
得分:0 
回复 2楼 李晨经纪人
就是如果这行(比如说这行是y行)全是0的话,那么我需要再随机生成这10个点中的某一个点x,让x和y连接,那么y行就会有1
2018-02-27 20:05
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:0 
回复 3楼 daidairen1ha
就是在这行非对角线的位置随机生成个1,然后再对角线对称位置再生成个1 对吧
2018-02-27 20:19
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
回复 4楼 李晨经纪人
如果某一行全是0,那说明这行代表的点 与 其它所有点 都不相连。
比如无向图中有 a,b,c,d 四个点,只有a和c相连,b和d是孤立的,那么邻接矩阵就是

   a b c d
------------
a| 0,0,1,0
b| 0,0,0,0
c| 1,0,0,0
d| 0,0,0,0

如果将 b点 和 d点 也相连,那么就是

   a b c d
------------
a| 0,0,1,0
b| 0,0,0,1
c| 1,0,0,0
d| 0,1,0,0

这时,无向图中点是断裂的(a-c,b-d),但已经符合题主描述的要求了(没有全是0的行)

-------------------------------------------

再看题主的代码
#define M 10
#define N 10
也就是说行列数可以不同
G[j][i] = G[i][j];
也就是说行列数必须相同

反正处处莫名其妙
2018-02-28 08:38
李晨经纪人
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:6
帖 子:175
专家分:848
注 册:2018-2-14
得分:0 
回复 5楼 rjsp
懂了,谢谢!
2018-02-28 09:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-484885-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.382404 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved