文档帮助中心文档
所有节点对的最短路径距离
d =距离(G)
d =距离(G, s)
d =距离(G s t)
d =距离(___,'方法',算法)
例子
d=距离(G)返回矩阵,d,在那里d (i, j)是节点之间最短路径的长度我和节点j.如果图表是加权(即,G.Edges.包含一个变量重量),然后将那些重物用作沿图中边缘的距离。否则,所有边缘距离都被带到1.
d=距离(G)
d
G
d (i, j)
我
j
G.Edges.
重量
1
d=距离(G,年代)将源节点限制为所定义的节点年代,这样d (i, j)是从节点的距离s(i)节点j.
d=距离(G,年代)
年代
s(i)
d=距离(G,年代,t)另外将目标节点限制为所定义的节点t,这样d (i, j)是从节点的距离s(i)节点t (j).
d=距离(G,年代,t)
t
t (j)
d=距离(___“方法”,算法)可选地指定在使用前面语法中的任何输入参数计算最短路径时使用的算法。例如,如果G是一个加权图,然后距离(g,'方法','unwighted')忽略边的权值G所有边的权值都是1.
d=距离(___“方法”,算法)
算法
距离(g,'方法','unwighted')
全部收缩
创建并绘制图表。
S = [1 1 1 2 5 5 5 8 9];T = [2 3 4 5 6 7 8 9 10];图G = (s, t);情节(G)
计算图表中所有节点对之间的最短路径距离。由于图形边缘没有权重,因此所有边缘距离都被占用为1。
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,我).
d (j,我)
例如,求节点1到节点10之间的最短路径长度。
d (10)
ans = 5
S = [1 1 1 11 2 2 3 4 4 5 6];T = [2 3 4 5 3 6 6 5 7 7 7];图G = (s, t);情节(G)
找出从节点1、节点2和节点3到图中所有其他节点的最短路径距离。
d =距离(g,[1 2 3])
d =3×70 1 1 1 1 2 2 1 0 1 2 2 11 2 1 1 0 2 2 1 2
采用d求节点1到节点7的最短路径距离。
d (7)
ans = 2
S = [1 11 2 2 3 3 4 5 5 6 7 8 8 10 11];T = [2 3 10 4 12 5 4 6 6 7 9 8 9 11 11 12];图G = (s, t);情节(G)
求节点5、7到节点2、3的最短路径距离。
Sources = [5 7];target = [2 3];d =距离(G、来源、目标)
d =2×23 1 4 2
采用d求节点7到节点3之间的最短路径距离。在这种情况下,d (i, j)是从节点的距离来源(I)节点目标(j).
来源(I)
目标(j)
d (2, 2)
使用加权边缘创建并绘制定向图。
S = [1 1 1 2 5 3 6 4 7 8 8 8];T = [2 3 4 5 3 6 4 7 2 6 7 5];权重= [100 10 10 10 10 20 10 30 50 10 70 10];G =有向图(s t重量);情节(G,“EdgeLabel”,g.edges.weight)
求所有图节点对之间的最短路径距离。
d =8×80 90 10 10 100 30 40 INF INF 0 20 50 10 40 80 80 20 60 INF INF 80 100 0 90 120 30 INF INF 120 10 40 0 30 70 70 INF INF 90 110 10 100 0 40 INF INF 5070 100 60 90 0 INF INF 100 20 20 10 10 50 0
自从G是一个有向图,d是不对称的,并且d (i, j)对应于节点之间的距离我和j.的INF.值d对应于无法访问的节点。例如,由于节点1没有前述者,因此不可能从图中的任何其他节点到达节点1。所以第一列d包含许多人INF.值表示节点1不可达。
INF.
默认情况下,距离使用边的权值来计算距离。指定“方法”作为“减重”忽略边缘重量并将所有边缘距离视为1。
距离
“方法”
“减重”
d1 =距离(G,“方法”,“减重”)
d1 =8×80 1 1 1 2 2 2 2 INF INF 0 2 4 1 3 5 INF INF 4 0 2 5 1 3 INF INF 2 4 0 3 5 1 INF INF 5 1 3 0 2 4 INF INF 3 5 1 4 0 2 INF INF 13 5 2 4 0 INF INF 2 2 2 1 1 1 1 0
图
有向图
输入图形,指定为图要么有向图目的。采用图创建一个无向图形或有向图创建有向图。
例子:g =图(1,2)
g =图(1,2)
例子:G =有向图([1,2],[2 3])
G =有向图([1,2],[2 3])
“所有”
源节点,指定为一个或多个节点索引或节点名称,或“所有”选择所有源节点。
该表显示了通过数字节点索引或节点名引用一个或多个节点的不同方法。
标量子
例子:1
向量
例子:(1 2 3)
(1 2 3)
特征向量
例子:“一个”
“一个”
字符向量的单元格阵列
例子:{'a''b''c'}
{'a''b''c'}
字符串标量
例子:“一种”
“一种”
字符串数组
例子:(“A”“B”“C”)
(“A”“B”“C”)
年代和t不能指定命名为“所有”要么“方法”,因为这些节点名称与选项名称冲突。采用findnode而是在这些情况下传入节点索引。
findnode
例子:距离(g,[1 2])
距离(g,[1 2])
例子:距离(g,'全',[1 3 5])
距离(g,'全',[1 3 5])
目标节点,指定为一个或多个节点索引或节点名,或“所有”选择所有目标节点。
“汽车”
'积极的'
'混合'
最短路径算法,指定为表中的选项之一。
的“汽车”选项自动选择算法:
“减重”用于图和有向图没有边权的输入。
'积极的'用于所有图具有边缘权重的输入,并要求重量是非负的。此选项也用于有向图输入具有非负边缘权重的输入。
'混合'用于有向图边权值为负值的输入。图不可能有负环。
宽度优先计算,将所有边的权值视为1.
Dijkstra算法要求所有边缘权重都是非负的。
有向图的Bellman-Ford算法,它要求图没有负环。
尽管'混合'比这更慢'积极的'对于同样的问题,'混合'更通用,因为它允许一些边的权值为负。
请注意
对于大多数图表,“减重”是最快的算法,其次是'积极的', 和'混合'.
例子:距离(G s t,“方法”,“减重”)
距离(G s t,“方法”,“减重”)
节点对之间的最短路径距离,以矩阵形式返回。的大小d是(#源节点)--by - (#目标节点)。价值INF.表示路径不存在。
的shortestpath,缺点, 和距离函数不支持具有负边权的无向图,或者金宝app更普遍地说,任何包含负环的图,原因如下:
shortestpath
缺点
一个负周期是从节点返回自身的路径,路径上的边缘权重的总和为负。如果负周期位于两个节点之间的路径上,则在节点之间不存在最短路径,因为可以始终通过遍历负周期来找到较短的路径。
无向图中的单个负边值重量创建负周期。
有向图|图|最近的|shortestpath|缺点
最近的
您有这个示例的修改版本。您想打开这个示例与您的编辑吗?
你点击一个链接对应于这个MATLAB命令:
通过在MATLAB命令窗口中输入命令来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,在那里获得翻译的内容,并看到当地的活动和优惠。根据您的位置,我们建议您选择:.
您还可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。
与当地办事处联系