hascycles

Определите, содержит ли график циклы

Синтаксис

Описание

пример

tf = hascycles(G) возвращает логический 1 (true), если графиков G содержит один или несколько циклов и логических 0 (false) в противном случае.

Примеры

свернуть все

Создайте и постройте график неориентированного графа.

G = graph([1 1 1 1],[2 3 4 5]);
plot(G)

Figure contains an axes. The axes contains an object of type graphplot.

Определите, имеют ли график циклы.

tf = hascycles(G)
tf = logical
   0

Теперь добавьте ребро к графику между узлом 2 и узлом 3. Воспроизведите график.

G = addedge(G,2,3);
plot(G)

Figure contains an axes. The axes contains an object of type graphplot.

Определите, имеет ли новый график циклы.

tf2 = hascycles(G)
tf2 = logical
   1

Исследуйте различие между hascycles и isdag функции, работающие на ориентированном графе.

Создайте и постройте ориентированного графа.

s = [1 1 1 2 3 3 3 4 6];
t = [2 4 5 5 6 7 4 1 4];
G = digraph(s,t);
plot(G)

Figure contains an axes. The axes contains an object of type graphplot.

Определите, содержит ли график какие-либо циклы.

tf = hascycles(G)
tf = logical
   1

hascycles возвращает true когда ориентированный граф содержит цикл.

Теперь используйте isdag определить, направлен ли график и ациклический.

tf2 = isdag(G)
tf2 = logical
   0

isdag возвращает false потому что график содержит цикл. В целом, hascycles и isdag функции возвращают противоположные результаты для ориентированных графов.

Входные параметры

свернуть все

Входной график, заданный как graph или digraph объект. Использование graph для создания неориентированного графа или digraph для создания ориентированного графа.

Пример: G = graph(1,2)

Пример: G = digraph([1 2],[2 3])

Подробнее о

свернуть все

Графовые циклы

Цикл существует в график, когда существует непустой путь, в котором повторяются только первый и последний узлы. Примером цикла является: (Node1 - Node2 - Node3 - Node1).

Цикл не может пройти одно и то же ребро дважды. Для примера цикл (Node1 - Node2 - Node1) в неориентированном графе существует только, если существует более одного ребра, соединяющего Node1 и Node2. По этому определению самоциклов считаются циклами, хотя они не могут быть частью каких-либо больших циклов.

См. также

| |

Введенный в R2021a