В теории графов сжатие ребра — это операция , которая удаляет ребро из графа и одновременно объединяет две вершины , которые оно ранее соединяло. Сжатие ребер — фундаментальная операция в теории миноров графов . Идентификация вершин является менее ограничительной формой этой операции.
Операция сжатия ребра происходит относительно конкретного ребра . Ребро удаляется, а две его инцидентные вершины и объединяются в новую вершину , где ребра, инцидентные каждой, соответствуют ребру, инцидентному либо или . В более общем смысле, операцию можно выполнить над набором ребер путем сжатия каждого ребра (в любом порядке). [1]
Полученный график иногда записывается как . (Сравните это с , что означает простое удаление ребра без объединения его инцидентных вершин.)
Как определено ниже, операция сжатия ребер может привести к созданию графа с несколькими ребрами, даже если исходный граф был простым графом . [2] Однако некоторые авторы [3] запрещают создание кратных ребер, поэтому сжатие ребер, выполняемое на простых графах, всегда приводит к созданию простых графов.
Позвольте быть графом ( или ориентированным графом ), содержащим ребро с . Пусть — функция, которая отображает каждую вершину в себя или, в противном случае, отображает ее в новую вершину . Сжатие результатов в новом графе , где , и для каждого , инцидентно ребру тогда и только тогда, когда соответствующее ребро инцидентно ребру .
Идентификация вершин (иногда называемая сокращением вершин ) снимает ограничение, заключающееся в том, что сокращение должно происходить над вершинами, имеющими общее инцидентное ребро. (Таким образом, сжатие ребер является частным случаем идентификации вершин.) Операция может выполняться с любой парой (или подмножеством) вершин графа. Ребра между двумя сжимающимися вершинами иногда удаляются. Если и являются вершинами различных компонентов , то мы можем создать новый граф, идентифицировав и как новую вершину в . [4] В более общем смысле, учитывая раздел множества вершин, можно идентифицировать вершины в разделе; результирующий граф известен как факторграф .
Расщепление вершин , то же самое, что и расщепление вершин, означает, что одна вершина разбивается на две, причем эти две новые вершины смежны с вершинами, с которыми была смежна исходная вершина. Это обратная операция идентификации вершин, хотя, как правило, для идентификации вершин соседние вершины двух идентифицированных вершин не являются одним и тем же набором.
Сжатие пути происходит на наборе ребер пути, которые сжимаются , образуя одно ребро между конечными точками пути. Ребра, инцидентные вершинам пути, либо исключаются, либо произвольно (или систематически) соединяются с одной из конечных точек.
Рассмотрим два непересекающихся графа и , где содержит вершины и и содержит вершины и . Предположим , мы можем получить граф, идентифицируя вершины и как вершину и идентифицируя вершины и как вершину . При скручивании относительно множества вершин мы вместо этого отождествляем с и с . [5]
Методы сжатия ребер и вершин полезны для доказательства путем индукции по количеству вершин или ребер в графе, где можно предположить, что свойство справедливо для всех меньших графов, и это можно использовать для доказательства свойства для большего графа.
Сжатие ребер используется в рекурсивной формуле для числа остовных деревьев произвольного связного графа [ 6] и в рекуррентной формуле для хроматического многочлена простого графа. [7]
Сокращение также полезно в структурах, где мы хотим упростить граф, идентифицируя вершины, которые представляют собой по существу эквивалентные объекты. Одним из наиболее распространенных примеров является приведение общего ориентированного графа к ациклическому ориентированному графу путем сжатия всех вершин в каждом сильно связном компоненте . Если отношение, описываемое графом, является транзитивным , никакая информация не теряется, пока мы помечаем каждую вершину набором меток вершин, которые были сокращены для ее формирования.
Другим примером является объединение, выполняемое при распределении регистров глобальной раскраски графа , где вершины сжимаются (там, где это безопасно), чтобы исключить операции перемещения между различными переменными.
Сжатие ребер используется в пакетах 3D-моделирования (вручную или с помощью какой-либо функции программного обеспечения для моделирования) для последовательного уменьшения количества вершин, помогая создавать модели с низким содержанием полигонов.