主要内容

shortestpathtree

最短路径树的节点

描述

例子

TR= shortestpathtree (G,年代)返回一个有向图,TR,包含来自源节点的最短路径树年代所有其他节点图。如果图加权(即G.Edges包含一个变量重量),那么这些权重作为图中沿边缘的距离。否则,所有边缘的距离了1

例子

TR= shortestpathtree (G,年代,t)计算多个源或目标节点之间的最短路径树:

  • 年代可以是一个单一的源节点,然后呢t可以指定多个目标节点。

  • 年代可以指定多个源节点,然后呢t可以指定一个目标节点。

例子

TR= shortestpathtree (___,名称,值)使用附加选项指定一个或多个名称-值对参数,使用任何输入参数组合在以前的语法。例如,shortestpathtree (G s“OutputForm”,“矢量”)返回一个数值向量描述的最短路径树。

例子

(TR,D)= shortestpathtree (___)此外返回最短路径树中的节点之间的距离。

(TR,D,E)= shortestpathtree (___)此外返回一个逻辑向量E表明是否在每个图像边缘TR

例子

全部折叠

找到最短路径从源节点到每个其他可及节点图,并画出结果。

创建一个有向图。

s = [1 1 2 3 3 4 4 6 6 7 8 7 5];t = [4 2 3 4 5 5 6 8 1 3 2 8];G =有向图(s, t)
G =有向图的属性:边缘:x1表[13]节点:[8 x0表)

从节点1计算最短路径的每一个其他可及节点图。然后,绘制结果树的图。

TR = shortestpathtree (G, 1);p =情节(G);突出(p, TR,“EdgeColor”,“r”)

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

由于没有路径从节点1到7节点,节点从树上7是断开连接。

找到最短路径图中的每个节点到目标节点,并画出结果。

创建和绘制图表。

s = [1 1 1 1 1 1 1 2 2 7 7 7 7 9 9 3 3 1 6 4 8 10 6 8 4 5];t = [2 3 4 5 6 7 8 6 5 6 7 8 9 10 6 8 6 10 10 10 10 11 11 11 8 8];图G = (s, t);x = [0 0.5 -0.5 -0.5 -1.5 0.5 1.5 0 0 2 2];y = [0 0.5 0.5 -0.5 -0.5 - 2 0 2 0 0 0);情节(G,“XData”,x,“YData”,y)

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

找到图中的每个节点的最短路径节点10。情节产生的树。

TR = shortestpathtree (G,“所有”10);情节(TR)

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

找到最短路径和路径长度从一个源节点到多个目标节点。

创建和绘制图表。

G =有向图(巴基);情节(G)

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

23找到最短路径的节点到其他节点。指定OutputForm作为细胞返回单元阵列中的最短路径。指定两个输出也返回最短路径距离。

目标= [1 5 13 32 44];(TR, D) = shortestpathtree (G, 23岁的目标,“OutputForm”,“细胞”)
TR =5×1单元阵列{[22日23日21日4 5 1]}{[22日23日21日4 5]}{[23 22 20 16 17 15 14 13]}{[23日22日20 19 18 32]}{24 48 47 46 44 [23]}
D =1×55 4 7 5 5

树{j}23从节点的最短路径节点目标(j)长度为D (j)

找到路径和路径长度从节点21节点5。

路径= TR {2}
路径=1×522日23日21 4 5
path_length = D (2)
path_length = 4

输入参数

全部折叠

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

例子:图G = (1、2)

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

源节点,指定为一个或多个节点指标或节点名称,或与图中的所有节点“所有”

  • 当单独使用,年代必须指定一个单一的源节点。

  • 一起使用时t,年代t输入必须满足:

    • 年代可以是一个单一的源节点,然后呢t可以指定多个目标节点。

    • 年代可以指定多个源节点,然后呢t可以指定一个目标节点。

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

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

标量

例子:1

向量

例子:(1 2 3)

节点名称

特征向量

例子:“一个”

单元阵列的特征向量

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

字符串标量

例子:“一个”

字符串数组

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

年代不得指定节点的名字吗“所有”,因为这个节点名称冲突的选项名称。使用findnode而不是通过节点索引对于这种情况。

例子:shortestpathtree (G, a)

例子:shortestpathtree (G (1 2 3), 8)

目标节点(s),指定为一个或多个节点指标或节点名称,或与图中的所有节点“所有”

年代t输入必须满足:

  • 年代可以是一个单一的源节点,然后呢t可以指定多个目标节点。

  • 年代可以指定多个源节点,然后呢t可以指定一个目标节点。

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

例子:shortestpathtree (G (1 2 3), 8)

例子:shortestpathtree (G, {' a ', ' b ', ' c '}, {' f '})

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:(TR, D) = shortestpathtree (G s t,“方法”,“减重”、“OutputForm”,“矢量”)

输出格式,指定为逗号分隔组成的“OutputForm”其中一个选项表中。

选项 描述
“树”(默认)

TR是一个有向图表示的最短路径树。如果指定了,第三输出E是一个逻辑向量表示每条边是否在吗TR

“细胞”

TR是一个单元阵列,TR {k}包含路径年代t (k)或从年代(k)t。如果没有节点之间的路径,然后TR {k}是空的。

如果年代t节点名,那么TR {k}是一个单元阵列的特征向量。否则,TR {k}是一个数值向量。

如果指定了,第三输出E是一个单元阵列显示每个相应的路径上的边TR

“向量”

TR是一个向量描述树:

  • 如果年代包含一个源节点TR (k)节点,在节点的ID吗k的路径年代k。按照惯例,TR (s) = 0

  • 如果年代包含多个源节点TR (k)节点成功节点的ID吗k的路径kt。按照惯例,TR (t) = 0

在每种情况下TR (k)如果节点k不是树的一部分。

如果指定了,第三输出E是一个向量,E (k)给出了指数连接节点的最短路径树的边缘k和节点TR (k)

例子:shortestpathtree (G s“OutputForm”,“矢量”)

最短路径算法,指定为逗号分隔组成的“方法”其中一个选项表中。

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

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

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

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

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

“减重”

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

“积极”

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

“混合”(仅供有向图)

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

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

“单极”(仅供有向图)

算法设计为指导改善性能,非循环图(无进取心的人)和加权边缘。

使用isdag确认如果无环有向图。

请注意

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

例子:shortestpath (G s t,“方法”,“单极”)

输出参数

全部折叠

最短路径树,作为一个返回有向图对象、单元阵列或向量,根据的价值“OutputForm”。使用突出函数可视化的最短路径树图的一个阴谋,或使用情节(TR)可视化的最短路径树。

如果有多个两个节点之间的最短路径TR只包含一个路径。返回的路径可以改变这取决于指定的算法方法。的TR输出是一个图形与零如果没有边缘路径连接的任何指定的节点。

源节点与目标节点之间的距离,作为一个向量返回。的值表明没有任何两个节点之间的路径。

边缘在树或路径,作为一个逻辑向量,返回单元阵列,或向量,根据的价值“OutputForm”:

  • 如果你不指定“OutputForm”或者指定的值“树”,然后E是一个逻辑向量表示每个图形边缘是否有向图吗TR。这个输出兼容“边缘”名称-值对的突出,例如:突出(p,‘边缘’,E)

  • 如果“OutputForm”“细胞”,然后E是一个包含边缘单元阵列中相应的路径TR

  • 如果“OutputForm”“向量”,然后E是一个向量,为每个节点,给出了指数的边缘连接它的父节点的最短路径树。

提示

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

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

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

版本历史

介绍了R2015b