В математике , и, в частности, в теории графов , корневой граф — это граф , в котором одна вершина выделена как корень. [1] [2] Были изучены как направленные , так и ненаправленные версии корневых графов, и существуют также варианты определений, которые допускают наличие нескольких корней.
Корневые графы также могут быть известны (в зависимости от их применения) как точечные графы или потоковые графы . В некоторых приложениях этих графов существует дополнительное требование, чтобы весь граф был достижим из корневой вершины.
В топологической теории графов понятие корневого графа может быть расширено для рассмотрения множественных вершин или множественных ребер в качестве корней. Первые иногда называются графами с корнем вершин, чтобы отличать их от графов с корнем ребер в этом контексте. [3] Графы с множественными узлами, обозначенными как корни, также представляют определенный интерес в комбинаторике , в области случайных графов . [4] Эти графы также называются графами с несколькими корнями . [5]
Термины корневой ориентированный граф или корневой орграф также имеют различия в определениях. Очевидный перенос — рассматривать корневой орграф, идентифицируя конкретный узел как корень. [6] [7] Однако в информатике эти термины обычно относятся к более узкому понятию; а именно, корневой ориентированный граф — это орграф с выделенным узлом r , такой, что существует направленный путь от r к любому узлу, отличному от r . [8] [9] [10] [11] Авторы, которые дают более общее определение, могут ссылаться на графы, соответствующие более узкому определению, как на связные корневые орграфы [6] или доступные корневые графы (см. § Теория множеств).
Искусство программирования определяет корневые орграфы немного шире, а именно, направленный граф называется корневым, если у него есть хотя бы один узел, который может достичь всех остальных узлов. Кнут отмечает, что понятие, определенное таким образом, является своего рода промежуточным между понятиями сильно связанного и связного орграфа . [12]
В информатике корневые графы, в которых корневая вершина может достигать всех других вершин, называются потоковыми графами или потоковыми графами . [13] Иногда добавляется дополнительное ограничение, указывающее, что потоковый граф должен иметь одну выходную ( сливную ) вершину. [14]
Поточные графы можно рассматривать как абстракции потоковых диаграмм , из которых удалены неструктурные элементы (содержимое и типы узлов). [15] [16] Возможно, наиболее известным подклассом потоковых графов являются графы потока управления , используемые в компиляторах и анализе программ . Произвольный потоковый граф может быть преобразован в граф потока управления путем выполнения сокращения ребер на каждом ребре, которое является единственным исходящим ребром из его источника и единственным входящим ребром в его цель. [17] Другой тип потокового графа, который обычно используется, — это граф вызовов , в котором узлы соответствуют целым подпрограммам . [18]
Общее понятие потокового графа было названо программным графом [ 19], но этот же термин также использовался для обозначения только графов потока управления. [20] Потоковые графы также назывались немаркированными потоковыми графами [21] и собственно потоковыми графами [ 15] Эти графы иногда используются при тестировании программного обеспечения [ 15] [18]
Когда требуется иметь единственный выход, потоковые графы обладают двумя свойствами, которые не свойственны направленным графам в целом: потоковые графы могут быть вложенными, что эквивалентно вызову подпрограммы (хотя нет понятия передачи параметров), и потоковые графы также могут быть упорядочены, что эквивалентно последовательному выполнению двух фрагментов кода. [22] Простые потоковые графы определяются как потоковые графы, которые не могут быть разложены посредством вложения или упорядочивания с использованием выбранного шаблона подграфов, например, примитивов структурного программирования . [23] Были проведены теоретические исследования по определению, например, доли простых потоковых графов при заданном выбранном наборе графов. [24]
Питер Ацель использовал корневые ориентированные графы, такие, что каждый узел достижим из корня (которые он называет доступными точечными графами ), чтобы сформулировать аксиому антиоснования Ацеля в теории множеств с неполным основанием . В этом контексте каждая вершина доступного точечного графа моделирует (неполным основанием) множество в теории множеств Ацеля (неполным основанием), а дуга из вершины v в вершину w моделирует, что v является элементом w . Аксиома антиоснования Ацеля утверждает, что каждый доступный точечный граф моделирует семейство (неполным основанием) множеств таким образом. [25]
Любая комбинаторная игра может быть связана с корневым ориентированным графом, вершины которого являются игровыми позициями, ребра — ходами, а корень — начальной позицией игры. Этот граф важен при изучении сложности игры , где сложность пространства состояний — это количество вершин в графе.
Число корневых неориентированных графов для узлов 1, 2, ... равно 1, 2, 6, 20, 90, 544, ... (последовательность A000666 в OEIS ).
Особый интерес представляют корневые деревья , деревья с выделенной корневой вершиной. Если направленные пути из корня в корневом орграфе дополнительно ограничены, чтобы быть уникальными, то полученное понятие является понятием (корневого) древовидного дерева — направленного графа, эквивалентного корневому дереву. [7] Корневой граф содержит древовидное дерево с тем же корнем тогда и только тогда, когда весь граф может быть достигнут из корня, и специалисты по информатике изучали алгоритмические проблемы поиска оптимальных древовидных деревьев. [26]
Корневые графы можно объединить, используя корневое произведение графов . [27]
В этом контексте корневой орграф Δ = ( V , E , r ) называется связным (или 1-связным ), если существует направленный путь из корня в каждую вершину.См. в частности стр. 307.
Корневой подорграф
F
является
корневым орборесценцией
, если корневая вершина ∗ принадлежит
F
и для каждой вершины
v
в
F
существует уникальный направленный путь в
F
от ∗ до
v
. Таким образом, корневые орборесценции в орграфах соответствуют корневым деревьям в неориентированных графах.
ориентированный граф
или потоковый граф G = ( V , A , r ) — это ориентированный граф с выделенной вершиной r, такой что в G существует направленный путь из r в каждую вершину v из V − r .. См. в частности стр. 122.
Корневой
орграф — это тройка
G
=(
V
,
E
,
r
), где (
V
∪ {
r
},
E
) — орграф, а
r
—
указанная вершина, называемая корнем, такая, что существует путь из
r
в каждую вершину
V
.
. См. в частности стр. 524.
Корневойорграф
— это связный орграф с одним корневым узлом, который является предком всех остальных узлов в орграфе
.
Говорят, что он имеет корень, если существует хотя бы один корень, то есть хотя бы одна вершина
R,
такая
что существует ориентированный путь из
V
в
R
для всех
V
≠
R.