图的表示

知识点:

    图分成 有向图  和 无向图 ,图由顶点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]。


猜你喜欢

转载自blog.csdn.net/u012138730/article/details/80924384