Уменьшайте мультиграф до простого графика
H = simplify(G)
H = simplify(G,pickmethod)
H = simplify(G,aggregatemethod)
H = simplify(___,selfloopflag)
H = simplify(___,Name,Value)
[H,eind,ecount] = simplify(___)
задает метод, чтобы выбрать между несколькими ребрами. Свойства ребра сохраняются. 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
, чтобы использовать ту переменную с методами выбора 'max'
или 'min'
.
Создайте взвешенный, неориентированный мультиграф с несколькими ребрами между узлом 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 в старом графике.
Покажите, как упростить мультиграф с помощью пар "имя-значение" 'AggregationVariables'
и 'PickVariable'
.
Создайте мультиграф, где узлы представляют местоположения, и ребра представляют виды транспорта. Ребра имеют свойства, которые отражают стоимость и время каждого режима транспортировки. Предварительно просмотрите таблицу ребер.
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.Edges
ans=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)
G
Введите графикgraph
| объект digraph
Входной график, заданный как объект граф или диграф.
Используйте граф для создания неориентированного графа или диграф для создания ориентированного графа.
Пример: G = graph(1,2)
Пример: G = digraph([1 2],[2 3])
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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.