Сокращение мультиграфа до простого графика
задает метод для выбора между несколькими ребрами. Свойства кромок сохраняются. H = simplify(G,pickmethod)pickmethod может быть 'first' (по умолчанию), 'last', 'min', или 'max'.
задает метод объединения веса кромок нескольких кромок в вес одной новой кромки. Все остальные свойства кромки в H = simplify(G,aggregatemethod)G сбрасываются. aggregatemethod может быть 'sum' или 'mean'.
указывает, следует ли сохранять или удалять самокольцы из графа, используя любую из комбинаций входных аргументов в предыдущих синтаксисах. Например, H = simplify(___,selfloopflag)'keepselfloops' указывает, что узлы с одним или несколькими автоциклами будут иметь один автоцикл в упрощенном графике.
указывает дополнительные параметры с одним или несколькими аргументами пары имя-значение. Например, можно указать H = simplify(___,Name,Value)'PickVariable' и переменная в G.Edges для использования этой переменной с 'min' или 'max' методы выбора.
Создайте взвешенный неориентированный мультиграф с несколькими ребрами между узлом 1 и узлом 2.
G = graph([1 1 1 1 2 3],[2 2 2 3 3 4], 1:6); G.Edges
ans=6×2 table
EndNodes Weight
________ ______
1 2 1
1 2 2
1 2 3
1 3 4
2 3 5
3 4 6
Упростите мультиграф в простой граф, чтобы между узлом 1 и узлом 2 было только одно ребро. simplify сохраняет первое ребро между этими двумя узлами, G.Edges(1,:)и бросает остальных.
G = simplify(G); G.Edges
ans=4×2 table
EndNodes Weight
________ ______
1 2 1
1 3 4
2 3 5
3 4 6
Использовать второй вход simplify для выбора метода выбора между несколькими кромками или объединения нескольких кромок в одну.
Создание взвешенного мультиграфа. На этом графике пять рёбер встречаются между узлом 3 и узлом 4, но рёбра имеют случайные веса. Просмотрите таблицу кромок и постройте график для справки.
G = graph([1 2 3 3 3 3 3 3 ],[2 3 1 4 4 4 4 4],randi(10,1,8)); G.Edges
ans=8×2 table
EndNodes Weight
________ ______
1 2 9
1 3 2
2 3 10
3 4 10
3 4 7
3 4 1
3 4 3
3 4 6
plot(G,'EdgeLabel',G.Edges.Weight)
Команда simplify(G) сохраняет первое из повторяющихся ребер. Однако можно указать другой метод комплектования/комбинирования со вторым вводом.
Опции для выбора между несколькими кромками: 'first' (по умолчанию), 'last', 'min', и 'max'. Удерживайте повторную кромку с максимальным весом.
H_pick = simplify(G,'max'); plot(H_pick,'EdgeLabel',H_pick.Edges.Weight)

Опции для объединения нескольких кромок в одну: 'sum' и 'mean'. Суммирование повторяющихся кромок для получения одной кромки с большим весом.
H_comb = simplify(G,'sum'); plot(H_comb,'EdgeLabel',H_comb.Edges.Weight)

Упрощение графика при сохранении автономных циклов с помощью 'keepselfloops' вариант.
Создайте мультиграф с двумя узлами и несколькими самокольцами. Упрощение графика и сохранение самокольцов.
G = graph([1 1 1 1 1 1 1 2 2 2 2],[1 1 1 1 2 2 2 2 2 2 2 ]);
plot(G)
axis equal
G = simplify(G,'keepselfloops'); plot(G) axis equal

