Испытание циклов на направленном графике
graphisdag(G)
G | N-на-N разреженная матрица, представляющая направленный граф. Ненулевые записи в матрице G указывают на наличие ребра. |
Совет
Вводные сведения о функциях теории графов см. в разделе Функции теории графов.
graphisdag( возвращает логический 1 (G)true), если направленный граф представлен матрицей G является направленным ациклическим графом (DAG) и логическим 0 (false) в противном случае. G - разреженная матрица N-на-N, представляющая направленный граф. Ненулевые записи в матрице G указывают на наличие ребра.
Создайте и просмотрите направленный ациклический граф (DAG) с шестью узлами и восемью ребрами.
DG = sparse([1 1 1 2 2 3 4 6],[2 4 6 3 5 4 6 5],true,6,6) DG = (1,2) 1 (2,3) 1 (1,4) 1 (3,4) 1 (2,5) 1 (6,5) 1 (1,6) 1 (4,6) 1 view(biograph(DG))

Испытание на циклы в DAG.
graphisdag(DG)
ans =
1Добавьте ребро в группу обеспечения доступности баз данных, чтобы сделать его циклическим, а затем просмотрите направленный график.
DG(5,1) = true DG = (5,1) 1 (1,2) 1 (2,3) 1 (1,4) 1 (3,4) 1 (2,5) 1 (6,5) 1 (1,6) 1 (4,6) 1 view(biograph(DG))

Проверка циклов на новом графике.
graphisdag(DG)
ans =
0Загрузите базу данных Gene Ontology в объект geneont.
GO = geneont('live',true);Преобразование генеонтного объекта в матрицу.
CM = getmatrix(GO);
Проверка циклов на графике.
graphisdag(CM)
Создайте и просмотрите случайный направленный ациклический граф (DAG) с 15 узлами и 20 ребрами.
g = sparse([],[],true,15,15); while nnz(g) < 20 edge = randsample(15*15,1); % get a random edge g(edge) = true; g(edge) = graphisdag(g); end view(biograph(g))
Проверка циклов на графике.
graphisdag(g)
[1] Сиек, Дж. Г., Ли, L-Q, и Люмсдейн, А. (2002). Руководство пользователя и справочное руководство библиотеки Boost Graph (Upper Saddle River, NJ: Pearson Education).
graphallshortestpaths | graphconncomp | graphisomorphism | graphisspantree | graphmaxflow | graphminspantree | graphpred2path | graphshortestpath | graphtopoorder | graphtraverse | isdag