Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Теория алгоритмов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
08.09.2026
Размер:
2 Мб
Скачать
☆
5.2. Классы сложности
n nn+
этой цели обычно используется число городов. Однако, в задаче с т городов, кроме номеров этих городов на объем входной информации влияют также т(т – 1)/2 величин, определяющих расстояния между городами, и значения этих величин.
Выбор минимального по сложности алгоритма в кон­кретных случаях очень часто оказывается весьма трудной задачей. Поэтому приходится довольствоваться получени­ем нижних и верхних оценок сложности алгоритма, при этом часто интересуются только поведением алгоритма при достаточно больших размерах входа, поскольку имен­но эти входы определяют границы применимости алгорит­ма. Различия между алгоритмами сложности 310n и 37n можно сделать несущественными при помощи технологи­ческих достижений. С другой стороны, медленно растущие слагаемые (такие, как 4n в оценке log 4
) будут пол­ностью поглощаться более быстрорастущими слагаемыми при достаточно больших n.
Поскольку нам известно, что все известные модели вычисления моделируют друг друга с точностью до поли­нома, то модели вычисления можно рассматривать чисто формально, т.е. модель вычисления можно представить в виде «черного ящика», выполняющего некоторые раз­ные операции. Условно ее обозначим через П.
5.2. Классы сложности
Классами сложности называются множества вычис­лительных задач почти всюду одинаковых по сложности вычисления.
В узком смысле классы сложности — это множество предикатов (функций, получающих на вход слово и воз­вращающих ответ 0 или 1), использующих для вычисле­ния примерно одинаковое количество ресурсов.
— 171 —
Глава 5. ВВЕДЕНИЕ В ТЕОРИЮ СЛОЖНОСТИ АЛГОРИТМОВ
( )
Ry
( )
( )
( )
( ) ( )
( )
( )
{ }
M
: M: (M f) t DTIMEtn f n Otn=∃ ∧=
( ) ( )
( )
( )
M
Классом сложности Q называется множество предика­тов ния
ния П. Определяются два основных класса задач распоз­навания: Р — это интуитивное множество задач, разреши­мых за реальное (полиномиальное) время на машине П, и NP — полиномиально проверяемые задачи на машине П. Отметим, что чаще всего в качестве машины П использует­ся в первом случае детерминированная машина Тьюринга и в последнем случае — недетерминированная машина Тьюринга.
нерешенных проблем: как соотносятся множества Р и NР?
ный класс связанно с тезисом теории сложности: реально выполняемые алгоритмы отождествляются с полиноми­альными алгоритмами. Именно этот тезис и дает возмож­ность применять теорию NР-полноты в практическом про­граммировании.
так: фиксируется множество всех алгоритмов определен­ной формы (может быть весьма разнообразной и не обяза­тельно соответствовать «реальным» вычислениям) и удов­летворяющих тем или иным сложностным ограничениям (затраты времени, памяти и др.). После этого в рассматри­ваемый класс зачисляются все алгоритмические задачи для которых существует хотя бы один алгоритм из этого множества.
рые нас устраивают, и назовем класс всех функций, вычис­лимых такими машинами, классом сложности.
вычислимых на П и использующих для вычисле­Ofn ресурса, где n — длина слова x. Далее мы рассматриваем в качестве модели вычисле-
Возникает одна из самых знаменитых современных
Выделение полиномиальных алгоритмов в специаль-
Другими словами, классы сложности определяются
По-другому рассмотрим множество всех машин, кото-
вычисляет
— 172 —
5.2. Классы сложности

