График::

Вершины контрактов

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

Graph::contract(G, VertexTable)

Описание

Graph::contract(G, VertexTable) сокращает вершины на каждую запись в таблице.

Примечание

График, который будет законтрактован, не должен иметь веса ребра, затрат или описаний. Если это будет иметь, ошибка будет повышена.

Примечание

Если VertexTable будет содержать вершины не в G, они будут пропущены.

Примеры

Пример 1

Простой пример, чтобы видеть, как сделано сокращение.

ConG := Graph([a, b, c, d, e, f],
              [[a, c], [d, a], [f, c], [d, f], [e, b]], 
              Directed):
Graph::printGraphInformation(ConG)
Vertices: [a, b, c, d, e, f]
Edges: [[a, c], [d, a], [d, f], [e, b], [f, c]]
Vertex weights: no vertex weights.
Edge descriptions: no edge descriptions.
Edge weights: no edge weights.
Edge costs: no edge costs.
Adjacency list (out): a = [c], b = [], c = [], d = [a, f], e = [b], f = [c]
Adjacency list (in): a = [d], b = [e], c = [a, f], d = [], e = [], f = [d]
Graph is directed.
plot(
  Graph::plotGridGraph(ConG, 
       VerticesPerLine = 3, 
       VertexOrder = [None, b,    None,
                      a,    None, c,
                      None, e,    None,
                      d,    None, f], 
       EdgeColor = RGB::Black))

t := table(A = [a, b, c], 
           B = [d, f])

newG := Graph::contract(ConG, t):
Graph::printGraphInformation(newG)
Vertices: [A, B, e]
Edges: [[A, A], [B, A], [B, B], [e, A]]
Vertex weights: no vertex weights.
Edge descriptions: no edge descriptions.
Edge weights: no edge weights.
Edge costs: no edge costs.
Adjacency list (out): e = [A], A = [A], B = [A, B]
Adjacency list (in): e = [], A = [A, B, e], B = [B]
Graph is directed.

Начиная с вершин a, b, c были законтрактованы к вершине A, ребро [a, c] было удалено, и ребро [A] было создано. Вершины d, f заботился об удалении ребер [d, a], [d, f], [f, c]. Вместо этого ребра [B, A] и [B, B] были созданы. В ребре конца [e, b] был изменен на [e, A] начиная с вершины, b не существует больше, потому что это было заменено A.

plot(Graph::plotGridGraph(newG, 
          VerticesPerLine = 2, 
          VertexOrder = [None, B,
                         A,    None,
                         None, e]))

Пример 2

Graph::contract игнорирует вершины не в графике:

Con2 := Graph([], []):
t := table(A = [a, b, c], B = [d, f]):
Graph::printGraphInformation(Graph::contract(Con2, t))
Vertices: no vertices.
Edges: []
Adjacency list (out): no edges.
Adjacency list (in): no edges.
Graph is undirected.

Параметры

G

Graph

VertexTable

Таблица с именем новой вершины на левой стороне и списке вершин, чтобы сократиться на правой стороне.

Возвращаемые значения

Graph, состоящий из новых вершин и ребер.