【问题标题】:Matlab digraph Shortest CycleMatlab有向图最短周期
【发布时间】:2016-11-23 03:03:17
【问题描述】:

Matlab 最近对图形和网络算法的支持允许通过在 digraph 对象上调用函数 distances 来获取大矩阵中图形的任何顶点到任何顶点的所有距离。

虽然这个矩阵在它的对角线上是零。那么我怎样才能得到从任何顶点到自身的最短路径呢?换句话说,通过那个顶点的最短循环是多少?

【问题讨论】:

  • 如果不说明您正在查看的矩阵的度数,则邻接矩阵对角线为零并没有多大意义。如果是A^1,则表示没有自循环。这并没有说明是否存在更长的路径。
  • 另外,为什么不使用shortestpath?或者只是将A 提高到连续的幂,直到对角线上的所需点~= 0
  • distances 的输出不是邻接矩阵,而是从节点 A 到节点 B 的最短路径的长度,其中 A 是行索引,B 是列索引。 shortestpath 不仅返回距离,还返回完整路径,但仅返回一对节点。 distances返回任意节点到任意节点的最短路径长度。

标签: matlab


【解决方案1】:
dist = distances(G); 
% big matrix [nVertices x nVertices] containing Inf (no connection)
% Problem: diagonal is zero 

circDist = dist+dist'; 
% [nVertices x nVertices] Distance for circulatory paths: A→B + B→A 

[circDist,minInd] = min(circDist+diag(Inf(nVertices,1)),[],1); 
% [nVertices x 1] take circulatory circle with smallest distance 

【讨论】:

    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多