如何用邻接矩阵生成无向图
How to create undirected graph out of adjancency matrix?
你好,到处都有图纸的解释,而不是创建图表的adj. matrix。然而,我需要简单的伪代码或算法....我知道如何把它从矩阵中画出来,但不知道为什么没有人解释如何把它写进代码。我不是指实际的代码,但至少是算法…许多人说……1是如果有一条边,我知道。我已经创建了矩阵,不知道如何转移到图形。我的顶点没有名字它们只是矩阵的索引。例如1-9是"我的矩阵的名字"
1 2 3 4 5 6 7 8 9
1 0 1 0 0 1 0 0 0 0
2 1 0 1 0 0 0 0 0 0
3 0 1 0 1 0 0 0 0 0
4 0 0 1 0 0 1 0 0 0
5 1 0 0 0 0 0 1 0 0
6 0 0 0 1 0 0 0 0 1
7 0 0 0 0 1 0 0 1 0
8 0 0 0 0 0 0 1 0 0
9 0 0 0 0 0 1 0 0 0
原来是一个迷宫…必须将row1 col4标记为开始,row7 col8标记为结束…
没有人告诉我如何实现矩阵外的图形(没有笔):Pp
谢谢
自然对称
邻接矩阵是图的一种表示。对于无向图,其矩阵是对称的。例如,如果有一条从vertex i
到vertex j
的边,那么也必须有一条从vertex j
到vertex i
的边。这实际上是同一条边
*
*
* A'
A *
*
*
注意到这个特性,你可以像这样简单地实现你的算法:
void drawGraph(vertices[nRows][nCols])
{
for (unsigned int i = 0; i < nRows; ++i)
{
for (unsigned int j = i; j < nCols; ++j)
{
drawLine(i, j);
}
}
}
可以将图从邻接矩阵表示转换为基于节点的表示,如下所示:
#include <iostream>
#include <vector>
using namespace std;
const int adjmatrix[9][9] = {
{0,1,0,0,1,0,0,0,0},
{1,0,1,0,0,0,0,0,0},
{0,1,0,1,0,0,0,0,0},
{0,0,1,0,0,1,0,0,0},
{1,0,0,0,0,0,1,0,0},
{0,0,0,1,0,0,0,0,1},
{0,0,0,0,1,0,0,1,0},
{0,0,0,0,0,0,1,0,0},
{0,0,0,0,0,1,0,0,0}
};
struct Node {
vector<Node*> neighbours;
/* optional additional node information */
};
int main (int argc, char const *argv[])
{
/* initialize nodes */
vector<Node> nodes(9);
/* add pointers to neighbouring nodes */
int i,j;
for (i=0;i<9;++i) {
for (j=0;j<9;++j) {
if (adjmatrix[i][j]==0) continue;
nodes[i].neighbours.push_back(&nodes[j]);
}
}
/* print number of neighbours */
for (i=0;i<9;++i) {
cout << "Node " << i
<< " has " << nodes[i].neighbours.size() <<" outbound edges." << endl;
}
return 0;
}
在这里,图被表示为带有指向可达邻近节点的指针的节点数组。在设置节点和它们的邻居指针之后,您可以使用这个数据结构来执行您想要的图算法,在这个(简单的)示例中,打印出每个节点具有的出站有向边的数量。
相关文章:
- 如何在C++中为表面制作邻接矩阵
- 在 c++ 中初始化邻接矩阵
- 有关邻接矩阵实现的问题
- MFC:在编辑框中表示邻接矩阵
- C++中有向无环图的邻接列表到邻接矩阵的转换
- 我需要将阵列样式的邻接矩阵转换为矢量样式(以使其看起来更好)
- 如何正确接受平方加权邻接矩阵
- 创建随机邻接矩阵,每个节点具有最小'k'度
- 如何在C++中将边列表转换为邻接矩阵,其中包含连接到顶点的边数而不是一条边?
- 确定邻接矩阵是否具有周期,然后输出该周期
- 邻接矩阵构建功能用一些图崩溃
- 使用邻接矩阵获取给定节点的所有边缘
- 对邻接矩阵最大循环中的节点进行计数
- 图实现,使用邻接矩阵,在链接中带有自定义数据
- 在C++中向邻接矩阵的边添加代价
- 邻接矩阵上的BFS
- 查找路径的有向图邻接矩阵
- 如何在c++中使用模板图类中的向量创建邻接矩阵
- Dijksta算法在邻接矩阵中找不到路径
- 如何用邻接矩阵生成无向图