Вычислите изоморфизм между двумя графиками
P = isomorphism(G1,G2)P = isomorphism(___,Name,Value)[P,edgeperm] = isomorphism(___)вычисляет отношение эквивалентности изоморфизма графов между графиками P = isomorphism(G1,G2) G1 и G2, если вы существуете. Если никакой изоморфизм не существует, то P является пустым массивом.
задает дополнительные опции с одним или несколькими аргументами в виде пар "имя-значение". Например, можно задать P = isomorphism(___,Name,Value) 'NodeVariables' и список переменных узла, чтобы указать, что изоморфизм должен сохранить эти переменные, чтобы быть допустимым.
дополнительно возвращает вектор граничных перестановок, [P,edgeperm] = isomorphism(___) edgeperm. Этот вывод позволяет вам сохранить граничные переменные при работе с мультиграфами.
Создайте и постройте график двух ориентированных графов, и затем вычислите отношение изоморфизма между ними.
G1 = digraph([1 1 1 2 3 4],[2 3 4 4 4 1]); G2 = digraph([3 3 3 2 1 4],[1 4 2 3 2 2]); subplot(1,2,1) plot(G1) subplot(1,2,2) plot(G2)

p = isomorphism(G1,G2)
p = 4×1
3
1
4
2
Результат указывает, что reordernodes(G2,p) имеет ту же структуру как G1.
Создайте и постройте график двух графиков, G1 и G2.
G1 = graph([1 1 1 2 2 3 3 4 5 5 7 7],[2 4 5 3 6 4 7 8 6 8 6 8]); plot(G1,'XData',[1 4 4 1 2 3 3 2],'YData',[4 4 1 1 3 3 2 2])

G2 = graph({'a' 'a' 'a' 'b' 'b' 'b' 'c' 'c' 'c' 'd' 'd' 'd'}, ...
{'g' 'h' 'i' 'g' 'h' 'j' 'g' 'i' 'j' 'h' 'i' 'j'});
plot(G2,'XData',[1 2 2 2 1 2 1 1],'YData',[4 4 3 2 3 1 2 1])
Вычислите отношение изоморфизма между графиками, если вы существуете. Результат указывает, что вершины графика могут быть переставлены, чтобы представлять тот же график несмотря на их различные метки и размещения.
p = isomorphism(G1,G2)
p = 8×1
1
2
5
3
4
7
6
8
Вычислите два различных отношения изоморфизма между двумя графиками. Одно из отношений сохраняет свойство узла, в то время как другой игнорирует его.
Создайте два подобных графика. Добавьте свойство Color узла к каждому из графиков.
G1 = graph({'d' 'e' 'f'},{'e' 'f' 'd'});
G1.Nodes.Color = {'blue' 'red' 'red'}';
G2 = graph({'a' 'b' 'c'},{'b' 'c' 'a'});
G2.Nodes.Color = {'red' 'red' 'blue'}';Постройте график графиков бок о бок в той же фигуре. Окрасьте узлы в красный, которые имеют Color = 'red'.
subplot(1,2,1)
p1 = plot(G1);
highlight(p1,{'e' 'f'},'NodeColor','r')
subplot(1,2,2)
p2 = plot(G2);
highlight(p2,{'a' 'b'},'NodeColor','r')
Вычислите изоморфизм между графиками, игнорируя свойство Color.
p = isomorphism(G1,G2)
p = 3×1
1
2
3
Вычислите изоморфизм снова, но на этот раз сохраните значение свойства Color в сравнении. isomorphism возвращает различную перестановку, которая сохраняет свойство Color.
p = isomorphism(G1,G2,'NodeVariables','Color')
p = 3×1
3
1
2
Просмотрите узлы в G1 и G2, с которым изоморфизм совпадает вместе.
[G1.Nodes.Name, G2.Nodes.Name(p)]
ans = 3x2 cell array
{'d'} {'c'}
{'e'} {'a'}
{'f'} {'b'}
G1, G2 Введите графики (в качестве отдельных аргументов)graph возражает | объекты digraphВведите графики, заданные в качестве отдельных аргументов объектов digraph или graph. Используйте граф для создания неориентированного графа или диграф для создания ориентированного графа.
G1 и G2 должны быть оба объектами graph или обоими объектами digraph.
Пример: G1 = график (1,2)
Пример: G1 = диграф ([1 2], [2 3])
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
P = изоморфизм (G1, G2, 'NodeVariables', {'Var1' 'Var2'})'EdgeVariables' Граничные переменные, чтобы сохранитьГраничные переменные, чтобы сохранить, заданный как пара, разделенная запятой, состоящая из 'EdgeVariables' и вектора символа, представляют в виде строки скаляр, массив ячеек из символьных векторов или массив строк. Используйте эту опцию, чтобы задать одну или несколько граничных переменных, которые находятся и в G1.Edges и в G2.Edges Края. Изоморфизм должен сохранить заданные граничные переменные в порядке быть допустимым.
Если G является мультиграфом, то можно задать второй вывод edgeperms, чтобы позволить переупорядочить граничные переменные.
Типы данных: char | представляет в виде строки | ячейка
'NodeVariables' Переменные узла, чтобы сохранитьПеременные узла, чтобы сохранить, заданный как пара, разделенная запятой, состоящая из 'NodeVariables' и вектора символа, представляют в виде строки скаляр, массив ячеек из символьных векторов или массив строк. Используйте эту опцию, чтобы задать одну или несколько переменных узла, которые находятся и в G1.Nodes и в G2.Nodes. Изоморфизм должен сохранить заданные переменные узла в порядке быть допустимым.
Типы данных: char | представляет в виде строки | ячейка
P Вектор перестановки для изоморфизма[]Вектор перестановки для изоморфизма, возвращенного как вектор - столбец, когда изоморфизм существует или как пустой массив [], когда изоморфизм не существует. Если P не пуст, то reordernodes(G2,P) имеет ту же структуру как G1.
edgeperm — Граничная перестановкаГраничная перестановка, возвращенная как вектор - столбец. При работе с мультиграфами граничный вектор перестановки позволяет вам сохранить граничные переменные, заданные парой "имя-значение" 'EdgeVariables'. Используйте эти команды, чтобы переупорядочить граничные переменные повторных краев:
[p,edgeperm] = isomorphism(g1,g2,'EdgeVariables',edgevars); g2perm = reordernodes(g2, p); g2perm.Edges(:, 2:end) = g2perm.Edges(edgeperm, 2:end);
Два графика, G1 и G2, изоморфны, если там существует перестановка узлов P, таким образом, что reordernodes(G2,P) имеет ту же структуру как G1.
Два графика, которые изоморфны, имеют подобную структуру. Например, если график содержит один цикл, то все графики, изоморфные к тому графику также, содержат один цикл.
диграф | график | isisomorphic | reordernodes
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.