transclosure

Переходное закрытие

Синтаксис

Описание

пример

H = transclosure(G) возвращает переходное закрытие графика G как новый график, H. Узлы в H совпадают с теми в G, но H имеет дополнительные ребра. Если существует путь от узла i к узлу j в G, затем существует ребро между узлом i и узел j в H. Для мультиграфов с несколькими ребрами между теми же двумя узлами выходной график заменяет их на одно ребро.

Примеры

свернуть все

Создайте и постройте ориентированного графа.

G = digraph([1 2 3 4 4 4 5 5 5 6 7 8],[2 3 5 1 3 6 6 7 8 9 9 9]);
plot(G)

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

Найдите переходное закрытие графика G и постройте получившийся график. H содержит те же узлы как G, но имеет дополнительные ребра.

H = transclosure(G);
plot(H)

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

Переходная информация о закрытии в H может использоваться, чтобы ответить на вопросы достижимости об исходном графике, G.

Определите узлы в G это может быть достигнуто от узла 1. Эти узлы являются преемниками узла 1 в переходном графике закрытия, H.

N = successors(H,1)
N = 7×1

     2
     3
     5
     6
     7
     8
     9

Создайте и постройте ориентированного графа.

s = [1 1 2 2 3 4 4 5];
t = [2 4 3 4 5 5 6 6];
G = digraph(s,t);
plot(G,'Layout','subspace')

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

Вычислите матрицу смежности переходного закрытия G. Результатом является матрица достижимости, которая имеет ненулевые значения, чтобы указать, какие узлы достижимы от каждого узла.

D = transclosure(G);
R = full(adjacency(D))
R = 6×6

     0     1     1     1     1     1
     0     0     1     1     1     1
     0     0     0     0     1     1
     0     0     0     0     1     1
     0     0     0     0     0     1
     0     0     0     0     0     0

Например, чтобы ответить на вопрос, "Какие узлы достижимы от узла 3?", можно посмотреть на третью строку в матрице. Та строка указывает, что только узлы 5 и 6 достижимы от узла 3:

find(R(3,:))
ans = 1×2

     5     6

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

свернуть все

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

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

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

свернуть все

Переходное закрытие G, возвращенный как digraph объект. Таблица G.Nodes копируется в H, но любые свойства в G.Edges пропущены.

Используйте successors(H,n) определить узлы в G это достижимо от узла n.

Больше о

свернуть все

Переходное закрытие

Переходное закрытие графика описывает пути между узлами. Если существует путь от узла i к узлу j в графике затем ребро существует между узлом i и узел j в переходном закрытии того графика. Таким образом, для данного узла в графике, переходное закрытие превращает любой достижимый узел в прямого преемника (потомок) того узла.

Смотрите также

| | | |

Введенный в R2015b