Теория алгоритмов в задачах информационной безопасности конспект лекций. Учебное пособие
.pdfa j1a j2 ...a jk α a j0 αa j1a j2 ...a jk αa j0 ...
(по 6)
a j2 a j3 ...a jk αa j1αa j0 .
Теперь, повторяя этот процесс, получим:
αa j |
k |
αa j |
k −1 |
...αa j |
αa j |
0 |
|
ααa j |
αa j |
k |
|
...αa j |
αa j |
|
||||||||||
|
|
|
|
|
1 |
|
(по 6) |
|
k |
|
|
−1 |
|
1 |
|
0 |
||||||||
|
βa j |
k |
αa j |
|
...αa j |
αa j |
|
|
a j |
βαa j |
|
...αa j αa j |
|
|
||||||||||
(по 4) |
|
|
|
|
k −1 |
1 |
0 |
(по 2) |
k |
|
|
k −1 |
|
|
|
1 |
|
0 (по 3) |
||||||
a j |
|
βa j |
k −1 |
|
...αa j |
αa j |
|
|
... |
|
|
a j |
k |
a j |
k −1 |
...a j . |
||||||||
|
|
k |
|
|
|
1 |
|
0 |
|
(по 2,3,4) |
|
|
|
|
|
0 |
||||||||
5.4. Принцип нормализации
Для нормальных алгоритмов разработана техника программирования, позволяющая осуществлять операции композиции алгоритмов, реализовывать операторы «если Ф, то выполнить F1, иначе F2», «пока Ф, выполнять F1, иначе F2». Следовательно, класс функций М достаточно широк. Поскольку существует много конкретных нормальных алгоритмов и описана соответствующая техника программирования, А.А. Марковым был выдвинут принцип нормализации, который заключается в том, что все алгоритмы исчерпываются нормальными алгоритмами, или, что то же самое, всякий алгоритм нормализуем. Принятие данного принципа позволяет истолковывать утверждения о несуществовании нормальных алгоритмов для решения конкретных задач как утверждения о несуществовании алгоритмов вообще. Данный принцип эквивалентен тезисам Черча и Тьюринга.
Доказано, что класс функций М, вычислимых по Маркову, совпадает с классом функций Т, вычислимых по Тьюрингу, и, следовательно, с классом частично рекурсивных функций Ч и с классом функций Е, вычислимых на МПД.
51
Лекция 6. Алгоритмически неразрешимые проблемы
Лекция посвящена вопросам алгоритмической разрешимости задач. Дается понятие массовой проблемы и индивидуальной задачи, определяется их алгоритмическая разрешимость. Описывается метод сводимости, применяемый в доказательствах алгоритмической неразрешимости задач. Приводятся примеры алгоритмически неразрешимых проблем.
Ключевые слова: массовая проблема; индивидуальная задача; характеристическая функция массовой проблемы; алгоритмически разрешимая проблема; алгоритмически неразрешимая проблема; метод сводимости; самоприменимость машины Тьюринга; проблема останова.
Введение. Дадим определение алгоритмически разрешимым и неразрешимым проблемам, рассмотрим методы установления алгоритмической неразрешимости задач. Установим алгоритмическую неразрешимость ряда проблем, относящихся к теории алгоритмов.
6.1. Массовые проблемы и индивидуальные задачи
Появление вычислительной техники привело к тому, что все реже приходится решать отдельную конкретную задачу, а все больше – писать программы, рассчитанные на целый класс задач, получающихся одна из другой заменой ряда исходных данных. Поэтому имеет смысл говорить не об одной индивидуальной задаче π, а о так называемой массовой проблеме П, соответствующей множеству индивидуальных задач.
Определение. Массовая проблема – бесконечная серия индивидуальных задач.
Пример. Индивидуальной задачей является такая: обладает ли заданным свойством Q конкретная частично рекурсивная функция. Совокупность всех таких задач (для всех частично рекурсивных функций) образует массовую проблему распознавания свойства Q.
Определение. Формально массовая проблема П определяется следующим:
52
1)общим списком всех параметров задачи (свободных параметров, значения которых не заданы);
2)формулировкой свойств, которым должен удовлетворять ответ (решение задачи).
Определение. Индивидуальная задача π П получается из П,
если всем параметрам присвоить конкретные значения.
В дальнейшем ограничимся такими массовыми проблемами, в которых все индивидуальные задачи имеют двузначный ответ («ДА» или «НЕТ»).
6.2. Алгоритмическая разрешимость задач
Определение. Характеристическая функция f массовой про-
блемы П определяется соотношением
f (π)= 1 инд. задача |
π П имеет |
ответ «ДА»; |
0 инд. задача |
π П имеет |
ответ «НЕТ». |
Определение. Массовая проблема П называется алгоритмиче-
ски разрешимой, если соответствующая ей характеристическая функция является вычислимой; в противном случае массовая про-
блема называется алгоритмически неразрешимой.
Решая конкретную массовую проблему, следует считаться с возможностью, что она может оказаться алгоритмически неразрешимой, поэтому необходимо иметь представление о технике доказательства неразрешимости. Основной метод, применяемый в до-
казательствах алгоритмической неразрешимости, базируется на следующем рассуждении. Пусть имеем две массовые проблемы П1 и П2 и алгоритм А, который по всякой индивидуальной задаче π1 П1 строит индивидуальную задачу π2 П2 такую, что выпол-
нено: π2 имеет ответ «ДА» тогда и только тогда, когда π1 имеет
ответ «ДА». В этом случае говорят, что проблема П1 сводится к проблеме П2. Если проблема П1 неразрешима, то проблема П2 также неразрешима. Действительно, пусть это не так, и проблема П2 разрешима. Тогда можно построить разрешающий алгоритм для проблемы П1. Берем произвольную индивидуальную задачу π1 П1. Имея алгоритм А, строим индивидуальную задачу
53
π 2 = A(π1). Теперь применяем к задаче π 2 существующий по
предположению разрешающий алгоритм для проблемы П2. Если задача π 2 имеет ответ «ДА», то для задачи π1 полагаем ответ
«НЕТ». Поскольку по условию проблема П1 неразрешима, то получим противоречие. Значит, проблема П2 неразрешима.
Определение. Данное рассуждение называется методом сводимости, и его применение возможно, если уже имеется запас проблем, алгоритмическая неразрешимость которых уже установлена.
6.3. Проблема самоприменимости машин Тьюринга
Рассмотрим так называемую проблему самоприменимости машин Тьюринга. Даны машины Тьюринга, внешние алфавиты которых содержат символы «0» и «1», могут содержать и другие символы. Для каждой машины Тьюринга Т построим Код(Т), который является (0,1)-словом, и запустим машину Т в начальной конфигурации q1Код(Т). Если машина Т останавливается, т.е. попадает в заключительное состояние, через конечное число шагов, то она называется самоприменимой, в противном случае – несамоприменимой. Заметим, что имеются как самоприменимые, так и несамоприменимые машины Тьюринга. Например, несамоприменимой будет машина Т1, у которой все команды имеют вид qi aj → qi aj E, т.е. в правых частях команд нет заключительного состояния. Самоприменимой будет машина Т1, у которой все команды имеют вид qi aj → q0 aj E, т.е. в правых частях всех команд имеется заключительное состояние. Проблема самоприменимости состоит в том, чтобы по любой машине Тьюринга Т определить, является ли она самоприменимой или нет. Пусть машина Тьюринга М решает проблему самоприменимости, если для любой машины Т начальную конфигурацию q1Код(Т) она переводит в q01, если машина Т самоприменима, и в q00 – если машина Т несамоприменима.
Теорема. Не существует машины Тьюринга М, решающей проблему самоприменимости, т.е. проблема самоприменимости алгоритмически неразрешима.
Доказательство. Предположим противное: пусть существует машина Тьюринга М, решающая проблему самоприместимости.
54
Построим новую машину М0, добавив новое состояние q0′ и объ-
явив его заключительным, а также добавив новые команды для состояния q0, которое было заключительным в М:
q01 → q01E; |
(6.1) |
|
q00 → q′ |
0E. |
(6.2) |
0 |
|
|
Рассмотрим теперь работу машины М0. Пусть Т – произвольная машина. Если Т – самоприменима, то начальная конфигурация q1Код(Т) перейдет с помощью команд машины М0 через конечное число шагов в конфигурацию q01, далее применяется команда (6.1), и машина М0 никогда не остановится. Если Т – несамоприменима, то начальная конфигурация q1Код(Т) перейдет с помощью команд машины М через конечное число шагов в конфигурацию q00, далее применяется команда (6.2), и машина М0 остановится. Значит, машина М0 применима к кодам самоприменимых машин Т и не применима к кодам самоприменимых машин Т. Теперь рассмотрим Код(М0) и применим машину М0 к начальной конфигурации q1Код(М0). Сама машина М0 является либо самоприменимой, либо несамоприменимой. Если М0 самоприменима, то, по доказанному, она никогда не остановится, начав с q1Код(М0), и потому она несамоприменима. Если М0 несамоприменима, то, по доказанному, она останавливается через конечное число шагов, начав с q1Код(М0), и потому она самоприменима. Получили противоречие, которое является следствием допущения существования машины М0, решающей проблему самоприменимости, что и требовалось доказать.
Приведем еще один пример неразрешимой проблемы. Проблемой останова называют проблему, заключающуюся в том, чтобы по любой машине Тьюринга Т и слову Р в ее внешнем алфавите узнать, применима ли Т к начальной конфигурации q1Р.
Проблема останова алгоритмически неразрешима, так как если бы она была разрешимой, то, взяв в качестве Р слово Код(Т), мы получили бы разрешимость проблемы самоприменимости.
6.4. Примеры неразрешимых проблем
Выявлению разрешимых и неразрешимых задач в различных разделах математики посвящено много исследований. Приведем
55
без доказательства примеры некоторых неразрешимых проблем, которые отличаются простотой формулировки и фундаментальностью.
1. Проблема распознавания истинности формул. Формулы строятся из переменных с помощью арифметических действий (сложения и умножения), логических операций (логических связок ( и ) и кванторов) и знака равенства. Проблема состоит в том, чтобы найти алгоритм, который по любой такой формуле определяет, истинна она или нет на натуральном ряду. Неразрешимость этой проблемы установил Гедель в 1931 г.
2. Проблема сочетаемости Поста. Конечное множество V пар слов в некотором алфавите называется сочетаемым, если для некоторых пар (A1, B1), …, (As, Bs) из V выполнено равенство A1…As = B1…Bs. Нужно найти алгоритм, который по всякому множеству V пар слов узнает, сочетаемо оно или нет. Неразрешимость данной проблемы установил Пост в 1946 г.
3. Десятая проблема Гильберта формулируется следующим образом. Пусть задано диофантово уравнение (т.е. уравнение вида p(x1,…, xn) = 0, где р – многочлен) с произвольными неизвестными и целыми или рациональными коэффициентами. Указать способ, при помощи которого возможно после конечного числа операций установить, разрешимо ли уравнение в целых или рациональных числах. Неразрешимость 10-й проблемы Гильберта установлена Матиясевичем в 1970 г.
56
Лекция 7. Характеристики сложности вычислений
В настоящей лекции описываются способы оценки ресурсов, затраченных на решение тех или иных задач, позволяющие говорить о практической реализуемости алгоритмов. Дается понятие временной и емкостной сложности, приводится их взаимосвязь. Описываются классы сложности P и NP, исследуется полиномиальная сводимость задач.
Ключевые слова: временная сложность; емкостная сложность; активная зона машины Тьюринга; размер задачи; класс задач P; класс задач NP; недетерминированная машина Тьюринга; NP-полные задачи; NP-трудные задачи.
Введение. В общей теории алгоритмов изучается лишь принципиальная возможность алгоритмического решения задачи. При рассмотрении конкретных задач не обращается внимание на ресурсы времени и памяти для соответствующих им разрешающих алгоритмов. Однако нетрудно понять, что принципиальная возможность алгоритмического решения задачи еще не означает, что оно может быть практически получено. Поэтому возникает потребность уточнить понятие алгоритмической разрешимости, введя характеристики сложности алгоритмов, позволяющие судить об их практической реализуемости. Ранее было установлено, что различные алгоритмические модели приводят к одному и тому же классу алгоритмически вычислимых функций. В то же время ясно, что выбор алгоритмической модели, реализующей алгоритмы, существенно влияет на сложность вычислений. Утверждения о трудоемкости вычислений, вообще говоря, не сохраняются при изменении алгоритмической модели. Однако имеется ряд фактов, которые не зависят от вычислительной модели и относятся к так называемой машинно-независимой теории сложности.
7.1. Временная и емкостная сложность
Введем необходимые определения, отправляясь от машины Тьюринга в качестве модели вычислительного устройства.
57
Определение. Пусть машина Тьюринга Т вычисляет словарную функцию f (x). Определим функцию tT (x), равную числу шагов машины Т, выполненному при вычислении f(x), если f(x) определено. Если f (x) не определено, то значение tT (x) считается неопределенным. Функция tT (x) называется временной сложностью.
Определение. Активной зоной при работе машины Тьюринга Т на слове х называется множество всех ячеек ленты, которые содержат непустые символы либо посещались в процессе вычисления f (x) головкой машины Т.
Определение. Определим функцию sT (x), равную длине активной зоны при работе машины Т на слове х, если f (x) определено. Если f (x) не определено, то значение sT (x) считается неопределен-
ным. Функция sT (x) называется емкостной (ленточной) сложностью.
Теорема. Об оценке сложностей. Пусть машина Тьюринга Т имеет внешний и внутренний алфавиты мощности k и r соответственно. Тогда для функций сложности tT (x) и sT (x) справедливы следующие оценки:
sT (x) ≤ |x| + tT (x), tT (x) ≤ r (sT (x))2 k sT (x).
Доказательство. В начальный момент на ленте записано слово х длиной |x|. На каждом шаге активной становится не более одной новой ячейки, поэтому sT (x) ≤ |x| + tT (x). Найдем теперь число раз-
личных конфигураций K = a(1)...a(i−1)q j a(i)...a(s′), s ≤ s′ с активной зоной s′, не превосходящей фиксированной величины s. Имеется k s′ ≤ k s вариантов записи на ленте, r s′ вариантов выбора поло-
жения головки и s вариантов для значения длины s′ конфигурации К. Таким образом, число рассматриваемых конфигураций не превосходит rs2ks. Далее, если в процессе работы машины встретятся две одинаковые конфигурации, то машина зациклится, поскольку конфигурация однозначно определяет следующую за ней. Значит, если машина в процессе работы использует зону sT (x), то число ее шагов не превосходит числа различных конфигураций с зоной, не
58
превышающей |
sT (x). В итоге получаем неравенство tT (x) ≤ |
≤ r (sT (x))2 k sT (x) |
, что и требовалось доказать. |
Введенные функции sT(x) и tT(x) являются словарными. Удобно ввести для рассмотрения функции натурального аргумента, положив
t |
|
(n)= maxt |
|
(x), s |
(n)= maxs |
|
(x). |
|||||||
|
T |
|
x |
|
=n |
T |
T |
|
|
x |
|
=n |
T |
|
|
|
|
|
|
|
|||||||||
Они также называются функциями временной и емкостной сложности (по худшему случаю).
Определение. Поведение этих функций в пределе при увеличении размера задачи n называется асимптотической временной и емкостной сложностью соответственно. Для конкретных задач находятся, как правило, асимптотические функции сложности.
Заметим, что для введенных функций sT (x) и tT (x) выполнены следующие свойства:
1) D (tT (x))= D (fT (x)), где D(g (x)) – область определения
функции g(x), fT – функция, вычисляемая машиной Т;
2) предикат P(x, y), определенный соотношением P(x, y) = = (tT (x) = y), разрешим; аналогичное свойство справедливо для
функции sT (x).
Подобным образом можно определить функции сложности вычисления на машине МПД. Пусть Р – программа МПД. Обозначим
через tP (x) функцию, определенную условием tP (x)= = μt (P(x)↓ за t шагов), т.е. это есть число шагов вычисления на
начальной конфигурации х по программе Р, если вычисление заканчивается, и не определено в противном случае. Ясно, что для введенной функции tP (x) также выполнены условия 1 и 2.
Дадим теперь определение абстрактной меры вычисления (для одноместных) числовых функций. Пусть f0(x), f1(x),…, fn (x), … – нумерация одноместных частично рекурсивных функций.
Определение. Мерой вычислительной сложности называется любое семейство функций Ф0(x), Ф1(x),…, Фn(x),…, обладающее свойствами
D(Фi )= D(fi ), i 0 ;
59
предикат P(x, y) = (Фi (x) = y) разрешим i 0 .
Примером меры вычислительной сложности будет семейство функций Фi (x), i 0 , где Фi (x) – максимальное число, содер-
жащееся в регистре МПД за все время вычисления Рi (x), если Рi (x)↓, и не определено в противном случае.
7.2. Классы сложности P и NP и их взаимосвязь
Установление прямых нижних оценок сложности вычислений, о которых шла речь в предыдущем разделе, удается лишь в очень редких случаях. В связи с этим получил распространение подход, связанный с получением косвенных нижних оценок, т.е. установление таких утверждений, в которых существование эффективного разрешающего алгоритма для конкретной задачи влечет за собой существование эффективного алгоритма для многих общепризнанно трудных задач.
Необходимо формализовать соответствующий подход. Пусть П – некоторая массовая проблема, характеризуемая множеством параметров, I П – индивидуальная задача, в которой эти параметры фиксированы. Пусть с массовой проблемой П связана и зафиксирована схема кодирования α, которая ставит каждой индивидуальной задаче I П в соответствие слово α(I) в некотором алфавите А.
Определение. Под размером задачи I понимается длина слова
α(I).
|
|
Пусть |
|
Т – машина Тьюринга, решающая проблему П, и |
||||
t |
|
(n)= |
max |
t |
(I) – соответствующая функция временной слож- |
|||
|
T |
I , |
|
α(I) |
|
=n |
T |
|
|
|
|
|
|||||
ности (по худшему случаю).
Определение. Говорят, что машина Т решает проблему П за полиномиальное время, если tT (n)= O(p(n)) для некоторого поли-
нома р.
Определение. В противном случае говорят, что машина Т ре-
шает проблему П за экспоненциальное время.
60
