findedge

Найдите ребро в графике

Описание

пример

[sOut,tOut] = findedge(G) возвращает исходные и целевые идентификаторы узла, sOut и tOut, для всех ребер в графике G.

пример

[sOut,tOut] = findedge(G,idx) находит исходный и целевой узлы ребер, заданные idx.

пример

idxOut = findedge(G,s,t) возвращает числовые индексы ребер, idxOut, для ребер, заданных парами исходного и целевого узлов s и t. Индексы ребра соответствуют строкам G.Edges.Edge(idxOut,:) в G.Edges таблица графика. Если между s несколько ребер и tзатем возвращаются все их индексы. Ребро 0 указывает ребро, которое не находится в графике.

[idxOut,m] = findedge(G,s,t) дополнительно возвращает вектор m указывает, какая пара узлов (s,t) сопоставлен с каждым индексом ребра в idxOut. Это полезно, когда существует несколько ребер между этими же двумя узлами.

Примеры

свернуть все

Создайте график, а затем определите индекс ребра для (1,2) и (3,5) ребер.

s = [1 1 2 2 2 3 3 3];
t = [2 3 3 4 5 6 7 5];
G = graph(s,t)
G = 
  graph with properties:

    Edges: [8x1 table]
    Nodes: [7x0 table]

idxOut = findedge(G,[1 3],[2 5])
idxOut = 2×1

     1
     6

idxOut содержит индекс строки в G.Edges.EndNodes для каждого заданного ребра.

Создайте график, а затем определите конечные узлы всех ребер в графике.

s = {'a' 'a' 'b' 'b' 'c' 'c'};
t = {'b' 'c' 'd' 'e' 'f' 'g'};
G = graph(s,t);
G.Edges
ans=6×1 table
       EndNodes   
    ______________

    {'a'}    {'b'}
    {'a'}    {'c'}
    {'b'}    {'d'}
    {'b'}    {'e'}
    {'c'}    {'f'}
    {'c'}    {'g'}

[sOut,tOut] = findedge(G)
sOut = 6×1

     1
     1
     2
     2
     3
     3

tOut = 6×1

     2
     3
     4
     5
     6
     7

Создайте график, а затем определите конечные узлы для ребер, индексы которых 3 и 7.

s = [1 1 1 1 2 2 3 3 4 4];
t = [2 3 4 5 6 7 8 9 10 11];
G = digraph(s,t)
G = 
  digraph with properties:

    Edges: [10x1 table]
    Nodes: [11x0 table]

[sOut,tOut] = findedge(G,[3 7])
sOut = 2×1

     1
     3

tOut = 2×1

     4
     8

Создайте график.

s = [1 1 2 3];
t = [2 3 3 4];
weights = [10 20 30 40];
G = graph(s,t,weights)
G = 
  graph with properties:

    Edges: [4x2 table]
    Nodes: [4x0 table]

Найдите вес (1,3) ребра, используя findedge для извлечения индекса.

G.Edges.Weight(findedge(G,1,3))
ans = 20

Использование findedge для изменения весов нескольких многографических ребер.

Создайте и постройте мультиграфик. Этот график имеет два ребра между узлом 2 и узлом 4.

s = [1 1 2 3 2 2];
t = [2 3 3 4 4 4];
weights = [10 20 30 40 10 10];
G = graph(s,t,weights);
plot(G,'EdgeLabel',G.Edges.Weight)

Figure contains an axes. The axes contains an object of type graphplot.

Измените веса ребер между узлами (3,2) и (2,4). Задайте два выхода, чтобы findedge чтобы получить индексы конечных узлов, m. Этот выход полезен, когда существует несколько ребер между двумя узлами, так как idxOut может иметь больше элементов, чем количество пар узлов в s и t. Область ребра idxOut(1) = 3 соединяет пару узлов (s(1),t(1)) = (3,2), и ребра idxOut(2) = 4 и idxOut(3) = 5 соедините ребро (s(2),t(2)) = (2,4).

s = [3 2];
t = [2 4];
w = [1 4];
[idxOut, m] = findedge(G, s, t)
idxOut = 3×1

     3
     4
     5

m = 3×1

     1
     2
     2

G.Edges.Weight(idxOut) = w(m);
plot(G,'EdgeLabel',G.Edges.Weight)

Figure contains an axes. The axes contains an object of type graphplot.

Входные параметры

свернуть все

Входной график, заданный как graph или digraph объект. Использование graph для создания неориентированного графа или digraph для создания ориентированного графа.

Пример: G = graph(1,2)

Пример: G = digraph([1 2],[2 3])

Пары узлов, заданные как отдельные аргументы индексов узлов или имен узлов. Точно так же расположены элементы в s и t укажите исходный и целевой узлы для ребер в графике.

В этой таблице показаны различные способы обращения к одному или нескольким узлам либо по их числовым индексам узлов, либо по их именам узлов.

ФормаОдин узелНесколько узлов
Индекс узла

Скаляр

Пример: 1

Вектор

Пример: [1 2 3]

Имя узла

Вектор символов

Пример: 'A'

Массив ячеек из символьных векторов

Пример: {'A' 'B' 'C'}

Строковый скаляр

Пример: "A"

Строковые массивы

Пример: ["A" "B" "C"]

Категориальный массив

Пример: categorical("A")

Категориальный массив

Пример: categorical(["A" "B" "C"])

Пример: G = findedge(G,[1 2],[3 4])

Пример: G = findedge(G,{'a' 'a'; 'b' 'c'},{'b' 'c'; 'c' 'e'})

Индексы ребра, заданные как скаляр или вектор положительных целых чисел. Индекс ребра соответствует строке в G.Edges таблица графика, G.Edges(idx,:).

Выходные аргументы

свернуть все

Индексы ребра, возвращенные как скаляр или вектор неотрицательных целых чисел. Индексы ребра соответствуют строкам в G.Edges таблица графика, G.Edges(idxOut,:). Ребро 0 указывает ребро, которое не находится в графике.

Длина idxOut соответствует количеству пар узлов во входе, если только входной график не является мультиграфиком.

Индексы конечных узлов, возвращенные как вектор. Значения в m соедините индексы ребра в idxOut к входам узлов (s,t). Область ребра idxOut(j) соединяет пару узлов с индексом m(j).

Идентификаторы узла, возвращаются как отдельные скаляры или векторы положительных целых чисел. Точно так же расположены элементы в sOut и tOut задает исходный и целевой узлы, образующие ребра G.Edges(idx,:).

Введенный в R2015b