Уменьшайте мультиграф до простого графика
задает метод, чтобы выбрать между несколькими ребрами. Свойства ребра сохраняются. 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
консервы только ребро с минимальным или максимальным весом. 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
ложь
). Самоциклы также удалены, если вы не задаете '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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.