Использовать второй и третий выходы simplify для получения информации о том, сколько (и какие) ребер объединены.
Создайте неориентированный мультиграф с тремя узлами и четырьмя ребрами.
G = graph([1 1 1 2],[2 2 3 3]); G.Edges
ans=4×1 table
EndNodes
________
1 2
1 2
1 3
2 3
Упростите график и укажите три вывода, чтобы получить дополнительную информацию о объединенных ребрах.
[G,ei,ec] = simplify(G)
G =
graph with properties:
Edges: [3x1 table]
Nodes: [3x0 table]
ei = 4×1
1
1
2
3
ec = 3×1
2
1
1
ei(i) - ребро в упрощенном графике, представляющее ребро, i на старом графике. Поскольку первые два ребра повторяются, ei(1) = ei(2) = 1. Также, ec(1) = 2, так как в новом графе есть два ребра, соответствующие ребру 1 в старом графе.
Демонстрационный ролик об упрощении мультиграфа с помощью 'PickVariable' и 'AggregationVariables' пары имя-значение.
Создайте мультиграф, в котором узлы представляют местоположения, а ребра - виды транспорта. Края имеют свойства, отражающие стоимость и время каждого вида транспорта. Предварительный просмотр таблицы кромок.
G = graph([1 1 1 1 1 1 2 2 2],[2 2 2 3 3 3 3 3 3],[],{'New York', 'Boston', 'Washington D.C.'});
G.Edges.Mode = categorical([1 2 3 1 2 3 1 2 3],[1 2 3],{'Air' 'Train' 'Bus'})';
G.Edges.Cost = [400 80 40 250 100 75 325 150 100]';
G.Edges.Time = [1 7 5 1.5 10 8 1.75 11 9]';
G.Edgesans=9×4 table
EndNodes Mode Cost Time
___________________________________ _____ ____ ____
{'New York'} {'Boston' } Air 400 1
{'New York'} {'Boston' } Train 80 7
{'New York'} {'Boston' } Bus 40 5
{'New York'} {'Washington D.C.'} Air 250 1.5
{'New York'} {'Washington D.C.'} Train 100 10
{'New York'} {'Washington D.C.'} Bus 75 8
{'Boston' } {'Washington D.C.'} Air 325 1.75
{'Boston' } {'Washington D.C.'} Train 150 11
{'Boston' } {'Washington D.C.'} Bus 100 9
Постройте график для справки. Маркируйте режим транспортировки на каждой кромке, делайте ширину линии кромки пропорциональной времени, а цвет каждой кромки пропорциональным стоимости.
plot(G,'EdgeLabel',cellstr(G.Edges.Mode),'LineWidth',G.Edges.Time./min(G.Edges.Time),'EdgeCData',G.Edges.Cost) colorbar

Используйте 'min' метод выбора и укажите значение 'PickVariable' в качестве 'Time' для поиска наиболее быстрого вида транспорта между каждым набором узлов.
t = simplify(G,'min','PickVariable','Time'); plot(t,'EdgeLabel',cellstr(t.Edges.Mode))

Используйте 'sum' метод агрегации и укажите значение 'AggregationVariables' как 'Cost' вычислить, сколько денег делается на каждом подключении.
c = simplify(G,'sum','AggregationVariables','Cost'); plot(c,'EdgeLabel',c.Edges.Cost)

