Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмы на графах.doc
Скачиваний:
125
Добавлен:
13.04.2015
Размер:
621.06 Кб
Скачать

4. Операции над графами

Общепринятыми унарными операциями над графами являются следующие операции:

1. Удаление вершины. Обозначение H=G-v, гдеHиGрезультирующий и исходный графы соответственно,v– удаляемая вершина.

2. Удаление ребра. Обозначение H=G-e, гдеe– удаляемое ребро.

3. Стягивание ребра.

В определённом смысле двойственными к этим операциям являются операции:

4. Добавление вершины. Обозначение H=G+v, гдеv– добавляемая вершина.

5. Добавление ребра. Обозначение H=G+e, гдеe– добавляемое ребро.

6. Расщепление вершины.

Смысл 1,2,4,5 операций очевиден. Рассмотрим подробнее 3 и 6 операции.

Стягивание ребра {u,v} обозначает отождествление смежных вершинu иv.

Для отождествления вершин uиvграфаGнеобходимо выполнить следующие действия:

  1. H=G-u-v+v- получить графHпутем удаления из исходного графаGотождествляемых вершинu,vи добавления новой вершиныv.

  2. в графе Hсоединить вершинуvребром с каждой вершиной, смежной с вершинойu, а затем с каждой вершиной, смежной с вершинойv, в графеG.

Примеры отождествления вершин и cтягивания ребра представлены на рис. 4.1.

Отметим, что в общем случае при выполнении операции отождествления вершин графа могут образоваться кратные рёбра, то есть результатом такой операции будет мультиграф. Один из таких случаев проиллюстрирован на рис. 4.2.

Пусть v- одна из вершин графаG. Разобьём множество смежных ей вершин (её окружение) на два произвольных подмножестваM иNи выполним следующее преобразование графаG:

1) удалим вершину vвместе с инцидентными ей рёбрами;

2) добавим новые вершины u иwи ребро {u,w};

3) вершину uсоединим ребром с каждой вершиной из множестваM, а вершинуw- с каждой вершиной из множестваN.

Теперь рассмотрим две бинарные графовые операции: объединение и произведения графов.

Граф H=(V,E) называетсяобъединением графовF=(V1,E1) иG=(V2,E2), еслиV=V1V2,E=E1E2.

Для обозначения операции объединения графов используется запись H=FG. Пример операции объединения графов показан на рис. 4.3.

Объединение графов F=(V1,E1) иG=(V2,E2) называетсядизъюнктивным, еслиV1V2=.

Аналогично определяется объединение и дизъюнктивное объединение любого множества графов, причём в последнем случае никакие два из объединяемых графов не должны иметь общих вершин.

Пусть Gi=(Vi,Ei), (i=1,2) – два графа.Произведением графовG1G2называется графG=(V,E), гдеV=V1V2– декартово произведение множеств вершин исходных графов, а множествоEформируется по правилу: вершины (u1,u2) и (v1,v2) смежные в графеGтогда и только тогда, когда илиu1=v1, аu2иv2смежные вG2, илиu2=v2, аu1иv1смежные вG2(рис. 4.4.)

Очевидно, что число вершин графа G=(V,E), полученного в результате произведения графовG1=(V1,E1) иG2=(V2,E2), равно произведению числа вершин графовG1иG2, то есть |V|=|V1||V2|, а число рёбер определяется так: |E|=|V1||E2|+|V2||E1|.

С помощью операции произведения вводится понятие n-мерного куба,n-мерный кубQnопределяется рекуррентно:

  1. Q1=K2, гдеK2– полный граф порядка 2,

  2. Qn=K2Qn-1, n>1.

Очевидно, что Qn– граф порядка 2n, вершины которого можно представить (0,1)-векторами длиныnтаким образом, что две вершины будут смежные тогда и только тогда, когда соответствующие векторы различаются ровно в одной координате.

Упражнения:

1. Нарисуйте кубы Q1,Q2 иQ3. Определите число рёберn-мерного куба.

2. Постройте алгоритмы, реализующие операции над графами. Какие структуры данных для хранения графов удобнее при реализации тех или иных операций?