Новосибирский Государственный Университет
Опубликован: 08.11.2006 | Доступ: свободный | Студентов: 1941 / 96 | Оценка: 4.27 / 4.09 | Длительность: 12:16:00
Специальности: Программист
Лекция 12:

Что такое граф? Определения и примеры

< Лекция 11 || Лекция 12: 12 || Лекция 13 >

Остовные деревья

Связный неориентированный ациклический граф называется деревом, множество деревьев называется лесом. В связном неориентированном графе G существует по крайней мере один путь между каждой парой вершин; отсутствие циклов в G означает, что существует самое большее один такой путь между любой парой вершин в G. Поэтому, если G - дерево, то между каждой парой вершин в G существует в точности один путь. Рассуждение легко обратимо, и поэтому неориентированный граф G будет деревом тогда и только тогда, если между каждой парой вершин в G существует в точности один путь. Так как наименьшее число ребер, которыми можно соединить n вершин, равно n - 1 и дерево с n вершинами содержит в точности n - 1 ребер, то деревья можно считать минимально связными графами. Удаление из дерева любого ребра превращает его в несвязный граф, разрушая единственный путь между по крайней мере одной парой вершин.

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

Во взвешенном графе G = (V,E) часто интересно определить остовное дерево (лес) с минимальным общим весом ребер, то есть дерево (лес), у которого сумма весов всех его ребер минимальна. Такое дерево называется минимумом оставных деревьев или минимальное остовное дерево. Другими словами, на каждом шаге мы выбираем новое ребро с наименьшим весом (наименьшее ребро), не образующее циклов с уже выбранными ребрами; этот процесс продолжаем до тех пор, пока не будет выбрано \left| V \right| - 1 ребер, образующих остовное дерево T. Этот процесс известен как жадный алгоритм.

Жадный алгоритм может быть выполнен в два этапа. Сначала ребра сортируются по весу и затем строится остовное дерево путем выбора наименьших из имеющихся в распоряжении ребер.

Существует другой метод получения минимума остовных деревьев, который не требует ни сортировки ребер, ни проверки на цикличность на каждом шаге, - так называемый алгоритм ближайшего соседа. Мы начинаем с некоторой произвольной вершины a в заданном графе. Пусть (a,b) - ребро с наименьшим весом, инцидентное a ; ребро (a,b) включается в дерево. Затем среди всех ребер, инцидентных либо a, либо b, выбираем ребро с наименьшим весом и включаем его в частично построенное дерево. В результате этого в дерево добавляется новая вершина, например, c. Повторяя процесс, ищем наименьшее ребро, соединяющее a, b или c с некоторой другой вершиной графа. Процесс продолжается до тех пор, пока все вершины из G не будут включены в дерево, то есть пока дерево не станет остовным.

Наихудшим для этого алгоритма будет случай, когда G - полный граф (то есть когда каждая пара вершин в графе соединена ребром); в этом случае для того, чтобы найти ближайшего соседа, на каждом шаге нужно сделать максимальное число сравнений. Чтобы выбрать первое ребро, мы сравниваем веса всех \left| V \right| - 1 ребер, инцидентных вершине a, и выбираем наименьшее; этот шаг требует \left| V
\right| - 2 сравнений. Для выбора второго ребра мы ищем наименьшее среди возможных 2(\left| V \right| - 2) ребер (инцидентных a или b ) и делаем для этого 2(\left|
V \right| - 2) - 1 сравнений. Таким образом, ясно, что для выбора i -го ребра требуется i(\left| V \right| - i) -
1 сравнений, и поэтому в сумме потребуется

\sum\limits_{i =
1}^{\left| V \right| - 1} {[i(\left| V \right| - i) - 1] = \frac{1}
{6}\left| V \right|^3  + O(\left| V \right|^2 )}
сравнений для построения минимума остовных деревьев.

Клики

Максимальный полный подграф графа G называется кликой графа G ; другими словами, клика графа G есть подмножество его вершин, такое, что между каждой парой вершин этого подмножества существует ребро и, кроме того, это подмножество не принадлежит никакому большому подмножеству с тем же свойством. Например, на рис. 12.3 показан граф и его клики.

Граф G и все его клики

Рис. 12.2. Граф G и все его клики

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

Изоморфизм

Два графа G_A  = (V_A,E_A ),G_B  = (V_B,E_B ) называются изоморфными, если существует взаимно однозначное соответствие f:V_A  \to V_B, такое, что (v,w) \in E_A тогда и только тогда, если (f(v),f(w)) \in
E_B, то есть существует соответствие между вершинами графа G_A и вершинами графа G_B, сохраняющее отношение смежности. Например, на рис. 12.3 показаны два изоморфных орграфа: вершины a,b,c,d,e,f в орграфе G_2 соответствуют вершинам 2, 3, 6, 1, 4, 5 в указанном порядке в орграфе G_1^{}. Вообще говоря, между V_A и V_B может быть более чем одно соответствие, и на рис. 12.3 графы имеют на самом деле второй изоморфизм: a,b,c,d,e,f соответствуют в указанном порядке вершинам 2, 3, 6, 1, 5, 4. Изоморфные графы отличаются только метками вершин, в связи с чем задача определения изоморфизма возникает в ряде практических ситуаций, таких, как информационный поиск и определение химических соединений.

Заметим, что можно ограничится орграфами. Любой неориентированный граф превращается в орграф заменой каждого ребра двумя противоположно направленными ребрами. Два полученные таким образом орграфа, очевидно, изоморфны тогда и только тогда, если изоморфны исходные графы.

Изоморфные орграфы

Рис. 12.3. Изоморфные орграфы

Планарность

Граф называют планарным, если существует такое изображение на плоскости его вершин и ребер, что:

  • каждая вершина v изображается отдельной точкой v' на плоскости;
  • каждое ребро (v,w) изображается простой кривой, имеющей концевые точки (v',w^1 ) ;
  • эти кривые пересекаются только в общих концевых точках. Задача определения того, можно ли изобразить граф на плоскости без пересечения ребер, имеет большой практический интерес (например, при конструировании интегральных схем или печатных плат необходимо выяснить, можно ли окончательную схему вложить в плоскость).

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

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

Наша основная стратегия состоит прежде всего в том, чтобы в графе G найти цикл C, разместить C на плоскости в виде простой замкнутой кривой, разложить оставшуюся часть G
- C на непересекающиеся по ребрам пути и затем попытаться разместить каждый из этих путей либо целиком внутри C, либо целиком вне C. Если нам удалось разместить так весь граф G, то он планарен, в противном случае он непланарен. Трудность этого способа заключается в том, что при размещении путей можно выбирать либо внутренность, либо внешность C$, и мы должны проконтролировать, чтобы неправильный выбор области размещения на ранней стадии не устранял возможности размещения последующих путей, - это могло бы привести нас к неверному заключению, что планарный граф непланарен.

< Лекция 11 || Лекция 12: 12 || Лекция 13 >