Graph::contractВершины контрактов
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
Graph::contract(G, VertexTable)
Graph::contract(G, VertexTable) сокращает вершины на каждую запись в таблице.
График, который будет законтрактован, не должен иметь веса ребра, затрат или описаний. Если это будет иметь, ошибка будет повышена.
Если VertexTable содержит вершины не в G, они будут пропущены.
Простой пример, чтобы видеть, как сделано сокращение.
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]))
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.
| |
|
Таблица с именем новой вершины на левой стороне и списке вершин, чтобы сократиться на правой стороне. |
Graph состоя из новых вершин и ребер.