关于使用c ++的图表中的边缘矩阵

时间:2014-03-23 15:55:46

标签: c++ graph graph-theory

我混淆了如何定义将在图中找到边缘矩阵的程序。 问题是如果输入一个邻接矩阵的值,它给出了关于图中顶点连接的信息,例如:有3个顶点,然后V1连接到V2而不是V3,然后V2连接到V3,它给出:

0 1 0
1 0 1
0 1 0

现在,有了这些信息,我想制作找到边到边连接的程序,例如有3条边:1-2边,2-3边,输出为:

0 1
1 0

我知道要做第一个输出“邻接矩阵”,但第二个。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

邻接矩阵用于表示图形,这意味着其中包含顶点和边。所以如果输入是:

0 1 1
1 0 1
1 1 0

这表示您的图表已完成。如果你通过在矩阵上添加数字来阅读它:

X 1 2 3
1 0 1 1
2 1 0 1
3 1 1 0

你可以看到:

V1连接到V2和V3
V2连接到V1和V3
V3连接到V1和V2

通过读取行​​n,您可以看到Vn连接到哪个顶点,通过读取列n,您可以看到哪些顶点连接到Vn。

在您的示例中,您的图表是非定向的,因为您的矩阵是对角线。

如果您的目标是找到图表的边缘,那么您已经在邻接矩阵中获得了信息。如果你想看到什么顶点是"双重连接"你需要找到对于顶点Vi和Vj,M [i] [j]和矩阵的M [j] [i]成员都具有值1(在非定向图中总是如此)。一种可能的算法就是矩阵表示的双循环(通常是两个向量/列表/数组)。