主要内容

距离

所有节点对的最短路径距离

描述

例子

d=距离(G)返回一个矩阵,d,在那里d (i, j)节点之间的最短路径的长度是和节点j。如果图加权(即G.Edges包含一个变量重量),那么这些权重作为图中沿边缘的距离。否则,所有边缘的距离了1

例子

d=距离(G,年代)限制定义的源节点的节点年代,这样d (i, j)节点的距离吗(我)到节点j

例子

d=距离(G,年代,t)此外限制定义的目标节点的节点t,这样d (i, j)节点的距离吗(我)到节点t (j)

例子

d=距离(___“方法”,算法)(可选)指定要使用的算法在计算最短路径使用任何输入参数在以前的语法。例如,如果G是一个加权图,然后呢距离(G,“方法”,“减重”)忽略了边G而不是将所有边的权值1

例子

全部折叠

创建和绘制图表。

s = [1 1 1 2 5 5 5 8 9];t = [2 3 4 5 6 7 8 9 10];图G = (s, t);情节(G)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

计算所有节点对之间的最短路径距离图。因为图形边缘没有重量,所有边缘的距离为1。

d =距离(G)
d =10×100 1 1 1 2 3 3 3 4 5 1 0 2 2 1 2 2 2 3 4 1 2 0 2 3 4 4 4 5 6 1 2 2 0 3 4 4 4 5 6 2 3 3 0 1 1 1 2 3 3 1 2 4 4 0 2 2 3 4 3 2 4 4 1 2 0 2 3 4 3 2 4 1 2 2 0 1 2 3 4 5 5 4 2 3 3 1 0 5 6 6 3 4 4 2 1 0

d是对称的,因为G是一个无向图。在一般情况下d (i, j)节点之间的最短路径的长度是和节点j为无向图,这相当于d (j,我)

例如,找到节点1和节点之间的最短路径长度10。

d (10)
ans = 5

创建和绘制图表。

s = [1 1 1 1 2 4 2 3 4 5 6);t = [3 2 3 4 5 6 6 5 7 7 7);图G = (s, t);情节(G)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

找到最短路径距离节点1,节点2和节点3的所有其他节点图。

d =距离(G (1 2 3))
d =3×70 1 1 1 1 2 2 1 0 1 2 2 1 2 1 1 0 2 2 1 2

使用d找到节点1到节点的最短路径距离7。

d (7)
ans = 2

创建和绘制图表。

s = [1 1 1 2 3 2 3 4 5 5 6 7 8 8 10 11);12 t = [10 2 3 4 5 4 6 6 7 8 9 9 11 11 12);图G = (s, t);情节(G)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

找到最短路径距离节点5和7节点2和3。

来源= 7 [5];目标= [2 3];d =距离(G、来源、目标)
d =2×23 1 4 2

使用d找到7节点和节点之间的最短路径距离3。在这种情况下,d (i, j)节点的距离吗来源(我)到节点目标(j)

d (2, 2)
ans = 2

创建和情节与加权有向图的边缘。

s = [1 1 1 2 4 5 3 6 7 8 8 8];4 t = [3 2 3 4 5 6 7 2 6 7 5];重量= [100 10 10 10 10 20 30 50 70 10];G =有向图(s t重量);情节(G,“EdgeLabel”G.Edges.Weight)

图包含一个坐标轴对象。坐标轴graphplot类型的对象包含一个对象。

找到所有成对的图节点之间的最短路径距离。

d =距离(G)
d =8×80 90 10 100 30 40正正0 20 50 10 40 80正正110 0 120 20 60正正80 100 0 90 120 120正正无穷10 40 0 70正正90 110 100 0 40正正50 60 70 100 90 0正正100 20 20 10 10 50 0

G是一个有向图,d不是对称的,d (i, j)对应于节点之间的距离j。的d遥不可及的对应节点。例如,从节点1没有前辈,是不可能到达节点1的任何其他节点图。的第一列d包含了许多值,以反映该节点1是遥不可及的。

默认情况下,距离采用边计算距离。指定“方法”作为“减重”忽略了边和治疗所有边缘距离为1。

d1 =距离(G,“方法”,“减重”)
d1 =8×80 1 1 1 2 2 2正正0 2 4 1 3 5正正4 0 2 5 1 3正1正2 4 0 3 5正正5 1 3 0 2 4正正3 5 1 4 0 2正正1 3 5 2 4 0正正2 2 2 1 1 1 0

输入参数

全部折叠

输入图,指定为一个有向图对象。使用创建一个无向图有向图创建一个有向图。

例子:图G = (1、2)

例子:2 G =有向图([1],[2 3])

源节点,指定为一个或多个节点指标或节点名称,或“所有”选择所有源节点。

这个表格展示了不同的方法来引用一个或多个节点通过他们的指数数字节点或节点名。

形式 单独的节点 多个节点
节点索引

标量

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:“一个”

单元阵列的特征向量

例子:{“A”“B”“C”}

字符串标量

例子:“一个”

字符串数组

例子:(“A”“B”“C”)

年代t不得指定节点命名“所有”“方法”,因为这些节点名与选项名称冲突。使用findnode而不是通过在这些情况下的节点索引。

例子:距离(G, 1 [2])

例子:距离(G,“所有”,[1 3 5])

目标节点,指定为一个或多个节点指标或节点名称,或“所有”选择所有目标节点。

年代t不得指定节点命名“所有”“方法”,因为这些节点名与选项名称冲突。使用findnode而不是通过在这些情况下的节点索引。

例子:距离(G, 1 [2])

例子:距离(G,“所有”,[1 3 5])

最短路径算法,表中指定的选项。

选项 描述
“汽车”(默认)

“汽车”选择自动选择算法:

  • “减重”用于有向图输入没有边。

  • “积极”用于所有输入边的权值,并需要非负权重。这个选项也用于有向图输入与非负边的权值。

  • “混合”用于有向图边包含一些负的输入。图不能有负面循环。

“减重”

广度优先对待所有边的权值的计算1

“积极”

迪杰斯特拉算法,要求所有边的权值是负的。

“混合”(仅供有向图)

bellman指示图,需要图形算法没有负面循环。

“混合”是低于“积极”同样的问题,“混合”更通用的,因为它允许一些边是负的。

请注意

对于大多数图形,“减重”是最快的算法,其次是吗“积极”,“混合”

例子:距离(G s t,“方法”,“减重”)

输出参数

全部折叠

最短路径节点对之间的距离,作为一个矩阵返回。的大小d(#源节点)————(#目标节点)。的值表明一个路径不存在。

提示

  • shortestpath,shortestpathtree,距离功能不支持与负边的无向图,或更一般金宝app的任何包含消极的循环图,由于这些原因:

    • 一个消极的循环是一个路径,从一个节点本身,与路径上的边的权值之和是负的。如果一个消极的周期在两个节点之间的路径,节点之间的最短路径不存在,因为总能找到更短的路径遍历负面循环。

    • 一个负缘体重在一个无向图创建一个负面循环。

版本历史

介绍了R2015b