tn
П
( )
( )
Это одно из центральных определений в теории слож­ности. Буква D означает детерминированные алгоритмы (бывают и другие), ТIМЕ означает ровно то, о чем вы по­думали. Если у нас есть произвольная функция t(n) от на­турального аргумента, то мы образуем класс сложности, состоящий из таких функции, для которых существует вычисляющая f машина П, такая что ходной функцией t(n) с точностью до мультипликативной кон станты.
Приведенная выше теорема об ускорение справедли­ва только для не которых специальных функций. Но если мы хотим достичь ускорения, скажем, в 10 раз, то это мож­но сделать с любой функцией — например, путем увеличе­ния количества машинных команд. Именно поэтому в пра­вой части определения стоит О — большое.
Теперь определим один из самых важных сложност-
ных классов
P DTIME n
=
0kk
≥
Класс Р — это те функции, которые можно вычислить
на наших ма шинах, и время их вычисления растет полино-
миально с ростом длины входа. Он очень удобен и с прак­тической, и с теоретической точки зрения. С практической точки зрения, это достаточно хорошая аппроксимация класса тех функций, которые подаются вычислению за ре­альное время на реальных компьютерах. С математиче­ской точки зрения, это класс бесконечно удобен тем, что он замкнут относительно суперпозиции.
Бывают аналогичные классы задач, которые можно
распознать за экспоненциальное время
EXPTIME DTIME
Теорема (Фишер-Рабин). Алгебра Тарского не при-
надлежит к классу Р. Время работы любого разрешающего
=
k
0
≥
2
ограничена ис-
k
n
и др.
— 173 —
Глава 5. ВВЕДЕНИЕ В ТЕОРИЮ СЛОЖНОСТИ АЛГОРИТМОВ
2
ε
+⋅ ≤
2
( )
( )
12 1 2 1 2
, ,..., ... , ... , 1,2,...,
n m i i i ik
i
fx x x D D D D l l l i m= ∧ ∧∧ = ∨∨∨ =
( )
( )
( )
( )
{ }
xx x
( )
2
( )
( )
( )
′
V
′
( )
алгоритма для алгебры Тарского не меньше, чем
nε
, где
— некоторая константа.
Алгебра Тарского: рассматривается множество всех фор-
мул исчисления предикатов в сигнатуре 0, 1, , ,
, но-
сителем которой является множество действительных чисел.
Примечание. Какой бы алгоритм мы ни придумали
для разрешения алгебры Тарского, он имеет сложность не меньшую чем
nε
.
На практике возникают масса задач, для которых ха-
рактерно следующее:
• Все они решаются методом (алгоритмом) перебора;
• Если кто-нибудь даст решение этих задач, то прове­рять решение следует по мощности полиномиального алго­ритма.
Пример 1. Рассмотрим КНФ. Пусть
i
Требуется проверить, является ли
.
, ,...,
fx x x вы-
12
n
полнимой?
Из курса математической логики нам известно, что булева формула ет хотя бы один набор значения менных
, ,...,
12
, ,...,
fx x x выполнима, если существу-
12
такие, что
n
fx x x = .
n
00 0
, ,..., 1
12
n
00 0
, ,..., 0,1
xx x ∈ пере-
12
n
Поскольку мы мерим сложность алгоритма по само­му плохому случаю, то сложность алгоритма имеет поря-
n
док
tnO= .
, т.е. временная сложность данного алгоритма равна
n
M
2
Пример 2. Задача о клике. Кликой графа G называют подмножество из
соединены ребром из
V VG
⊆ такое, что любые две вершины
EG .
— 174 —
5.2. Классы сложности
( )
! !
( )
( )
dd d
ss s
dd d
vv v
UU
′
⊆
( ) ( )
suB vuK
′′
∈∈
≤≥
∑∑
Задача заключается в следующем: по заданному графу G
и положительному целому числу
k VG≤ определить,
имеется ли в графе G клика мощности, не менее k .
Эффективного алгоритма для поиска клики заданно­го размера на данный момент не найдено. Полный перебор всех возможных подграфов размера k с проверкой того, яв­ляется ли хотя бы один из них полным, — неэффективен, поскольку полное число таких подграфов в графе с v вер­шинами равно биномиальному коэффициенту
!
k
C
v
v
=
k vk
( )
.
−
Пример 3. Задача о рюкзаке. Условие: задано конеч- ное множество U, размер
su Z+∈ и стоимость
vu Z+∈ .
На формальном языке: пусть B — величина вместимо­сти рюкзака, ветственно, размер предметов
, ,...,
12
— предметы;
n
, ,...,
12
, ,...,
12
и
n
n
, ,...,
12
— соот-
—
n
степень полезности предметов.
Вопрос. Существует, ли такое подмножество
,
uU uU
.
, ov
Очевидно, что задача о рюкзаке не решается в реаль­ное время. (Код программы смотрите в Приложении 4.)
Пример 4. Задача коммивояжёра — одна из самых известных задач комбинаторной оптимизации, заключа­ющаяся в отыскании самого выгодного маршрута, про­ходящего через указанные города по одному разу с после­дующим возвратом в исходный город. В условиях задачи указываются критерии выгодности маршрута (кратчай­ший, самый дешёвый, совокупный критерий и т. п.) и со­ответствующие матрицы расстояний, стоимости и т. п. Как правило, указывается, что маршрут должен проходить че­рез каждый город только один раз — в таком случае выбор осуществляется среди гамильтоновых циклов. (Код про­граммы смотрите в Приложении 3.)
— 175 —
Глава 5. ВВЕДЕНИЕ В ТЕОРИЮ СЛОЖНОСТИ АЛГОРИТМОВ
D
Γ
Y
()
YD
ΓΓ
I
Γ
Подобные задачи часто возникают в экономике, при-
кладной математике, криптографии.
5.3. Введение в теории NP-полноты
Рассматриваем язык предикатов. Относительно этого языка введем задачу распознавания и показываем, что хо­рошо известные нами задачи, например, из курса дискрет­ной математики, легко к ним сводятся.
Определяем два основных класса задач распознава­ния: Р — множество задач, для решения которых суще­ствует полиномиальные алгоритмы, и NP — множество задач, для решения которых существует полиномиально проверяемые алгоритмы.
Мы вводим классы Р и NР на языке предикатов. Однако отметим, что эти классы инвариантны относи­тельно других рассмотренных нами моделей вычисле­ний (и вообще относительно любой «разумной» модели вычислений). Это исключительно важно в теории NР­полноты.
Для удобства изложения теория NP-полных задач обычно строятся для задач распознавания свойств. Такие задачи имеют только два возможных решения — «да» или «нет». Иначе говоря, задача распознавания Г состоит из двух множеств:
— множество всех возможных индивидуальных
задач;
— множество индивидуальных задач с ответом «да»
Γ
Как мы уже отмечали ранее, Г — это массовая задача, которая содержит несколько параметров, конкретные зна­чения которых неопределенны, а задача, полученная из массовой задачи Г, когда всем пара­метрам задачи Г присвоены конкретные значения.
∈
.
— индивидуальная
— 176 —
5.3. Введение в теории NP-полноты
D
Y
Γ
D
Y
Γ
{ }
12
, ,...,
n
C cc c=
( )
cc C∈
BN
{ }
kk k
11
, ,?
+≤
Стандартная форма описания задач, которую мы бу-
дем использовать, состоит из двух частей:
1) описание условия задачи в терминах различных
компонент-множеств, графов, функций, чисел и т.д.
2) в терминах условия формируется вопрос, предпола-
гающий один из двух ответов — «да» или «нет».
Это описание следующим образом определяет мно-
жества
тогда и только тогда, когда она может быть получена
Γ
Γ
и
. Индивидуальная задача принадлежит
из стандартной формы описания подстановкой конкретных значений во все компоненты условия. Индивидуальная за­дача принадлежит
тогда и только тогда, когда ответом
на вопрос задачи будет ответ «да».
Пример 1. Сформулируем задачу распознавания, соот-
ветствующую известной из курса дискретной математики задаче о коммивояжере.
Условие. Заданы: конечное множество
городов, расстояние
,
ij
и граница
,
dc c N
∈ .
∈ для каждой пары городов
ij
+
+
—
Вопрос. Существует ли «маршрут», проходящий через
все города из ,C длина которого не превосходит B?
Другими словами, существует, ли последовательность
, ,...,
cc c элементов C такая, что
12
n
1
n
−
dc c dc c B
( ) ( )
∑
kk k k
ii n
1
i
=
+
Читатель знаком с задачей коммивояжера, но в опти­мизационной формулировке (найти «маршрут» минималь­ной длины). Нетрудно показать, как оптимизационная за­дача сводится к задаче распознавания.
Отметим важный момент. Так как значение целевой функции легко оценить, то задача распознавания не может быть сложнее соответствующей задачи оптимизации. Т.е., если для задачи о коммивояжере можно за какое-то время
— 177 —
Глава 5. ВВЕДЕНИЕ В ТЕОРИЮ СЛОЖНОСТИ АЛГОРИТМОВ
∑
[ ]
Le
[ ]
Le
найти маршрут минимальной длины, то совершенно ясно, как практически за это то же время решить соответствую­щую задачу распознавания: найти маршрут минимальной длины, вычислить его длину, и сравнить ее с заданной гра­ницей B.
Установим теперь соответствие между задачами рас­познавания и множеством предикатов с помощью схем ко­дирования, которые обычно применяются для представле­ния индивидуальной задачи при ее решении на компьютере.
Схема кодирования е задачи Г описывает каждую ин­дивидуальную задачу из Г подходящим словом в некото­ром фиксированном алфавите ∑.
Таким образом, задача Г и схема кодирования е задачи Г разбивают слова из
1) слова, не являющиеся кодами индивидуальных за-
дач из Г;
2) слова, являющиеся кодами индивидуальных задач
из Г с отрицательным ответом на вопрос;
3) слова, являющиеся кодами индивидуальных задач
из Г с положительным ответом на вопрос.
Третий класс слов как раз и есть тот язык, который ставится в соответствие задаче Г при кодировании е и обо­значается через
При применении формальной теории NР-полноты к задачам распознавания будем говорить, что некоторый результат имеет место для задачи Г при схеме кодирования е, если этот результат имеет место для языка
Обычно схему кодирования считают «разумной», если она:
1) достаточно «сжатая» — то есть при кодировании индивидуальной задачи сохраняется ее естественная кра­ткость;
2) допускает декодирование — то есть по данной компоненте условия задачи можно указать алгоритм
,
Γ .
*
на три класса:
,
Γ .
— 178 —
5.3. Введение в теории NP-полноты
12
pp
ID∈
[ ]
( )
[ ]
( )
12
length I p x x p length I≤≤
[ ]
( )
( )
{ }
lengthI m B dcc cc C

