В теории графов , разделе математики , ранг цепи , цикломатическое число , ранг цикла или нуль неориентированного графа — это минимальное количество ребер, которое необходимо удалить из графа, чтобы разорвать все его циклы , превратив его в дерево или лес . Он равен количеству независимых циклов в графе (размеру базиса цикла ). В отличие от соответствующей задачи набора дуг обратной связи для ориентированных графов , ранг цепи r легко вычисляется с помощью формулы
где m — количество ребер в данном графе, n — количество вершин , а c — количество связанных компонентов . [1] Также возможно построить набор ребер минимального размера, который эффективно разрывает все циклы, либо используя жадный алгоритм , либо дополняя остовной лес .
Ранг схемы можно объяснить в терминах алгебраической теории графов как размерность пространства циклов графа, в терминах теории матроидов как коранг графического матроида , а в терминах топологии как одно из чисел Бетти топологического пространства, полученного из графа. Он подсчитывает уши в ушной декомпозиции графа, формирует основу параметризованной сложности на почти деревьях и применялся в метриках программного обеспечения как часть определения цикломатической сложности фрагмента кода. Под названием цикломатического числа эта концепция была введена Густавом Кирхгофом . [2] [3]
Ранг цепи графа G можно описать с помощью теории матроидов как коранг графического матроида G. [4] Используя жадное свойство матроидов, это означает, что можно найти минимальный набор ребер, который разрывает все циклы, используя жадный алгоритм , который на каждом шаге выбирает ребро , принадлежащее по крайней мере одному циклу оставшегося графа.
В качестве альтернативы минимальный набор ребер, который разрывает все циклы, можно найти, построив остовной лес G и выбрав дополнительный набор ребер, которые не принадлежат остовному лесу.
В алгебраической теории графов ранг схемы также является размерностью пространства циклов . Интуитивно это можно объяснить так, что ранг схемы подсчитывает количество независимых циклов в графе, где набор циклов независим, если невозможно сформировать один из циклов как симметричную разность некоторого подмножества других. [1]
Это количество независимых циклов также можно объяснить с помощью теории гомологии , раздела топологии. Любой граф G можно рассматривать как пример одномерного симплициального комплекса , типа топологического пространства, образованного представлением каждого ребра графа отрезком прямой и склеиванием этих отрезков прямой вместе в их конечных точках. Цикломатическое число — это ранг первой ( целой ) группы гомологий этого комплекса, [5]
Из-за этой топологической связи цикломатическое число графа G также называется первым числом Бетти графа G. [6] В более общем смысле первое число Бетти любого топологического пространства, определенное таким же образом, подсчитывает количество независимых циклов в пространстве .
Вариант ранга цепи для планарных графов , нормализованный путем деления на максимально возможный ранг цепи любого планарного графа с тем же набором вершин, называется коэффициентом сетчатости . Для связного планарного графа с m ребрами и n вершинами коэффициент сетчатости можно вычислить по формуле [7]
Здесь числитель формулы - это ранг цепи данного графа, а знаменатель - это максимально возможный ранг цепи n -вершинного планарного графа. Коэффициент сетчатости варьируется от 0 для деревьев до 1 для максимальных планарных графов .
Ранг схемы контролирует количество ушей в ушной декомпозиции графа, разбиении ребер графа на пути и циклы, которое полезно во многих алгоритмах графов. В частности, граф является 2-вершинно-связанным тогда и только тогда, когда он имеет открытую ушную декомпозицию. Это последовательность подграфов, где первый подграф является простым циклом, все остальные подграфы являются простыми путями, каждый путь начинается и заканчивается на вершинах, которые принадлежат предыдущим подграфам, и каждая внутренняя вершина пути появляется впервые в этом пути. В любом двусвязном графе с рангом схемы каждое открытое ушное разложение имеет ровно уши. [8]
Граф с цикломатическим числом также называется r -почти-деревом , потому что для того, чтобы превратить его в дерево или лес, из графа нужно удалить только r ребер. 1-почти-дерево — это почти-дерево : связанное почти-дерево — это псевдодерево , цикл с (возможно, тривиальным) деревом, укорененным в каждой вершине. [9]
Несколько авторов изучали параметризованную сложность графовых алгоритмов на r -почти-деревьях, параметризованных с помощью . [10] [11]
Ранг цикла — это инвариант ориентированных графов , который измеряет уровень вложенности циклов в графе. Он имеет более сложное определение, чем ранг схемы (тесно связанное с определением глубины дерева для неориентированных графов), и его сложнее вычислить. Другая проблема для ориентированных графов, связанная с рангом схемы, — это минимальный набор дуг обратной связи , наименьший набор ребер, удаление которых нарушает все ориентированные циклы. Как ранг цикла, так и минимальный набор дуг обратной связи являются NP-трудными для вычисления.
Также возможно вычислить более простой инвариант ориентированных графов, игнорируя направления ребер и вычисляя ранг цепи базового неориентированного графа. Этот принцип лежит в основе определения цикломатической сложности , программной метрики для оценки сложности фрагмента компьютерного кода.
В области химии и хемоинформатики ранг цепи молекулярного графа (число колец в наименьшем наборе наименьших колец ) иногда называют числом Фрережака . [12] [13] [14]
Некоторые вычислительные задачи на графах в общем случае являются NP-трудными, но могут быть решены за полиномиальное время для графов с малым рангом цепи. Примером может служить задача реконфигурации пути. [15]
Другие числа, определяемые с точки зрения удаления элементов из графиков: