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
состоя из новых вершин и ребер.