主要内容

最近

半径内最近的邻居

描述

例子

nodeids.=最近(GS.D.返回图形中的所有节点G那在距离之内D.从节点S.。如果图表是加权(即,如果G.Edges.包含一个变量重量),然后将那些重物用作沿图中边缘的距离。否则,所有边缘距离都被带到1

例子

nodeids.=最近(GS.D.名称,价值使用一个或多个名称值对参数指定的其他选项。例如,如果G是一个加权图,然后最近(g,s,d,'方法','unweivited')忽略图中的边缘权重G而是将所有边缘重量视为1

例子

[nodeids.dist] =最近(___另外返回到每个最近邻居的距离,这样dist(j)是源节点的距离S.到节点nodeids(j)。您可以在以前的语法中使用任何输入参数组合。

例子

全部收缩

创建和绘制具有加权边缘的图形。

S = [1 1 1 1 11 2 2 2 3 3 3 3 3];T = [2 4 5 6 7 3 8 9 10 11 12 13 14];重量= randi([1 10],1,13);g =图(s,t,重量);p = plot(g,'布局''力量''Edgelabel',g.edges.weight);

图包含轴。轴包含Type Graphplot的对象。

确定来自节点1的半径为15的节点。

nn =最近(g,1,15)
nn =9×15 7 2 3 4 6 8 12 9

将源节点突出显示为绿色和最近的邻居作为红色。

亮点(p,1,'nodecolor''G')亮点(p,nn,'nodecolor''r'

图包含轴。轴包含Type Graphplot的对象。

创建和绘制具有加权边缘的图形。

S = [11 11 2 2 6 6 7 7 3 3 3 9 9 4 4 11 11 8];T = [2 3 4 5 6 7 8 5 8 9 10 5 10 11 12 10 12 12];重量= [10 10 10 10 10 11 11 1];g =图(s,t,重量);绘图(g,'Edgelabel',g.edges.weight)

图包含轴。轴包含Type Graphplot的对象。

确定哪些节点在节点3的半径范围内,并将距离返回到每个节点。

[nn,dist] =最近(g,3,5)
nn =9×19 10 5 11 4 7 12 6 8
dist =9×11 1 2 2 3 3 3 4 4

使用加权边缘创建并绘制定向图。

s = {'一种''一种''一种''B''C''C''e''F''F'};t = {'B''C''D''一种''一种''D''F''一种''B'};重量= [1 1 1 2 2 2 2 2 2];G = Digraph(S,T,重量);绘图(g,'Edgelabel',g.edges.weight)

图包含轴。轴包含Type Graphplot的对象。

确定从节点的半径内的最近节点'一种',通过从节点传出路径距离来测量'一种'

nn_out =最近的(g,'一种'1)
nn_out =3x1细胞{'b'} {'c'} {'d'}

确定具有导致节点的传入路径的所有节点'一种'通过指定半径为INF.

nn_in =最近的(g,'一种',inf,'方向'“来电”
nn_in =4x1细胞{'b'} {'c'} {'f'} {'e'}

输入参数

全部收缩

输入图形,指定为a图形要么dig目的。采用图形创建一个无向图形或dig创建定向图形。

例子:g =图(1,2)

例子:G = Digraph([1 2],[2 3])

源节点,指定为该表中的一个表单中的节点索引或节点名称。

价值 例子
标量节点索引 1
字符矢量节点名称 '一种'
字符串标量节点名称 “一种”

例子:最近(g,3,1)

例子:最近(g,'a',5)

邻居距离半径,指定为数字标量。

例子:最近(g,3,1)

例子:最近(g,'a',2.5)

名称值对参数

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

例子:[nodeids,dist] =最近(g,s,5,'方法','不安','方向','传入')

笔记

'方向'选项只能使用定向图形指定。

距离测量方向,指定为逗号分隔对组成'方向'以及此表中的其中一个选项。

选项 描述
out(默认) 使用路径进行计算距离出去来自源节点S.
“来电” 使用路径来计算距离到源节点S.

例子:最近(g,s,d,'方向','传入')

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

选项 描述
'汽车'(默认)

'汽车'选项自动选择算法:

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

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

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

'unwighted'

宽度的第一计算,将所有边缘重量视为1

'积极的'

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

'混合'(只为dig

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

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

笔记

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

例子:最近(g,s,d,'方法','正面')

输出参数

全部收缩

最近的邻居节点ID,如果是节点索引S.是数字,或者作为节点名称S.是一个节点名称。节点从最接近排序到最远。nodeids.如果未在指定距离内没有节点,则为空。nodeids.永远不会包含源节点S.即使图表有自循环。

采用h =子图(g,[s; nodeids])从原始图中提取最近邻居的子图G

邻居距离,作为向量返回。dist(j)是源节点的距离S.到邻居节点nodeids(j)

在R2016A介绍