主要内容

shortestpathtree

节点的最短路径树

描述

例子

TR.= shortestpathtree (G年代返回一条定向图形,TR.,包含来自源节点的最短路径的树年代到图表中的所有其他节点。如果图表是加权(即,G.Edges.包含一个变量重量),然后将那些重物用作沿图中边缘的距离。否则,所有边缘距离都被带到1

例子

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

  • 年代可以是单个源节点,t可以指定多个目标节点。

  • 年代可以指定多个源节点,并且t可以指定单个目标节点。

例子

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

例子

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

TR.DE) = shortestpathtree (___另外,返回一个逻辑向量E表示每个图形边缘是否在TR.

例子

全部折叠

在图中找出从源节点到其他每个可达节点的最短路径,并绘制结果。

创建一个定向图。

S = [1 1 2 3 3 4 4 6 6 7 8 7 5];t = [2 3 4 4 5 5 6 11 8 1 3 2 8];g = digraph(s,t)
G =具有属性的有向图:Edges: [13x1 table] Nodes: [8x0 table]

计算从节点1到图表中的每个其他可到达节点的最短路径。然后,将生成的树绘制在图形的顶部。

TR = ShortestPathtree(G,1);p = plot(g);亮点(p,tr,“EdgeColor”“r”

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

由于没有节点1到节点7的路径,因此节点7与树断开连接。

从图形中的每个节点中找到最短路径到目标节点,并绘制结果。

创建和绘制图形。

S = [1 11 11 11 11 11 6 4 8 10 6 8 4 5];t = [2 3 4 5 6 8 7 6 7 5 6 8 9 6 8 6 10 10 10 10 10 10 11 11 11 11 8]。g =图(s,t);x = [0 0.5 -0.5 -0.5 0.5 0 1.5 0 2 -1.5 -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 = digraph(bucky);情节(g)

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

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

目标= [1 5 13 32 44];[tr,d] =短暂的疗法(g,23,目标,“OutputForm”'细胞'
TR =5×1单元阵列{[23 22 21 4 5]} {[23 22 21 4 5]} {[23 22 20 16 17 15 14 13]} {[23 22 20 19 14 13]} {[23 22 42 20 19]}} {[23 22 42 20 19 13]} {[23 22 42 20 19]} {[23 22 42 20 19]} {[23 22 42 20 19]} {[23 22 42 20 19]}} {[23 22 42 20 19 13]} {[23 22 42 20 19 13]} {[23 22 48 48 32]}
d =1×55 4 7 5 5

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

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

路径= TR {2}
路径=1×523 22 21 4 5
path_length = D (2)
path_length = 4.

输入参数

全部折叠

输入图形,指定为a要么有向图目的。使用创建无向图或有向图创建有向图。

例子:g =图(1,2)

例子:G =有向图([1,2],[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)

目标节点,指定为一个或多个节点索引或节点名,或指定为图中的所有节点“所有”

年代t输入必须满足:

  • 年代可以是单个源节点,t可以指定多个目标节点。

  • 年代可以指定多个源节点,并且t可以指定单个目标节点。

t不能指定命名为“所有”'方法', 要么“OutputForm”,因为这些节点名称与选项名称冲突。使用findnode而不是传递这些情况的节点索引。

例子:ShortestPathtree(g,[1 2 3],8)

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

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。名称参数名和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:[tr,d] = ShortestPathtree(g,s,t,'方法','未加权','scentform','vectory')

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

选项 描述
“树”(默认)

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

'细胞'

TR.是一个小区阵列,和tr {k}包含年代t(k)或者年代(k)t.如果节点之间没有路径,则tr {k}是空的。

如果年代t是节点名称,然后是tr {k}是一个细胞阵列的字符向量。否则,tr {k}是数字矢量。

如果指定,第三个输出E是指示每个对应路径上的边缘的单元格数组TR.

'向量'

TR.是描述树的矢量:

  • 如果年代包含单个源节点,然后TR (k)是node前面的节点IDk在路上年代k.按照惯例,tr(s)= 0

  • 如果年代包含多个源节点TR (k)是节点成功的节点IDk在路上kt.按照惯例,tr(t)= 0

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

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

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

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

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

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

  • 'unwighted'是用来有向图没有边缘权重的输入。

  • '积极的'用于所有具有边缘权重的输入,并要求重量是非负的。此选项也用于有向图输入具有非负边缘权重的输入。

  • “混合”是用来有向图边缘权重包含一些负值的输入。图表不能具有负周期。

'unwighted'

宽度优先计算,将所有边的权值视为1

'积极的'

Dijkstra算法要求所有边缘权重都是非负的。

“混合”(仅供有向图

Bellman-Ford算法,指向图形,需要图形没有负周期。

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

'acyclic'(仅供有向图

算法旨在提高具有加权边缘的定向,非循环图(DAG)的性能的性能。

使用isdag.确认定向图是无循环的。

请注意

对于大多数图形,'unwighted'是最快的算法,其次是'acyclic''积极的',“混合”

例子:ShortestPath(g,s,t,'方法','acyclic')

输出参数

全部折叠

最短路径树,返回为有向图对象、单元格数组或向量,具体取决于“OutputForm”.使用强调函数可视化图表的图表顶部或使用的最短路径树情节(TR)将最短路径树形象化。

如果两个节点之间有多条最短路径,那么TR.只包含其中一条路径。所返回的路径可能会根据指定的算法而改变方法.的TR.输出是一个带有零边的图形,如果没有连接任何指定节点的路径。

源节点和目标节点之间的距离,以矢量形式返回。的值INF.表示两个节点之间没有路径。

在树或路径中的边缘,作为逻辑向量,单元格阵列或向量返回,具体取决于值“OutputForm”

  • 如果您未指定“OutputForm”或指定值“树”,然后E是一个逻辑矢量,指示每个图形边缘是否处于定向图形TR..该输出与“边缘”名称-值对的强调, 例如:突出(p,‘边缘’,E)

  • 如果“OutputForm”'细胞',然后E是包含相应路径上的边缘的单元格数组TR.

  • 如果“OutputForm”'向量',然后E是一个向量,对于每个节点,它给出了在最短路径树中连接其父节点的边的索引。

提示

  • shortestpathshortestpathtree,距离函数不支持具有负边缘权重的无向图形金宝app,或者更一般地包含包含负周期的图形,因为以下原因:

    • 一个消极的循环是从节点返回自身的路径,路径上的边缘权重的总和为负。如果负周期位于两个节点之间的路径上,则在节点之间不存在最短路径,因为可以始终通过遍历负周期来找到较短的路径。

    • 无向图中的单个负边值重量创建负周期。

在R2015B中介绍