知识点:
图分成 有向图 和 无向图 ,图由顶点Vertex 和 边 Edge 组成。
有向图和无向图的数据表示: 邻接链表 和 邻接矩阵(V*V) 和 关联矩阵V*E。有向图的转置:即边的方向变成 反向。
有向图的平方图:当图 G 包含一条 最多由两条边构成的 从 u 到 v 的路径。
多图: 多图允许重复边和自循环边的图
图的通用汇点:入度为 |V| - 1 但出度为 0 的结点
有向无环图:如果一个有向图从任意顶点出发无法经过若干条边回到该点
《算法导论》22.1图的表示参考:
https://blog.csdn.net/chan15/article/details/49620221
其中有道题还没绕明白:当 i ≠ j 时,B*B^T(i, j) = (i → k → j) 边数 + (i ← k ← j) 边数 - (i ← k → j) 边数 - (i → k ← j)边数;k ∈[1, V]。
22.1-7 有向无环图 G = (V, E) 的关联矩阵是一个满足下述条件的 |V| * |E| 矩阵 B = (bij):
bij = -1 (如果边 j 从结点 i 发出);1 (如果边 j 进入结点 i);0 (其他)。
请说明矩阵乘积 B*B^T 里的每一个元素代表什么意思。这里 B^T 是矩阵 B 的转置。
ANSWER:
当 i = j 时,B*B^T(i, j) = i 的入度 + i 的出度。
当 i ≠ j 时,B*B^T(i, j) = (i → k → j) 边数 + (i ← k ← j) 边数 - (i ← k → j) 边数 - (i → k ← j)边数;k ∈[1, V]。