exponenta event banner

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