Уменьшите мультиграфик до простого графика
задает метод для выбора между несколькими ребрами. Свойства ребра сохранены. 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.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)
pickmethod
- Метод комплектования ребер'first'
(по умолчанию) | 'last'
| 'min'
| 'max'
Метод комплектования ребер, заданный как 'first'
, 'last'
, 'min'
, или 'max'
. Способ захвата кромки предоставляет способ выбрать, какой из нескольких ребер сохранить, когда между этими же двумя узлами существует более одного ребра.
Если метод 'first'
или 'last'
, затем simplify
сохраняет только первое или последнее ребро, которое находится в таблице ребер G.Edges
.
Если метод 'min'
или 'max'
, затем simplify
сохраняет только ребро с минимальным или максимальным весом. The 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
table as input и возвращает логический скаляр, такой как @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
- Индексы реберИндексы ребра, возвращенные как вектор. The ребра in 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.