=++ ∈

yn
qq
с полиномиальным временем работы, который из любого заданного кода индивидуальной задачи позволяет извлечь описание этой компоненты.
Отметим, что если ограничиться только «разумными схемами кодирования», то наши результаты не будут зави­сеть от способа кодирования. В этом случае теряется связь с важнейшим формальным параметром «длина входа». Поэтому необходим и некоторый параметр, через который можно выразить временную сложность. Будем считать, что с каждой задачей распознавания связана не зависящая от схемы кодирования функция :length D N «полиномиально эквивалентна» длине кода индивидуаль­ной задачи, получаемой при любой разумной схеме коди­рования.
Полиномиальная эквивалентность понимается в следующем смысле: для любой разумной схемы кодирова­ния е задачи Г существуют два полинома если кодировании е, то
x — длина слова x.
Hапример, в задаче коммивояжер можно положить
и слово х есть код индивидуальной задачи I при
и
+
→ , которая
Γ
и
такие, что
, где
[ ] [ ]
Так как любые две разумные схемы кодирования за­дачи Г дают полиномиально эквивалентные длины вхо­дов, то диапазон для выбора функции length очень широк, а получаемые результаты будут верны для любой функции length, удовлетворяющей сформированным выше услови­ям.
Всякая детерминированная вычислительная мо­дель П имеет два заключительных состояния да, n — нет).
Будем говорить, что детерминированная вычисли­тельная модель П (ДВМ П), имеющая входной алфавит
log max log , | ,
22
— 179 —
ij ij
и
.
(y —
Глава 5. ВВЕДЕНИЕ В ТЕОРИЮ СЛОЖНОСТИ АЛГОРИТМОВ
∑
L

Lx
e

LL
x
( )
nN N
++

*
, ,
max
t
xxn




существует такое слово
П что вычисление машины П на входе x
требует времени m
nm
 


nN
( ) ( )
t
PL


 
существует полиномиальная ДВМ П,
e
[ ]
LePΓ∈
, принимает *x∈∑, если будучи примененной к вхо-
ду x, она оказывается в состояние yq .
Язык
щим условием
Соответствия между «распознанием» языков и «реше-
нием» задач определяется следующим образом.
Будем говорить, что ДВМ П решает задачу распоз­навания Г при кодировании на всех словах, составленных из букв входного алфавита, и
Время, требуемое ДВМ П для вычисления при входе
, есть число шагов, выполняемых до момента остановки.
Если ДВМ П останавливается на входах x∈ ∑*, то вре­менной сложностью этой машины П называется функция П
= →
распознаваемый ДВМ П, задается следую-
П
*
|
П
.
,
eПГ
,
П принимает
, если П останавливается
x
.
ДВМ П называется полиноминальной, если существу­ет такой полином p, что для всех
Класс задач P определяется так:
Будем говорить, что задача распознавания Г принад­лежит классу Р при кодировании существует полиноминальное ДВМ П, которое решает за­дачу Г при кодировании e.
Учитывая выше сказанное, будем говорить, что задача распознавания Г принадлежит классу P.
для которых
— 180 —
+
∈ П
, если
n pn≤
,
LL
, то есть
.
t
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]