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