B)设a
是带有向图(无环多边)G
的一个邻接矩阵,其中a[i,j]
是边i
到j
的一个权重。如果没有这样的边a[i,j]=infinity
并且对于evreyi
我们有a[i,i]=0
。矩阵a^k=a*a*a**…a
。槽a^k[i,j]
表示什么?最小权重?还是...?
知道吗?
编辑:我的意思是这些算法在图中找到哪一个?找到最大重量?最小重量?什么也没找到?
设B=A^K
b[i,j]
将表示从i开始的最短路径。j
,它只需k
步数。怎么做?
给定一个矩阵a
,如果我们将a
与它本身相乘,会发生什么?
// Initialize a matrix result which would be the matrix obtained by A*A
vector< N, vector<int> (N, INF) > result;
REP(i,0,N) REP(j,0,N) REP(k,0,N)
result[i][j] = min(result[i][j], (A[i][k] + A[k][j]));
result[i, j] = min(result[i,j], A[i, i] + A[i, j])
result[i, j] = min(result[i,j], A[i,j)] // since A[i, i] = 0;
所以现在b[i,j]
将表示从i开始的最短路径。j
几乎需要k
步骤。
类似地,我们可以使用相同的概念从i计算路径的no。J
执行的步骤正好为K
。如果在i
和j
之间有边,则可以将a[i,j]
初始化为1
,否则0
。
|^K
将提供所需的结果。
作为一项练习,我必须建立一个卫星导航系统,规划从一个位置到另一个位置的最短和最快路线。它必须尽可能快,而不需要使用太多内存。 我很难决定使用哪种结构来表示图形。我知道矩阵更适合密集图,列表更适合稀疏图。我更倾向于使用列表,因为我认为添加顶点将是这个程序中最累人的部分。 我只是想听听你们的意见。如果我把一个典型的路线图看作一个图形,其中不同的位置是节点,道路是边缘。你认为它是稀疏的还是密集的?在这种
实现图的最简单的方法之一是使用二维矩阵。在该矩阵实现中,每个行和列表示图中的顶点。存储在行 v 和列 w 的交叉点处的单元中的值表示是否存在从顶点 v 到顶点 w 的边。 当两个顶点通过边连接时,我们说它们是相邻的。 Figure 3 展示了 Figure 2 中的图的邻接矩阵。单元格中的值表示从顶点 v 到顶点 w 的边的权重。 Figure 3 邻接矩阵的优点是简单,对于小图,很容易看到哪些节
本文向大家介绍C++实现图的邻接矩阵表示,包括了C++实现图的邻接矩阵表示的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了C++实现图的邻接矩阵表示代码,供大家参考,具体内容如下 1.遇到的问题:教材中写着子类Graphmtx(我用GrapMatrix)继承基类Graph 但是我在子类GraphMatrix中使用父类Graph的保护成员属性:maxVertices 显示没有声明(如下
问题内容: 我对图和邻接矩阵感到困惑。我正在为 一个班级做作业,我有一个节点的文本文件和一个边的文本文件,我必须 阅读它们的每一个并将它们制成一个图,然后可以在该图上执行 操作,例如确定图是否为连接,找到最小的 生成树,遍历并找到路径。但是我之前从未使用过图形 ,并且整个过程让我很困惑,我想知道 是否有人可以帮助我解释其中的一些内容。 首先,我是否要自己建立一个图(也许有节点和边类?) ,然后从中
我试图实现一个无向未加权图的邻接矩阵上的BFS,它返回访问的节点数。到目前为止,我已经提出了这个,但我认为这是不对的,因为当我打印出top/vised节点时,我得到了一些节点的多次出现,而且它没有排序。我在某个地方读到过,BFS是一个拓扑排序,我得到的顺序不是排序的。
大家好:)今天我正在提高我在图论和数据结构方面的技能。我决定用C++做一个小项目,因为我已经有一段时间没有用C++了。 我想为一个有向图做一个邻接表。换句话说,看起来像: 这将是一个有向图,其中V0(顶点0)对V1和V3有一条边,V1对V2有一条边,V2对V4有一条边,如下所示: