вершин и E – множество дуг.
В разделе, посвященному NP –полным задачам, уже формулировались некоторые
NP –полные задачи на графах, например задача "Гамильтонов цикл" и "Клика". К
сожалению, достаточно большое число задач на графах являются NP –полными и,
следовательно, требуют полного перебора для решения. К таким задачам, кроме
уже рассмотренных в предшествующем разделе, можно отнести следующие широко
известные задачи.
1. Задача "Вершинное покрытие". Задан граф G = (V, E) и положительное целое
число K <= |V |. Вершинным покрытием мощности, не превосходящей K, называется
такое подмножество вершин V
1
⊆ V , что |V
1
| ≤ K и для любого ребра (u, v) ∈ E по
крайней мере одна из вершин u или v принадлежит V
1
.
Вопрос. Существует ли в графе G вершинное покрытие мощности, не превосхо-
дящей K?
2. Задача "Множество вершин, разрезающих циклы". Задан граф G = (V, E) и
положительное целое число K <= |V |.
Вопрос. Существует ли подмножество вершин V
1
⊆ V , такое, что |V
1
| <= K и V
1
содержит по крайней мере одну вершину любого ориентированного цикла в G?
Замечание. Соответствующая задача для неориентированных графов также NP –
полна.
3. Задача "Множество дуг, разрезающих циклы". Задан граф G = (V, E) и по-
ложительное целое число K <= |V |.
Вопрос. Существует ли подмножество дуг E
1
⊆ E, такое, что |E
1
| ≤ K и E
1
содержит по крайней мере одну дугу из каждого ориентированного цикла в G?
Замечание. Соответствующая задача для неориентированных графов тривиаль-
ным образом решается за полиномиальное время.
4. Задача "Независимое множество вершин". Задан граф G = (V, E) и положи-
тельное целое число K <= |V |.
Вопрос. Верно ли, что в G существует независимое множество вершин мощности
не менее K? Иными словами, верно ли, что существует подмножество вершин V
1
⊆ V ,
такое, что |V
1
| ≥ K и никакие две вершины из V
1
не соединены ребром?
Замечание. Соответствующая задача для двудольных графов решается за поли-
номиальное время.
5. Задача "Изоморфизм подграфу". Заданы два графа G = (V
1
, E
1
) и H = (V
2
, E
2
).
Граф G = (V
1
, E
1
) называется изоморфным графу T = (V, E), если |V | = |V
1
|, |E| =
|E
1
| и такая существует взаимно–однозначная функция f(u) : V → V
1
, что (u, v) ∈ E
тогда и только тогда, когда (f(u), f(v)) ∈ E
1
.
Вопрос. Содержит ли граф, G подграф, изоморфный графу H?
Замечание. Задача решается за полиномиальное время, если G — лес, а H —
дерево.
6. Задача "Стягиваемость графа". Заданы два графа G = (V
1
, E
1
) и H = (V
2
, E
2
).
Последовательностью стягивания ребер называется такая последовательность шагов,
на каждом из которых две соседние вершины u и v заменяются одной вершиной w,
соединенной ребрами с теми и только теми вершинами, с которыми были соединены
u или v.
Вопрос. Можно ли последовательным стягиванием ребер графа G получить граф,
изоморфный H?
Теперь рассмотрим примеры задач на графах, решение которых выполняется за
полиномиальное время. Одну из таких задач мы уже рассмотрели в предыдущем раз-
деле 6.5. Это задача поиска наикратчайшего пути, решаемая с помощью алгоритмы
Дейкстры за время O(N
2
). К полиномиальным алгоритмам относятся, в основном,
161