pickmethod - Способ комплектации кромки'first' (по умолчанию) | 'last' | 'min' | 'max'Метод комплектации кромки, указанный как 'first', 'last', 'min', или 'max'. Метод выбора кромки позволяет выбрать одну из нескольких кромок для сохранения при наличии нескольких кромок между одними и теми же двумя узлами.
Если метод 'first' или 'last', то simplify сохраняет только первое или последнее ребро, которое встречается в таблице ребер G.Edges.
Если метод 'min' или 'max', то simplify сохраняет только кромку с минимальным или максимальным весом. Weight переменная должна существовать в G.Edges, если вы не используете 'PickVariable' пара имя-значение, чтобы основывать выбор на другой переменной.
Пример: simplify(G,'last')
aggregatemethod - Метод агрегирования'sum' | 'mean'Метод агрегирования, указанный как 'sum' или 'mean'. Метод агрегирования обеспечивает способ объединения нескольких ребер в одно ребро, когда между одними и теми же двумя узлами имеется несколько ребер.
По умолчанию simplify суммирует или усредняет веса рёбер на графике и сбрасывает все остальные свойства рёбер. Тем не менее, вы можете использовать 'AggregationVariables' пара имя-значение, чтобы указать, какие числовые переменные в G.Edges для сохранения и агрегирования.
Пример: simplify(G,'sum')
selfloopflag - Переключение для сохранения самокольцов'omitselfloops' (по умолчанию) | 'keepselfloops'Переключение для сохранения самокольцов, указанных как:
'omitselfloops' - Удалить все самокольцы из графика. Это значение по умолчанию.
'keepselfloops' - узлы с одним или несколькими автоциклами имеют один автоцикл в упрощенном графе.
Пример: simplify(G,'sum','keepselfloops')
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
H = simplify(G,'sum','AggregationVariables',{'Var1' 'Var2'})'PickVariable' - Переменная для выбора базовой кромки на'Weight' (по умолчанию) | имя переменной | числовой индексПеременная для выбора базовой кромки, заданная как разделенная запятыми пара, состоящая из 'PickVariable' и имя переменной или числовой индекс. Используйте эту пару имя-значение для выбора переменной кромки в G.Edges кроме 'Weight' для использования с 'min' или 'max' методы комплектации. simplify сохраняет только кромку с минимальным или максимальным значением выбранной переменной, если имеется несколько кромок между одними и теми же двумя узлами.
Пример: simplify(G,'min','PickVariable',3)
Пример: simplify(G,'min','PickVariable','var3')
Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string
'AggregationVariables' - Переменные для агрегирования'Weight' (по умолчанию) | имя переменной | массив ячеек имен переменных | строковый массив | числовой вектор | логический вектор | дескриптор функцииПеременные для агрегирования, указанные как пара, разделенная запятыми, состоящая из 'AggregationVariables' и имя переменной, массив ячеек с именами переменных, строковый массив, числовой вектор, логический вектор или дескриптор функции. Используйте эту пару имя-значение для выбора одной или нескольких переменных кромки в G.Edges которые могут быть объединены с 'sum' или 'mean' методы агрегации. simplify объединяет значения этих переменных в одно значение для одного нового ребра, когда имеется несколько ребер между одними и теми же двумя узлами. Значение 'AggregationVariables' может быть одним из следующих:
Символьный вектор, указывающий имя переменной одной таблицы
Массив ячеек векторов символов, где каждый элемент является именем переменной таблицы
Массив строк, указывающий одно или несколько имен переменных
Вектор индексов табличных переменных
Логический вектор, элементы которого соответствуют переменным таблицы, где true включает соответствующую переменную и false исключает его
Дескриптор функции, который принимает G.Edges таблица в качестве входных данных и возвращает логический скаляр, например @isnumeric
Пример: simplify(G,'sum','AggregationVariables',[4 5 6])
Пример: simplify(G,'mean','AggregationVariables',{'var5 var7'})
Пример: simplify(G,'mean','AggregationVariables',@isnumeric)
Типы данных: single | double | logical | function_handle | char | string | cell
H - Упрощенный графикgraph объект | digraph объектУпрощенный график, возвращенный как graph или digraph объект. H не содержит повторяющихся ребер между одними и теми же двумя узлами, так что ismultigraph(H) возвращает логический 0 (false). Самокольцы также удаляются, если не указано значение 'keepselfloops' вариант.
eind - Граничные индексыГраничные индексы, возвращаемые как вектор. Ребро в H который представляет ребро i в G задается H.Edges(eind(i),:). Если край i в G является самокольцовкой, которая была удалена, то eind(i) является 0.
ecount - Количество краевСчетчик ребер, возвращаемый как вектор. ecount(i) - количество ребер в G которые соответствуют краю i в H.
digraph | graph | ismultigraph
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.