findedge

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

Синтаксис

[sOut,tOut] = findedge(G)
[sOut,tOut] = findedge(G,idx)
idxOut = findedge(G,s,t)
[idxOut,m] = findedge(G,s,t)

Описание

пример

[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)

Измените веса ребер между узлами (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)

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

свернуть все

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

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

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

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

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

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

Скаляр

Пример 1

Вектор

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

Имя узла

Символьный вектор

Пример: 'A'

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

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

Скаляр строки

Пример: "A"

StringArray

Пример: ["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