МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО АТОМНОЙ ЭНЕРГИИ МОСКОВСКИЙ ИНЖЕНЕРНО-...
26 downloads
293 Views
3MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ МИНИСТЕРСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ ПО АТОМНОЙ ЭНЕРГИИ МОСКОВСКИЙ ИНЖЕНЕРНО-ФИЗИЧЕСКИЙ ИНСТИТУТ (ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ)
Ф.К. Алиев, И.А. Юров
КУРС ЛЕКЦИЙ ПО МАТЕМАТИЧЕСКОЙ ЛОГИКЕ И ТЕОРИИ АЛГОРИТМОВ
Для студентов, специализирующихся в области защиты информации
Москва 2003
Аннотация к учебному пособию «Курс лекций по математической логики и теории алгоритмов для студентов специализирующихся в области защиты информации».
В настоящем учебном пособии изложены основы теории двоичных функций, исчисления предикатов, теории моделей, элементов теории алгоритмов и теории сложности вычислительных задач. Книга предназначена для студентов, специализирующихся в областях, связанных с информационной безопасностью, а также для преподавателей дискретной математики.
УДК ББК А Алиев Ф.К., Юров И.А. КУРС ЛЕКЦИЙ ПО МАТЕМАТИЧЕСКОЙ ЛОГИКЕ И ТЕОРИИ АЛГОРИТМОВ: Учебное пособие. М.: МИФИ, 2003. — с.
Рецензеты: С.В. Синицын, П.П. Порешин, Г.Н. Поваров Рекомендовано редсоветом МИФИ в качестве учебного пособия
Московский инженерно-физический институт (государственный университет), 2003
СОДЕРЖАНИЕ Введение.................................................................................................................... 5 Лекция 1. Основные способы задания двоичных функций ..................................... 6 1.1. Табличный способ задания...................................................................... 6 1.2. Геометрический способ задания ............................................................. 9 1.3. Задание двоичных функций формулами ............................................... 10 Лекция 2. Основные способы задания двоичных функций (продолжение) .......... 13 2.1. Нормальные формы двоичных функций ............................................... 13 2.2. Многочлен Жегалкина и действительный многочлен двоичной функции ................................................................................. 17 2.3. Теорема о разложении в ряд Фурье ....................................................... 20 Лекция 3. Полнота и замкнутость. Критерий полноты системы. Функционально полные системы. Замкнутые классы булевых функций .................................................... 23 3.1. Полнота и замкнутость. Функционально полные системы ................... 23 3.2. Замкнутые классы булевых функций .................................................... 25 3.3. Критерий полноты системы булевых функций ..................................... 28 Лекция 4. ............................................................................................................... 30 4.1. Псевдобулевы функции ......................................................................... 30 4.2. Функции k-значной логики.................................................................... 32 Лекция 5. ............................................................................................................... 36 5.1. Минимизация двоичных функций......................................................... 36 5.2. Геометрическая интерпретация минимизации ДНФ............................. 38 Лекция 6. ............................................................................................................... 40 6.1. Метод Квайна — Мак-Класки нахождения сокращенной ДНФ двоичной функции ................................................. 40 6.2. Метод нахождения тупиковых ДНФ ..................................................... 42 6.3. Метод Петрика нахождения тупиковых ДНФ....................................... 42 Лекция 7. Алгебраические системы....................................................................... 45 7.1. Алгебраические системы. Булевы алгебры ........................................... 45 7.2. Изоморфизм алгебраических систем..................................................... 48 Лекция 8. Алгебры высказываний. Предикаты и операции над ними................... 51 8.1. Основные логические операции и их свойства ..................................... 51 8.2. Предикаты и операции над ними .......................................................... 52 Лекция 9. Исчисление предикатов ......................................................................... 57 9.1. Общее понятие о логическом исчислении ............................................ 57 9.2. Формулы алгебры предикатов............................................................... 58 9.3. Равносильность формул. Основные отношения равносильности ......... 64 9.4. Использование равносильностей для упрощения формул .................... 69 9.5. Построение исчисления предикатов ..................................................... 71 9.6. Выводимость и доказуемость формул................................................... 73 9.7. Семантика исчисления предикатов ....................................................... 82 Лекция 10. Понятие о теории моделей .................................................................... 91 3
Лекция 11. Элементы теории алгоритмов ............................................................... 99 11.1. Основные требования к алгоритмам ................................................... 102 11.2. Машина Тьюринга и функции, вычислимые по Тьюрингу................. 106 11.3. Машины произвольного доступа и вычислимые функции ................. 116 Лекция 12. Частично рекурсивные функции и их вычислимость ......................... 123 Лекция 13. Нумерация наборов чисел и слов ........................................................ 133 Лекция 14. Нормальные алгоритмы ...................................................................... 139 Лекция 15. Нумерация алгоритмов ........................................................................ 144 15.1. Нумерация машин Тьюринга .................................................................. 144 15.2. Нумерация МПД-программ .................................................................... 146 15.3. Универсальные функции ........................................................................ 149 Лекция 16. Алгоритмически неразрешимые проблемы ........................................ 153 16.1. Алгоритмически неразрешимые проблемы ........................................ 153 16.2. Примечательные алгоритмически неразрешимые проблемы ............. 163 Лекция 17. Характеристики сложности вычислений............................................. 166 Лекция 18. Характеристика сложности вычислительных задач ............................ 173 18.1. Классы сложности P и NP и их взаимосвязь ....................................... 173 18.2. NP-полные задачи. Теорема Кука ....................................................... 181 18.3. Основные NP-полные задачи. Сильная NP-полнота ........................... 186 Список литературы ............................................................................................... 197
4
ВВЕДЕНИЕ Данное учебное пособие является основой для преподавания курса «Математическая логика и теория алгоритмов». Этот курс преподается студентам третьего курса факультета «Информационная безопасность» МИФИ в рамках специальности «Комплексное обеспечение информационной безопасности автоматизированных систем» (шифр 075500). В этом пособии отражены, по мнению авторов, теоретические результаты, лежащие в основе создания устройств криптографической защиты информации и оценки их стойкости. Так, например, один из подходов к анализу и обоснованию стойкости алгоритмов криптографической информации состоит в оценке вычислительной сложности соответствующих преобразований. Кроме того, большое число криптографических алгоритмов строятся на основе преобразований, которые реализованы с помощью булевых функций. Естественным образом возникает необходимость наличия у специалистов в области информационной безопасности навыков использования аппарата булевых функций и теории сложности вычисления для анализа криптографических преобразований. Теоретические основы для возможности реализации этих навыков приведены в данном учебном пособии. Излагаемый материал представлен в виде 18 лекций. Объем лекций различен. Это, прежде всего, связано с тем, что определенные разделы курса предназначены для самостоятельного изучения. Так, например, весьма обширно представлены результаты, связанные с реализацией вычислительных процедур на таких моделях вычислительных устройств, как машины Тьюринга и МПДмашины. При этом изложение этих результатов, в целом, носит описательный характер и в полной мере доступен для успешной самостоятельной работы студентов. В учебном пособии приведено большое количество результатов, связанных с изучением конкретных вычислительных задач, что также может быть изучено самостоятельно.
5
Лекция 1 ОСНОВНЫЕ СПОСОБЫ ЗАДАНИЯ ДВОИЧНЫХ ФУНКЦИЙ 1.1. Табличный способ задания Определение 1.1. Двоичной функцией от n (n 1) переменных называется функция f ( x1 ,..., xn ) , аргументы и значения которой выбираются из множеств F2 {0;1} , т.е. f: F2n F2 , где
F2n {a (a1 ,..., a n ) ai F2 , i (1,..., n)}. Замечание 1.2. Двоичные функции от n переменных также называют булевыми (булевскими) функциями от n переменных или n-местными булевыми функциями. На множестве F2n определим так называемый лексикографический порядок, т.е. для любого двоичного набора a (a1 ,..., a n ) F2n определим его номер N (a) a1 2 n1 a2 2 n2 ... an1 21 an 2 0 .
Тогда двоичная функция однозначно может быть задана табл.1.1 (называемой таблицей истинности). Таблица 1.1 Номер набора 0 1 ...
x1 … xn-1 xn 0 ... 0 0 0 ... 0 1 ...
f(x1, ..., xn) f(0, ..., 0,0) f(0, ..., 0,1) ...
2n – 2 2n – 1
1 ... 1 0 1 ... 1 1
f(1, ..., 1,0) f(1, ..., 1,1)
6
При указанной договоренности о расположении наборов из F2n функция однозначно определяется набором — столбцом значений. Отсюда непосредственно вытекает справедливость следующего утверждения. Утверждение 1.3. Число двоичных функций от n переменных n
равно 2 2 . Перечислим все двоичные функции от одной и двух переменных. Имеется четыре функции от одной переменной (табл.1.2). Таблица 1.2 x1 \ f 0 1 Условное обозначение
f0 0 0
f1 0 1
f2 1 0
f3 1 1
0
x1
x1
1
Функции f 0 и f 3 не зависят от значения переменной x1 и называются константными ( f 0 ( x1 ) 0 , f 3 ( x1 ) 1 ). Функция f1 ( x1 ) x1 называется тождественной функцией, а функция f 2 ( x1 ) x1 называется отрицанием. Функций от двух переменных — шестнадцать (табл.1.3). Таблица 1.3 x1 , x 2 \ f
f0
f1
f2
f3
f4
f5
f6
f7
00 01 10 11 Обозначение
0 0 0 0 0
0 0 0 1 x1x2
0 0 1 0
0 0 1 1 x1
0 1 0 0
0 1 0 1 x2
0 1 1 0 x1x2
0 1 1 1 x1x2
Продолжение табл.1.3 x1, x2\ f 00 01 10 11 Обозначение
f8 1 0 0 0 x1x2
f9 1 0 0 1 x1 ~ x2
f10 1 0 1 0 x2 7
f11 1 0 1 1
f12 1 1 0 0 x1
f13 1 1 0 1 x1 x2
f14 1 1 1 0 x1x2
f15 1 1 1 1 1
Важнейшими из них являются: f1 — конъюнкция (x1 x2, x1 & x2, x1 x2), f 6 — сложение по модулю 2 (x1 x2), f 7 — дизъюнкция (x1 x2), f 8 — функция Пирса (x1 x2), f13 — импликация (x1 x2), f14 — функция Шеффера (x1 | x2). Определение 1.4. Переменная xi, или i-я переменная двоичной функции f(x1, ..., xn) называется существенной переменной функции f (т.е. функция f существенно зависит от xi), если существует набор (a1, ..., ai-1, ai+1, ..., an) F2n1 , такой, что
f(a1, ..., ai-1, 0, ai+1, ..., an) f(a1, ..., ai-1, 1, ai+1, ..., an). В противном случае переменная xi называется несущественной (фиктивной) переменной функции f. Так, среди функций от двух переменных имеется ровно десять функций, существенно зависящих от всех своих переменных. Число двоичных функций от n переменных растет с увеличением n чрезвычайно быстро. В табл.1.4 приведена зависимость функций от своих переменных при n 8. Таблица 1.4 n 1 2 3 4 5 6
Число функций от n переменных 2 16 256 65536 4294967296 > 1.8 1019
7 8
> 3.4 10 > 1.1 1077 38
С табличным заданием функции непосредственно связан такой ее параметр, как вес. Определение 1.5. Множество двоичных наборов {(a1, ..., an) F2n | f(a1, ..., an) = 1}, на которых функция f принимает значение 1, называется областью истинности функции f. Мощность области истинности функции f называется весом функции f и обозначается || f ||. 8
Очевидно, что 0 || f || 2n, причем равенства достигаются лишь для функций-констант 0 и 1. Если || f || = 2n-1, то функция f называется равновероятной. Для двоичных функций используются и другие способы задания, приспособленного для рассматриваемой в каждом конкретном случае задачи, которые будут рассмотрены далее. 1.2. Геометрический способ задания Под геометрическим способом задания двоичной функции f(x1, ..., xn) понимается выделение тех вершин n-мерного двоичного куба, на наборах координат которых функция принимает единичное значение. На рис.1.1 приведены двоичные кубы размерностей n = 0, 1, 2, 3. x2
x3
01
11
001 011
101 111
000 010 0 (n = 0)
1
x1
00
(n = 1)
x1
10
x2
(n = 2)
110
100 x1
(n = 3)
Рис.1.1
Выделим среди множества вершин n-мерного куба те, на наборе координат которых функция принимает единичное значение. Например, функции, заданной табл.1.5 соответствует геометрическое задание, изображенное на рис.1.2. Таблица 1.5 x1 0 0 0 0 1 1 1 1
x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1 9
f 1 0 1 0 1 0 1 1
x3
010
001
101
000 011
110
111
111 000
010 x2
100 110
x1
100
Рис.1.2
Рис.1.3
Часто по геометрическому заданию функции строят граф связности вершин n-мерного куба, соответствующий данной функции. Для этого сначала отмечают те ребра, у которых оба конца выделены, т.е. соответствующие вершины лежат в области истинности. Затем все остальные ребра и вершины, не лежащие в области истинности, отбрасывают. Так функции, изображенной на рис.1.2, соответствует граф связанности, приведенный на рис.1.3. 1.3. Задание двоичных функций формулами Пусть имеется некоторый класс (т.е. множество) двоичных функций K. Он может быть как конечным, так и бесконечным. Обозначим через f1, f2, ..., входящие в него функции, и пусть X = {x1, x2, ...} — множество двоичных переменных. Дадим индуктивное определение формулы над классом K: символ переменной xi, xi X есть формула над K; если f — обозначение некоторой функции от m переменных из класса K и Ф1, ..., Фm — формулы над K, то запись Ф = f(Ф1, ..., Фm) есть формула над K. Таким образом, формулы — это записи, в которых используются символы переменных и функций из K. Если необходимо подчеркнуть, от каких переменных зависит формула Ф, то используют обозначение Ф(x1, ..., xn), где x1, ..., xn — все переменные, участвующие в задании формулы Ф. Установим теперь связь между формулами и двоичными функциями. Сначала заметим, что для произвольного набора значений 10
переменных, входящих в формулу, можно, используя индуктивный характер определения, вычислять ее значение на этом наборе. Действительно, если значение формул Ф1, ..., Фm, входящих в формулу Ф = f(Ф1, ..., Фm), уже подсчитаны и равны соответственно b1, ..., bm, bi F2, то значение формулы Ф равно значению функции f(b1, ..., bm). Поставим в соответствие каждой формуле Ф(x1, ..., xn) функцию fФ(x1, ..., xn), зависящую от тех же переменных, значения которой при всех значениях переменных совпадают со значениями формулы Ф(x1, ..., xn). Легко видеть, что одна и та же формула может быть использована для записи целого ряда функций. Например, формула x1 соответствует функциям x1 0 1 x1 0 0 1 1 x1 0 0 0 0 1 1 1 1
f1 0 1 f 0 0 1 1
x2 0 1 0 1 x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1
f 0 0 0 0 1 1 1 1
и т.д. Поэтому естественным оказывается следующее определение. Определение 1.6. Под функциями, реализуемыми формулой Ф понимается функция fФ, а также все функции, которые получаются из fФ удалением или добавлением несущественных переменных.
11
С другой стороны, одной функции может соответствовать множество различных формул. Например, рассматриваемые выше функции могут быть заданы любой из следующих формул: x1, x1 ( x1 x2 ) , x1 ( x1 x2 ) , x1 ( x2 x2 ) , ... . Чтобы учесть эту неоднозначность, введем понятие равносильности формул. Определение 1.7. Две формулы Ф1 и Ф2 называются равносильными (обозначается Ф1 = Ф2), если они реализуют одинаковые множества функций. Замечание 1.8. Заметим, что для проверки равносильности формул Ф1 и Ф2 достаточно добавить к функции f 1 те переменные, которые входят в Ф2, но не входят в формулу Ф1, а к функции f 2 добавить переменные из Ф1, которые не входят в формулу Ф2, а затем сравнить таблицы полученных функций. Приведем два свойства, облегчающих проверку равносильности формул. Для их формулировки нам потребуется понятие подформулы. Определение 1.9. Подформулой формулы Ф называется сама формула Ф; подформулой формулы f(Ф1, ..., Фm) называется она сама, а также все подформулы формул Ф1, ..., Фm. Свойство 1.10. Если Ф1 — подформула формулы Ф, и Ф1 равносильна Ф2, то подформула Ф, полученная из Ф путем замены Ф1 на Ф2 будет равносильна формуле Ф. Свойство 1.11. Если формулы Ф1 и Ф2 равносильны, то, подставив одновременно в них вместо некоторых переменных любые формулы, получим в результате также равносильные формулы.
12
Лекция 2 ОСНОВНЫЕ СПОСОБЫ ЗАДАНИЯ ДВОИЧНЫХ ФУНКЦИЙ (ПРОДОЛЖЕНИЕ) 2.1. Нормальные формы двоичных функций Всюду в этом параграфе рассматриваются формулы над классом
a
К х1 х2 , х1 х2 , х1 . Обозначим через хi i функцию a хi i
x , если i xi , если
ai 1; ai 0.
a
Очевидно, что хi i 1 тогда и только тогда, когда хi ai , ai {0,1} . Определение 2.1. Элементарной конъюнкцией называется форa
a
мула вида хi 1 ... xi k , где все переменные различны. Рангом эле1 k ментарной конъюнкции называется число входящих в неё переменных. Непосредственно из определения 2.1 получаем, что элементарa
a
ная конъюнкция хi 1 ... xi k принимает единичное значение в том 1 k и только том случае, когда хi ai , i 1, k . Этот факт запомним как свойство элементарных конъюнкций. Определение 2.2. Дизъюнктивной нормальной формой (ДНФ) a
a
называется формула вида хi 1 ... xi k , где дизъюнкция берется по 1 k некоторым наборам (i1 , ..., ik ),1 i1 ... ik n , и (a1 , ..., a k ) F2k ,
k {1, ..., n} . Обозначим через f (a1 , ..., ak , xk 1 , ..., xn ) функцию, полученную из функции f ( x1 , ..., xn ) фиксацией первых k переменных 13
значениями a1 , ..., ak F2 . Из следующей теоремы вытекает, что любую двоичную функцию можно задать с помощью ДНФ. Теорема 2.3 (о разложении функции). Пусть k такое, что 1 k n . Тогда двоичную функцию f ( x1 , ..., xn ) можно представить в виде: f ( x1 , ..., x n )
( a1 , ...,
a
a
ak )F2k
x1 1 ... x k k f (a1 , ..., a k , x k 1 , ..., x n ) . (2.1)
Доказательство. Покажем, что функция, стоящая в левой и правой частях равенства (2.1), принимает одинаковое значение при одинаковых значениях переменной. Пусть x1 b1 , ..., xn bn . Тогда в силу свойств элементарных конъюнкций значение функции из правой части равно: ( a1, ...,
ak )F2k
b
a
a
b1 1 ... bk k f (a1 , ..., a k , bk 1 , ..., bn ) =
b
= b11 ... bk k f (b1 , ..., bk , bk 1 , ..., bn ) f (b1 , ..., bn ) . Теорема доказана. Следствие 2.4. f ( x1 , ..., xn ) x1 f (0, x2 , ..., xn ) x1 f (1, x2 , ..., xn ) .
(2.2)
Доказательство. Следует из теоремы 2.3, если положить k 1. Следствие 2.5. f ( x1, ..., xn ) xi f ( x1, ..., xi 1, 0, xi 1, ..., xn ) xi f ( x1, ..., xi 1, 1, xi 1, ..., xn ) . (2.3)
Доказательство. Вытекает из следствия 2.4 при перенумерации переменных. Замечание 2.6. Разложение (2.2) называется разложением Шеннона, хотя формально ему не принадлежит. Следствие 2.7. f ( x1 , ..., x n )
( a1, ...,
a
an )F2n
x1 1 ... x nan f (a1 , ..., a n ) .
(2.4)
Доказательство. Следует из теоремы 2.3, если положить k n . 14
Замечание 2.8. В разложении (2.4) можно опустить все элементарные конъюнкции, которым соответствуют нулевые значения функций. Полученная в результате формула имеет вид: f ( x1 , ..., x n )
a
( a1 , ..., an )F2n f ( a ) 1
x1 1 ... x nan .
(2.5)
Определение 2.9. Равенство (2.5) называется совершенной ДНФ (СДНФ) функции f . Как построить СДНФ функции f ? СДНФ двоичной функции легко построить по ее табличному заданию. С этой целью для каждого набора аргументов (a1 , ..., a n ) , на котором функция принимает единичное значение, строится элементарная конъюнкция ранга n по правилу: a
(a1 , ..., a n ) x1 1 ... x nan .
(2.6)
Затем берется дизъюнкция всех построенных элементарных конъюнкций. Приведём пример. Пример 2.10. Пусть функция f задана табл.2.1. Таблица 2.1
Построим для неё СДНФ:
x1 x 2 x 3
001 x10 x20 x13 x1 x2 x3 ,
011 x10 x12 x13 x1 x2 x3 , 110 x11 x12 x30 x1 x2 x3 ,
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
f
0 1 0 1 0 0 1 1
111 x11 x12 x13 x1 x2 x3 .
Поэтому:
f ( x1 , x2 , x3 ) x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 . 15
Заметим, что СДНФ является частным случаем ДНФ. В ней все элементарные конъюнкции имеют ранг n . Отличительной особенностью СДНФ является то, что она однозначно определяется по функции f с точностью до перестановки конституент. Действительно, все элементарные конъюнкции в ней находятся во взаимно-однозначном соответствии с векторами (a1 , ..., a n ) из a
области истинности функции: x1 1 ... xnan (a1 , ..., a n ) . В отличие от СДНФ, ДНФ не однозначно соответствует функции. Так функция f ( x1 , x2 , x3 ) из предыдущего примера может быть записана в виде следующих ДНФ: x2 x2 x1 x2 x2 x1 x2 x1 x2 x1 x2 x2 x1 x2 x3 .
Аналогично ДНФ вводятся конъюктивные нормальные формы (КНФ). Они являются конъюнкциями элементарных дизъюнкций a
a
a
a
хi 1 ... xi k и имеют вид ( хi 1 ... xi k ) , где конъюнкция бе1
рется
1
k
по
некоторым
k
(i1 , ..., ik ), 1 i1 ... ik n ,
наборам
(a1 , ..., a k ) F2k , k {1, ..., n} . Как и в случае СДНФ можно показать, что функции f ( x1 , ..., xn ) соответствует однозначно определенная КНФ (называемая совершенная КНФ), в которой все элементарные дизъюнкции имеют ранг n . Её можно получить из СДНФ функции f : f ( x1 , ..., x n )
b
(b1 , ..., bn )F2n f ( b ) 1
b
x11 ... x nn с помо-
щью соотношений: x2 x1 x1 x2 , x2 x1 x1 x2 . Из свойств 1.10 и 1.11 равносильных формул имеем: f ( x1 , ..., xn ) f ( x1 , ..., xn )
(b1 , ..., bn )F2n f (b ) 0
x1b1 ... xnbn =
(b1 , ..., bn )F2n f (b ) 0
16
b
(b1 , ..., bn )F2n f ( b ) 1
x11 ... x nbn =
( x1b1 ... xnbn ) .
СКНФ функции f легко строится по её табличному значению. Для функции f ( x1 , x2 , x3 ) , заданной табл.2.1, получаем: 000 x11 x12 x13 x1 x2 x3 ,
001 x11 x12 x30 x1 x2 x3 ,
100 x10 x12 x13 x1 x2 x3 , 101 x10 x12 x30 x1 x2 x3 . Поэтому
f ( x1 , x2 , x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ) ( x1 x2 x3 ).
2.2. Многочлен Жегалкина и действительный многочлен двоичной функции Будем рассматривать формулы над классом
К х1 х2 , х1 х2 ,0,1 . Определение 2.11. Многочленом Жегалкина (приведенным многочленом) называется представление двоичной функции f ( x1 ,..., xn ) формулой вида: n
f ( x1 ,..., x n ) a0 ai xi i 1
aij xi {i , j},1i j n
x j ... a1... n x1 ... x n ,
где a0 , a1 , ..., an , a12 , ..., a1...n F2 . Теорема 2.12. Для каждой двоичной функции существует единственный многочлен Жегалкина. Доказательство. Покажем, что по таблице функции однозначно определяются коэффициенты a0 , a1 , ..., a1...n её многочлена Жегалкина. Воспользуемся методом неопределенных коэффициентов. 17
Будем последовательно вычислять значения искомого многочлена на наборе из одних нулей, затем на наборе с одной единицей, затем — с двумя, и т.д. В результате получим систему: f (0, 0, ..., 0, 0) a 0 ; f (1, 0, ..., 0, 0) a 0 a1 ; f (0, 1, ..., 0, 0) a a ; 0 2 . . . f (0, 0, ..., 0, 1) a 0 a n ; f (1, 1, ..., 0, 0) a 0 a1 a 2 a12 ; . . . n f (1, 1, ...,1, 1) a 0 a1 aij .... a1... n . i 1 {i , j}
Из первого уравнения находим a 0 , из второго a1 , …, из (n + + 1)-го — a n , из (n + 2)-го — a12 , …, из последнего — a1, ..., n . Теорема доказана. Определение 2.13. Конъюнкции xi1 ... xik , входящие в многочлен Жегалкина, называются одночленами. Степенью одночлена называется число входящих в него переменных (ранг конъюнкции). Степенью нелинейности (порядком) многочлена Жегалкина функции f (обозначается deg f ) называют максимальную из степеней входящих в него многочленов. Многочлен Жегалкина можно вычислять исходя из ДНФ или СДНФ функции f ( x1 ,. .., xn ) , выразив операции «дизъюнкция» и «отрицание» через операции «конъюнкция» и «сложение по модулю два»: x1 x2 x1 x2 x1 x2 ;
x1 x1 1.
Пример 2.14. f ( x1 , x2 , x3 ) x1 x3 x2 x3 ;
f ( x1 , x 2 , x3 ) x1 x3 x 2 x3 x1 x3 x 2 x3 x1 x3 x 2 x3 ( x1 1) x3 x 2 ( x3 1) 18
= x2 x3 x1 x3 x2 x3 . Двоичные функции можно также задавать многочленами, в которых используются операции сложения, вычитания и умножения действительных чисел. Так, непосредственно проверкой убеждаемся, что x1 x 2 x1 x 2 , x1 x 2 x1 x 2 x1 x 2 , x1 x 2 x1 x 2 2 x1 x 2 , x1 1 x1 . Поскольку каждую двоичную функцию можно задать своим многочленом Жегалкина, СДНФ или СКНФ, то, заменив все используемые в этих формулах операции на их выражения (по приведенным выше формулам) и, раскрыв затем скобки, получаем для всякой двоичной функции эквивалентную запись в виде некоторого действительного многочлена. Вместе с тем, можно заметить, что такая запись неоднозначна. Например, функцию x1 можно представить действительными многочленами вида: x1 1 x1 1 2 x1 x12 1 x12 1 3x12 214 ....
Перечисленные многочлены при x1 0 и x1 1 принимают значения 1 и 0 соответственно. Все многочлены в этом примере обладают той особенностью, что они содержат степени переменной x1 , в то же время для двоичных переменных очевидны равенства:
x1 x12 x13 ... Если отказаться от использования переменных в степенях выше первой, то неоднозначность представления двоичных функций можно исключить. Теорема 2.15. Любая двоичная функция f ( x1 ,..., xn ) однозначно представляется в виде следующего действительного многочлена: n
D f ( x1 ,..., x n ) a0 ai xi i 1
aij xi {i , j},1i j n 19
x j ... a1... n x1 ... x n ,
все коэффициенты которого являются целыми числами. Доказательство. Полностью аналогично тому, которое было приведено в теореме 2.12. Необходимо только заменить операцию « » на «+». Ниже, говоря «действительный многочлен», будем всюду иметь в виду определенный в теореме 2.15 многочлен D f ( x1 ,..., xn ) . 2.3. Теорема о разложении в ряд Фурье Сопоставим каждому двоичному вектору a (a1 ,..., a n ) F2n
a1 x1 ... an xn
линейную двоичную функцию ( a, x )), и определим функции: 1, e i(a, x) (1) (a, x) 1,
Например, векторам функции
(a, x) 0; (a, x) 1.
если если
a (0, ..., 0)
(сокращенно
и b (1, ...,1) соответствуют
e i(а, x) (1) 0 1
и e i(b, x) (1) x1... xn
соответственно. Всего имеется 2 n функций вида (1) (a, x) . Как показывает следующая лемма, они образуют ортогональную систему функций. Лемма 2.16. Для любых векторов a, b F2n справедливы равенства:
0,
если
a b;
если
a b.
n (1) (a, x) (1) (b, x) 2 n ,
xF2
Доказательство. Сначала заметим, что
20
0, если a 0; (1) k 2 , если a 0. xF2n Поскольку линейная функция (a, x) при a 0 принимает значение ( a, x )
0 ровно 2 n1 . Теперь
n (1) (a, x) (1) (b, x) n(1) (a, x)(b, x) n(1) (a, x)(b, x)
xF2
xF2
xF2
n(1) (ab, x) .
xF2
Отсюда и следует утверждение леммы. Теорема 2.17 (о разложении в ряд Фурье). Для всякой двоичной функции имеется единственное разложение вида:
f ( x)
nC af
(1) ( a, x) , где коэффициенты C af являются рацио-
aF2
нальными числами. При этом значения коэффициентов определяются равенствами С af
1 n
nf ( x) (1) (a, x) .
x xF2
Доказательство. Докажем сначала, что указанная сумма представляет функцию f (x) . Имеем:
21
nC af
1
n
(1) ( a, x )
aF2
2
aF2
f ( y ) (1) ( a, y ) (1) ( a, x ) n y
( a, y ) (a, x) f ( y ) ( 1 ) ( 1 ) n 2 n yF2n aF2 1
1 2
n
f ( x) 2 n f ( x),
поскольку в последней сумме будет только одно нулевое слагаемое при y = x. Покажем теперь, что коэффициенты С af однозначно определяются по функции f (x) . Предположим, существует другое разложе~ ~ ние f ( x) C af (1) ( a, x) . Тогда C af C af (1) ( a, x) 0 .
aF2n
aF2n
Домножив обе части этого равенства на (1) (b, x) для b F2n и просуммировав по x F2n полученные равенства, получаем: 0
~f f ( a, x) (b , x ) C C ( 1 ) n n a a (1) xF2 aF2
~ ~ C af C af (1) (a, x) (1) (b, x) C af C af 2 n.
aF2n
n
xF2
~f f Отсюда С b C b . Так как b — произвольный вектор из F2n , получаем требуемое утверждение. f Определение 2.18. Коэффициенты С a , a F2n , называются коэффициентами Фурье функции f (x) .
22
23
Лекция 3 ПОЛНОТА И ЗАМКНУТОСТЬ. КРИТЕРИЙ ПОЛНОТЫ СИСТЕМЫ. ФУНКЦИОНАЛЬНО ПОЛНЫЕ СИСТЕМЫ. ЗАМКНУТЫЕ КЛАССЫ БУЛЕВЫХ ФУНКЦИЙ 3.1. Полнота и замкнутость. Функционально полные системы Определение 3.1. Для произвольного класса системы двоичных функций К множество всех двоичных функций, представимых формулами, над К , называется замыканием класса (системы) функций К и обозначается через К . Имеют место следующие свойства замыкания. Свойство 3.2. К К . Свойство 3.3. К1 К 2 К1 К 2 . Свойство 3.4. К К . Обозначим через B2 (n) множество всех двоичных функций от n переменных, а через B2 множество всех двоичных функций (от произвольного числа переменных). Определение 3.5. Система функций К называется полной, если К B2 .
Утверждение 3.6. Система функций К 0 х1 х2 , х1 х2 , х1 является полной системой функций. Доказательство. Очевидно, что элементарная конъюнкция a
a
1
n
хi 1 ... xi n является формулой над К 0 . Отсюда следует, что
дизъюнкция любого числа элементарных конъюнкций является формулой над К 0 . Отсюда и из равенства (2.5) следует, что любая функция f B2 , представима над формулой К 0 . Следовательно, К 0 B2 .
Утверждение 3.7. Система функций К1 х1 х2 , х1 является полной системой функций. 24
Доказательство. Очевидно, что
К1 B2 ,
из равенства
x1 x2 x1 x2 следует, что К 0 К1 . Отсюда и из свойств 3.3 и 3.4 имеем: B2 К 0 К1 К1 , т.е. B2 К1 . Таким образом, показано, что B2 К1 и B2 К1 . Полученные включения означают, что К1 B2 .
Утверждение 3.8. Система функций К1 х1 х2 , х1 является полной системой функций. Доказательство. Очевидно, что К 2 B2 , из равенства
x1 x2 x1 x2 следует, что К1 К 2 . Отсюда и из свойств 3.3 и 3.4 имеем: B2 К1 К 2 К 2 , т.е. B2 К 2 . Таким образом, показано, что B2 К 2 и B2 [ К 2 ] . Полученные включения означают, что К 2 B2 . Утверждение 3.9. Система функций К 3 х1 | х2 является полной системой функций, где x1 | x2 — двоичная функция, называемая штрихом Шеффера, задается табл.3.1. Таблица 3.1 Доказательство. Очевидно, что К 3 B2 . Из равенств x1 x1 | x1 и x1 x2 ( x1 | x2 ) | ( x1 | x2 )
следует, что К1 К 3 . Далее доказательство текстуально аналогично доказательству утверждения 3.8 при подстановке К 3 вместо К 2 .
x1 x 2
x1 | x 2
0 1 0
1 1 1 0
1 1
Утверждение 3.10. Система функций К 4 x1 x2 , x1 x2 , 1, является полной системой функций. Доказательство. Очевидно, что К 4 B2 . Из равенства x1 x1 1 следует, что К1 К 4 . Далее доказательство текстуально аналогично доказательству утверждения 3.8 при подстановке К 4 вместо К 2 .
Утверждение 3.11. Система функций К 5 x1 x2 является полной системой функций, где x1 x2 — двоичная функция, называемая стрелкой Пирса, задается табл.3.2. 25
Доказательство. Очевидно, что К 5 B2 . Из равенств x1 x1 x1 и
Таблица 3.2 x1 x 2
x1 x 2
x1 x2 ( x1 x2 ) ( x1 x2 ) следует, что 0 1 К 2 К 5 . Далее доказательство текстуаль1 0 но аналогично доказательству утверждения 0 0 1 1 0 3.8 при подстановке К 2 вместо К1 и К 5 вместо К 2 . Определение 3.12. Каждая двоичная функция f ( x1 ,..., xn ) , образующая полную систему, называется шефферовой функцией. Пример 3.13. Функция f ( x1 , x2 ) x1 | x2 является шефферовой функцией. Это следует из утверждения 3.9. Пример 3.14. Функция f ( x1 , x2 ) x1 x2 является шефферовой функцией. Это следует из утверждения 3.11. Примеры шефферовых функций от большего числа переменных будут приведены ниже, после изложения критерия полноты системы двоичных функций. 3.2. Замкнутые классы булевых функций Определение 3.15. Класс булевых функций К называется замкнутым, если он совпадает со своим замыканием, т.е. К К . Замечание 3.16. Полное описание всех замкнутых классов было дано американским математиком Э. Постом. В частности, он доказал, что множество всех замкнутых классов булевых функций счетно и в каждом замкнутом классе К можно выделить конечную подсистему К , порождающую К , т.е. имеющую своим замыканием класс К , т.е. К К . Определение 3.17. Булева функция f ( x1 , ..., x n ) называется функцией, сохраняющей константу 0, если f (0, ..., 0) 0 . Класс всех булевых функцией, сохраняющих константу 0, обозначим Т 0 . Определение 3.18. Булева функция f ( x1 , ..., xn ) называется функцией, сохраняющей константу 1, если f (1, ...,1) 1 . 26
Класс всех булевых функцией, сохраняющих константу 1, обозначим Т1 . Определение 3.19. Булева функция f ( x1 , ..., xn ) называется линейной, если а1 , ..., а n F2 , такие, что
f ( x1 , ..., xn ) a1 x1 ... an xn . Класс всех булевых линейных функций обозначим через L . Определение 3.20. Булева функция f ( x1 , ..., xn ) называется аффинной функцией, если а1 , a2 , ..., аn , an1 F2 , такие, что f ( x1 , ..., xn ) a1 x1 ... an xn an1 . Обозначим через L1 класс всех булевых аффинных функций. Определение 3.21. Булева функция f ( x1 , ..., xn ) называется самодвойственной функцией, если f (a1 , ..., a n ) f (a1 , ..., a n ) а1 , ..., аn F2 .
(3.1)
Класс всех булевых самодвойственных функций обозначим через S. Далее определим понятие монотонной функции. Для этого нам необходимы некоторые дополнительные сведения. Изложим их. На множестве F2n (n 1) введем отношение , положив для наборов
a (а1 , ..., а n ) F2n и b (b1 , ..., bn ) F2n : a b a1 b1 , ..., an bn , где отношение на F2n понимается как неравенство на множестве чисел {0, 1}. Несложно доказать, то отношение рефлексивно, транзитивно и антисимметрично, т.е. является отношением частичного порядка. Определение 3.22. Булева функция f ( x1 , ..., xn ) называется монотонно возрастающей или монотонной, если для любых наборов
a, b F2n выполняется условие: a b f (a) f (b) . Замечание 3.23. Нульместные функции 0 и 1 также естественно считать монотонными. 27
Класс всех булевых монотонных функций обозначим через М. Утверждение 3.24. Классы булевых функций T0 , T1 , L, L1 , S и M являются замкнутыми классами булевых функций. Для доказательства данного утверждения нам необходимо определить понятие ранга формулы А над классом К . Определение 3.25. Число всех символов функций из К , встречающихся в формуле А над К , называется рангом формулы А и обозначается через r (А) . Замечание 3.26. Понятие ранга формулы А над классом К не следует путать с понятием ранга элементарной конъюнкции из определения 2.1. Доказательство утверждения 3.24. Замкнутость перечисленных в утверждении 3.24 шести классов функций доказывается по одной и той же схеме. Проделаем это для какого-нибудь одного класса, например S. Согласно определениям замыкания (определение 3.1) и замкнутого класса (определение 3.15) нам необходимо доказать, что любая функция, представимая формулой над S, принадлежит S. Докажем это индукцией по рангу r (А) формулы А, представляющей функцию f ( x1 , ..., xn ) . Если r ( А) 0 , то A xi , и утверждение очевидно, так как xi xi . Пусть утверждение верно для всех f , таких что r ( А) k , где
k 0 .
Докажем, что утверждение верно и при r ( А) k 1 . Если
r ( А) k 1, то А имеет вид: A1 , ..., Am —
формулы
f j ( A1 , ..., Am ) , где
меньших
рангов,
чем
f j S k 1 ,
и т.е.
r ( А1 ) k 1, ..., r ( Am ) k 1. По предположению индукции формулы A1 , ..., Am представляют булевы функции 1 , ..., m S . Тогда для любых а1 , ..., а n F2n имеем: 28
f (a1 , ..., a n ) f j (1 (a1 ,..., a n ),..., m (a1 ,..., a n )) f j ((1 (a1 ,..., a n ),..., m (a1 ,..., a n ))
f j (1 (a1 ,..., a n ),..., m (a1 ,..., a n )) f j (1 (a1 ,..., a n ),..., m (a1 ,..., a n )) f (a1 ,..., a n ).
Следовательно, f удовлетворяет условию (3.1), т.е f S . 3.3. Критерий полноты системы булевых функций Теорема 3.27. Система булевых функций К полна тогда и только тогда, когда она содержит хотя бы по одной функции каждого из следующих классов:
B2 \ T0 , B2 \ T1 , B2 \ L1 , B2 \ S , B2 \ M (без доказательства). Пример 3.28. Пусть функция f ( x1 , x2 , x3 ) задана табл.3.3. Таблица 3.3 x1
0 0 0 0 1 1 1 1
Показать,
что
x2 0 0 1 1 0 0 1 1
x3 0 1 0 1 0 1 0 1
f ( x1 , x2 , x3 ) —
f
1 0 0 0 0 0 0 0
шефферова
функция,
т.е.
К f — полная система, т.е. К B2 . Выразить x1 и x1 x2 формулами над К. Решение: f (0, 0, 0, 0) 1 f T0 f B2 \ T0 , f (1, 1, 1, 1) 0 f T1 f B2 \ T1 , (0, 0, 0) (1, 1, 1) , но f (0, 0, 0) не f (1, 1, 1) f M f B2 \ M . 29
f (0, 0, 1) 0 f (0, 0, 1) f (1, 1, 0) 0 1 f S f B2 \ S .
Чтобы выяснить вопрос о принадлежности f классу L , представим f многочленом Жегалкина: f ( x1 , x 2 , x3 ) x1 x 2 x3 x1 x 2 x3 x1 x 2 x1 x3 x 2 x3 x1 x 2 x3 1 f L1 f B2 \ L1 .
Итак, все условия теоремы 3.27 выполнены. Следовательно К f — полная система, т.е. f — шефферова функция. Теперь решим вторую часть примера. Так как f x1 x2 x3 , то очевидно x1 f ( x1 , x1 , x1 ) , x1 x2 f ( x1 , x2 , 0) .
30
Лекция 4 4.1. Псевдобулевы функции Пусть Р — произвольное поле. Элементы 0; 1 F2 будем рассматривать как нуль и единицу поля F2 . Определение 4.1. Псевдобулевой функцией от n переменных, или n -местной псевдобулевой функцией, над полем Р при n 1 называется любое отображение F2n в Р. Нуль-местными псевдобулевыми функциями над Р называются все элементы поля Р. Множество всех пседобулевых функций от n переменных над полем Р обозначим через Р(n) . В частности, при Р GF (2) класс Р(n) совпадает с классом булевых функций B2 (n) . В других случаях эти классы различны, и если условиться псевдобулеву функцию со значением из F2 считать булевой, то B2 (n) Р(n) . Множество функций Р(n) относительно естественным образом определяемых операций сложения функций и умножения функций на элементы из Р образуют линейное пространство над полем Р. Рассмотрим систему функций:
{ f 2 | F2n , f () , } ,
(4.1)
1, при , где , — символ Кронекера, т.е. , 0, при . Утверждение 4.2. Система функций (4.1) является базисом пространства Р(n) . Доказательство. Очевидно, что система (4.1) — линейно независимая система. Далее пусть f — произвольная функция из Р(n) . Тогда очевидно, что
f ( x)
f ( ) f ( x ) .
F2n
Отсюда следует, что (4.1) — базис пространства Р(n) . 31
(4.2)
Замечание 4.3. Если Р GF (2) , то f — булева функция и разложение (4.2) функции f совпадает с разложением, полученным заменой в её СДНФ операции на . Замечание 4.4. Если P GF (2) , то система функций {xi1 xi2 ... xik | 1 k n,1 i1 ... ik n}
(4.3)
является базисом пространства P(n) B2 (n) . Это следует из теоремы 2.15 об однозначном представлении булевых функций многочленами Жегалкина. В этом случае представление функции многочленом Жегалкина есть (4.3). Замечание 4.5. Представление булевых функций через базисы пространства Р(n) сопряжено со многими трудностями. Вот две из них: непростым является вопрос об описании базисов пространства Р(n) ; если даже имеется система функций, являющаяся базисом пространства, то в общем случае сложным является вопрос о нахождении коэффициентов в разложении булевой функции по указанному базису. Замечание 4.6. В решении вопроса об описании базисов пространства Р(n) иногда оказывается полезным переход от проn
странства Р(n) к пространству Р ( 2 ) векторов-столбцов длины 2 n над полем Р. Сопоставим каждой функции f Р(n) вектор столбец значений f этой функции. В итоге получаем отображение
n
пространства Р(n) в пространство Р ( 2 ) . Нетрудно видеть, что есть изоморфизм пространств, а поэтому система функций 0 , 1 ,..., 2n 1 является базисом пространства Р(n) тогда и только тогда, когда матрица ( 0 , 1 ,..., 2n 1 ) является невырожден
ной.
32
4.2. Функции k-значной логики Пусть Fk {0, 1, ..., k 1} , где k , k 2 . Определение 4.7. Функцией k-значной логики, или k-значной функцией, от переменных при k 1 называется произвольное отображение f : Fkn Fk , k-значными функциями от 0 переменных называются функции-константы 0, 1, …, k – 1. Обозначим через Bk и Bk (n) множества всех k-значных функций и k-значных функций от n переменных. При изучении k-значных функций используются многие из терминов и обозначений, введенных при изучении булевых функций. В частности, аналогичным образом определяются равенство функций, существенные и несущественные переменные, функции от n переменных, тождественно равны константам 0, 1, …, k – 1, подфункции и т.д. Так как множество Fkn конечно, то k-значную функцию от n переменных можно задать таблицей её значений на всех наборах (или векторах) из Fkn . При этом условимся записывать их в порядке возрастания как числа в конечной системе исчисления. Непосредственно из табличного значения видно, что различных kn
значных функций равно k k . При k 2 табличное задание kзначных функций практически еще более трудно осуществимо. В связи с этим важным вопросом является вопрос о разработке аналитических способов k-значных функций. Множество Fk можно рассматривать как кольцо вычетов / K по модулю k , и потому можно считать определенными на Fk операции сложения и умножения по модулю k . Будем обозначать эти операции при k 2 теми же значками , , что и операции над числами. Используя эти операции и функции-константы можно построить кольцо многочленов Fk [ x1 ,..., xn ] от переменных x1 ,..., xn . Каждый многочлен из этого кольца представляет kзначную функцию от n переменных. При простом k , когда Fk 33
есть поле, многочленами представляются все k-значные функции. При составном k — это не так. Используя операции сложения и умножения, а также элементарные функции 1, если x a; a ( x) 0, если x a
можно получить представление k-значной функции, сходное с совершенной дизъюнктивной нормальной формой для случая k 2 : f ( x1 ,..., x n )
( a1 ,..., an )Fkn
a1 ( x1 ) ... an ( x n ) f (a1 ,..., a n ) . (4.4)
Другими, часто используемыми операциями на Fk являются аналоги дизъюнкции, конъюнкции и отрицания: x1 x 2 max{x1 , x 2 }, x1 & x 2 min{x1 , x 2 }, x x 1(mod k ), ~ x k 1 x(mod k ).
Для k-значных функций, как и в двоичном случае, можно ввести понятия операции, представления функций формулами над заданной системой функций, замыкания, замкнутой и полной системы функций и.т.д. Приведем примеры полных систем k-значных функций. 1. Из представления (4.4) следует, что полной является система функций K1 {0,1,...,k 1, 0 ( x),..., k 1 ( x), x1 x2 , x1 x2 } . 2. Так как в разложении (4.4) операцию сложения можно заменить на дизъюнкцию (выбор максимума), то полной является также система функций K 2 {0,1,..., k 1, 0 ( x),..., k 1 ( x), x1 x2 , x1 x2 } . 3. Наряду с разложением (4.4) имеет место еще один аналог совершенной дизъюнктивной нормальной формы функции f ( x1 ,..., xn ) I a1 ( x1 ) & ... & I an ( xn ) & f (a1 ,...,an ) , где Ia(x) = 1 как только x = a, и в остальных случаях равна 0. Отсюда следует, что 34
полной является система I k 1 ( x), x1 x2 , x1 & x2 } .
функций
K 3 {0,1,..., k 1, I 0 ( x),...,
4. Система функций K 4 {x1 , x1 x2 } является полной системой функций. Доказательство. С помощью суперпозиции из функции x1 легко получить функции x1 1, x1 2,..., x1 (k 1) . Из них получим константу k 1 max{x1 , x1 1,..., x1 k 1} , а поэтому все функции константы 0,1,...,k 1 . Теперь нетрудно получить функции I a (x) :
I a ( x) max{x i : i Fk \ {k 1 a}} 1 . Как следует из примера 3, остается построить функцию x1 & x2 , т.е. min{x1 , x2 }. Для этого сначала построим функции s, если x a; f s,a ( x) s 1 max{I a ( x), k 1 s} 0, если x a. Теперь из них можно получить функции ~ x max{f k 1,0 ( x), f k 2,1 ( x),..., f 0,k 1 ( x)} ~ ~ и min{x1 , x2 } max{~ x1 , x2 } . 5. Аналогично функции Шеффера в k-значной логике является функция Вебба k ( x1 , x2 ) max{x1 , x2 } 1 x1 x2 , которая одна образует систему, т.е. система K ? { k ( x1 , x2 )} является полной. Доказательство. Используя k ( x1 , x2 ) , при x1 x2 имеем
x1 max{x1 , x1} 1 k {x1 , x1} . Далее получаем: x1 2 x1 ; x1 3 x1 ; ................. (k 1) раз; ................ x1 k 1 x1 .
А так как
35
x1 x 2 max{x1 , x 2 } max{x1 , x 2 } 1 k 1 k ( x1 , x 2 ) k 1.
Отсюда имеем, что K 4 [ K5 ] K5 — полная система функций. Утверждение 4.8. Все k-значные функции представляются многочленами над Fk в том и только том случае, когда k — простое число, т.е. Fk поле (без доказательства). Утверждение 4.9. (Критерий полноты — критерий Слупецкого). Пусть система k-значных функций K содержит все функции одной переменной, причем k 3 . Тогда для полноты системы К необходимо и достаточно, чтобы К содержала функцию, существенно зависящую по меньшей мере от двух переменных и принимающую все k значений из Fk .
36
Лекция 5 5.1 Минимизация двоичных функции Пусть двоичная функция f представлена в виде ДНФ: a
a
b
b
f xi 1 ... xi k ... x j1 ... x jm . 1 k 1 m
(5.1)
Определение 5.1. Сложностью представления (5.1) булевой функции f называется число операций « » и « » в записи (5.1). Замечание 5.2. Операции «отрицания» в определении 5.1 не учитываются. Определение 5.3. Задача минимизации для функции f заключается в нахождении заданий функции f в виде ДНФ, у которых сложности минимальны. Такие ДНФ называются минимальными (МДНФ). Определение 5.4. Импликантами двоичной функции f называются элементарные конъюнкции, входящие во всевозможные ДНФ a
a
1
k
функции f. Импликанта xi 1 ... xi k функции f называется простой, если все элементарные конъюнкции, полученные из неё удалением некоторых переменных, не являются импликантами функции f. a
a
1
k
Утверждение 5.5. Пусть xi 1 ... xi k . Следующие утверждения эквивалентны: 1. является импликантой функции f; 2. f f ; 3. f . Доказательство. Покажем эквивалентность первых двух утверждений. Если — импликанта и 1 ... k f — та ДНФ, в которую входит , например, 1 , то
(1 ... k ) 1 ... k . 37
Обратно, если 1 ... k — некоторая ДНФ, то в силу тождества f f конъюнкцию можно дописать в качестве (k + 1)й импликанты в эту ДНФ не нарушая равносильности. Эквивалентность утверждений 2 и 3 следует из тождеств:
f ( f ) f , f f f f . Утверждение доказано. Утверждение 5.6. В минимальной ДНФ функции f ( f 0;1 ) все импликанты являются простыми. Доказательство. Пусть 1 ... m — минимальная ДНФ a
a
функции f. Предположим, что импликанта 1 xi 1 ... xi k непро1 k стая. Тогда её можно представить в виде произведения 1 11 двух элементарных конъюнкций от разных переменных, одна из которых, например 1 , также является импликантой функции f. Согласно утверждению 5.5: f 1 f , или иначе
f 11 2 ... m (11 ) 2 ... m
1 2 ... m . Таким образом, получено противоречие с минимальностью исходной ДНФ. Утверждение доказано. Из этого утверждения вытекает, что задачу минимизации в классе ДНФ можно решать в два этапа. 1-й этап. Находят все простые импликанты функции f. Дизъюнкция всех простых импликант функции f называется сокращённой ДНФ этой функции. Замечание 5.7. Сокращённая ДНФ функции f действительно является ДНФ для f, поскольку, повторяя доказательство утверждения 5.6 можно в произвольной ДНФ функции f заменить все импликанты на простые. 2-й этап. Находят все такие ДНФ функции f, состоящие из простых импликант, из которых нельзя удалить ни одной импликанты. Такие ДНФ называются тупиковыми или несократимыми. Подсчитав сложности тупиковых ДНФ, можно выбрать из них ТДНФ с минимальной сложностью, которая и есть МДНФ. 38
5.2. Геометрическая интерпретация минимизации ДНФ Зададим двоичную функцию на n-мерном двоичном кубе. Как было отмечено ранее, при таком задании элементарным конъюнкциям ранга k соответствуют такие множества вершин, графы связности которых имеют вид (k – n)-мерных кубов. Поскольку дизъюнкции элементарных конъюнкций соответствует объединение множеств вершин таких подкубов, то каждой ДНФ функции f соответствует некоторое покрытие множества Mf единичных вершин функции f (области истинности) подмножествами, имеющими в качестве графов связности подкубы. Простым импликантам функции f будут соответствовать подкубы максимальных размерностей, покрывающие вершины из Mf. Соответственно, первая задача (1-й этап) решается перечислением всех максимальных подкубов, содержащихся в графе связности множества Mf. Вторая задача (2-й этап) заключается в нахождении минимальных (по числу подкубов) покрытий множества Mf максимальными подкубами. Рассмотрим пример. Пусть двоичная функция f (x1, x2, x3, x4) имеет геометрическое задание, изображённое на рис.5.1. 0011
1011
x3
0111 1111
x4 0001
0010
1001
1010
0110 0101
1110
1101 0000
x1 1000
0100
x2 Рис.5.1 39
1100
Граф связности такой функции имеет вид рис.5.2. 1110 1100
1010
1110
0111
1110
0011 1000
Рис.5.2
Выпишем сокращённую ДНФ, записывая простые импликанты в том же порядке, в каком они изображены в графе связности:
x1x4 x1x2 x3 x2 x3 x4 x1x3 x4 x1x2 x4 . Легко видеть, что тупиковыми будут две ДНФ:
x1 x4 x1 x2 x3 x1 x3 x4 x1 x2 x4 , x1 x4 x2 x3 x4 x1 x2 x4 , соответствующие покрытиям (рис.5.3).
Рис.5.3
Минимальной будет только вторая тупиковая ДНФ.
40
Лекция 6 6.1. Метод Квайна — Мак-Класки нахождения сокращённой ДНФ двоичной функции Пусть функция f задана в виде СДНФ. Метод, предложенный Квайком в 1952 г. заключается в следующем: 1) применим к элементарным конъюнкциям СДНФ операцию «неполного склеивания»: x x , до тех пор, пока в результате применения этой операции не перестанут появляться новые конъюнкции; 2) в полученной ДНФ выполняем операции поглощения: , пока это возможно. Теорема 6.1. В результате выполнения пунктов 1, 2 получается сокращённая ДНФ функции f. Доказательство. Сначала заметим, что из всякой импликанты функции f можно с помощью «операции расклеивания» x x получить дизъюнкцию импликант длины n. Поскольку все импликанты длины n входят в СДНФ, то в результате применения операции неполного склеивания в СДНФ на первом этапе (пункт 1) метода будут получены все, в том числе и простые, импликанты функции f. После применения второго этапа (пункт 2), очевидно, в ДНФ останутся только простые импликанты, т.е. полученная в результате ДНФ будет сокращенной. Теорема доказана. Мак-Класки в 1956 г. предложил удобную интерпретацию этого метода. Прежде всего заметим, что склеиваться могут только конъюнкции одинакового ранга, отличающиеся по одной переменa
a
ной. Будем записывать конъюнкции xi 1 ... xi k в виде вектора 1 k n
( a1 , ..., a n ). Индексом конъюнкции назовём || a || ai . i 1
Учитывая это замечание, разобьём все импликанты в СДНФ на группы в соответствии со значениями их индексов. Сам метод при 41
этом заключается в заполнении таблицы специального вида (табл.6.1). Таблица 6.1 Индекс
СДНФ
1
1000*
2
Шаг 1 1_00* 10_0*
1100*
11_0*
1010*
1_10*
0101*
101_
0011*
01_1
Шаг 2
Шаг 3
1__0
______
______
______
______
______
_011 0_11 1110* 3
1011*
______
0111*
Пример 6.2. Пусть f — функция, геометрическое представление которой дано на рис.5.1. Её СДНФ имеет вид:
f ( x1 , x 2 , x3 , x 4 ) x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 x1 x 2 x3 x 4 . Применяя операцию неполного склеивания к импликантам длины n (СДНФ) производим заполнение колонки табл.6.1. При этом в СДНФ звёздочкой отмечаются использованные импликанты (они будут поглощаться на втором этапе). Затем операция склеивания применяется к конъюнкциям ранга (n – 1) и т.д. Как только заполнение таблицы прекратилось, выбираются все не отмеченные звёздочкой импликанты и из них составляется сокращённая ДНФ. Для рассмотренного примера сокращённой ДНФ будет: f ( x1 , x 2 , x3 , x 4 ) x1 x 4 x1 x 2 x3 x1 x 2 x 4 x 2 x3 x 4 x1 x3 x 4 . 42
6.2. Метод нахождения тупиковых ДНФ Для изложения метода нахождения тупиковых ДНФ нам потребуется одно свойство ДНФ монотонных функций. Утверждение 6.3. Минимальная ДНФ монотонной функции совпадает с её сокращённой ДНФ. Доказательство. Сначала покажем, что все простые импликанты монотонной функции не содержат переменных с отрицаниями. Действительно, в противном случае наряду с простой импликантой a
a
1 x1 x 2 2 ... x k k a
функция
имела
бы
импликанту
2
a
x1 x2 2 ... x k k (в силу её монотонности). Склеивая эти две импликанты, получаем противоречие с простотой импликанты 1 . Покажем теперь, что все простые импликанты входят в минимальную ДНФ. Пусть x1 ... xm — простая импликанта. Тогда на наборе ( x1 ... xm ) (1 ...10...0) импликанта принимает знаm n m
чение 1. Все остальные импликанты должны быть равны на этом наборе нулю, так как в них обязательно должны входить переменные из множества {xm1 ,..., xn } . Следовательно, импликанта должна входить в минимальную ДНФ, поскольку иначе функция f на этом наборе будет равна 0. Утверждение доказано. 6.3. Метод Петрика нахождения тупиковых ДНФ Рассмотрим табл.6.2, строки которой соответствуют простым импликантам функции f, а столбцы — конъюнкциям совершенной ДНФ (СДНФ). В каждую клетку записываем единицу, если соответствующая простая импликанта поглощает элементарную конъюнкцию и нуль — в противном случае. Такая таблица называется «импликантной таблицей». Согласно определению, каждая тупиковая ДНФ определяется таким набором строк, что в таблице, образованной этими строками в каждом столбце имеется одна единица, причём из этого набора нельзя удалить ни одной строки так, чтобы при этом ни один столбец не стал нулевым. 43
Таблица 6.2 СДНФ Сокр. ДНФ 1__0 P1 101_ P2 _001 P3 0_11 P4 01_1 P5
1000
1100
1010
0101
0011
1110
1011
0111
1 0 0 0 0
1 0 0 0 0
1 1 0 0 0
0 0 0 0 1
0 0 1 1 0
1 0 0 0 0
0 1 1 0 0
0 0 0 1 1
Пусть в общем случае в таблице имеется N столбцов и m строк. Поставим в соответствие простым импликантам сокращённой ДНФ переменные P1 … Pm. Фиксируем некоторую дизъюнкцию простых импликант. Будем считать, что Pi = 1, если i-я простая импликанта входит в эту дизъюнкцию и Pi = 0, в противном случае. Запишем в виде формалы условие того, что рассматриваемая дизъюнкция является ДНФ функции. Для этого необходимо, чтобы в каждом столбце таблицы была хотя бы одна единица, т.е. N
(a1 j P1 ... amj Pm ) 1 , j 1
где aij — элемент матрицы (таблицы), стоящий в i-й строке и j-м столбце, i 1, m, j 1, N . Эту формулу можно трактовать как КНФ некоторой двоичной функции от переменных P1 … Pm, которая принимает значение 1 только на тех наборах переменных, которые соответствуют некоторым ДНФ исходной функции, и значение 0 — на наборах, которые соответствуют наборам импликант, не являющихся ДНФ исходной функции. Заметим, что функция ( P1 , ..., Pm ) монотонна, так как формула 6.2.3 не содержит переменных с отрицаниями. Поэтому согласно утверждению 6.3 для нахождения её сокращённой ДНФ достаточно раскрыть скобки в формуле 6.2.3, а затем произвести все поглощения. Наконец, остаётся заметить, что в силу указанного выше свой44
ства этой функции, её простые импликанты и только они будут давать тупиковые ДНФ исходной функции f. Для табл. 6.2 функция равна:
( P1 , P2 , P3 , P4 , P5 )
P1 P1 ( P1 P2 ) P5 ( P3 P4 ) P1 ( P2 P3 ) ( P4 P5 )
P1 ( P1 P2 ) P5 ( P3 P4 ) ( P2 P3 ) ( P4 P5 ) P1 P5 ( P3 P2 P4 ) P1P3 P5 P1P2 P4 P5 . Отсюда P1P3 P5 даёт для f тупиковую форму:
x1x4 x2 x3 x4 x1x2 x4 , а P1P2P4 P5 даёт:
x1x4 x1x2 x3 x1x3 x4 x1x2 x4 .
45
Лекция 7 АЛГЕБРАИЧЕСКИЕ СИСТЕМЫ 7.1. Алгебраические системы. Булевы алгебры Определение 7.1. Множество M с заданными на нём операциями и отношениями называется алгебраической системой. При этом M называется основным множеством системы, а множество символов, используемых для обозначения определённых на M операций и отношений называется сигнатурой алгебраической системы. Алгебраическую систему с основным множеством M и сигнатурой { f1 ,... f k ; R1 ,..., Rl } , состоящий из символов операций fi арностей ni и отношений Rj арностей mj, обозначают в виде M( ), или подробнее M( f1 , ..., f k ; R1 , ..., Rl ). При этом набор натуральных чисел называется типом алгебраической системы M( ). Если на алгебраической системе определены только операции, то она называется алгеброй. Если на алгебраической системе только отношения, то она называется моделью. Пример 7.2. N(+, *; =, <) — алгебраическая система. Пример 7.3. N(+, *) — алгебра. Пример 7.4. N(+, <) — модель. Пример 7.5. Алгебрами являются полугруппы, группы, кольца, поля и т.д. В математической логике особую роль играют так называемые булевы алгебры. Определение 7.6. Булевой алгеброй называется множество B с двумя бинарными операциями « », « », и одной унарной операцией «» и двумя нуль-арными операциями (т.е. выделенными элементами) 0, 1, удовлетворяющими условиям (при любых a, b, c B ): 1. (a b) c a (b c) , 2. (a b) c a (b c) , 3. a b b a , 46
4. a b b a , 5. a a a , 6. a a a , 7. a (a b) a , 8. a (a b) a , 9. a (b c) (a b) (a c) , 10. a (b c) (a b) (a c) , 11. a a 0 , 12. a a 1 . Несложно показать, что из условий 1-12 следуют равенства: a 0 0 , a 1 a , a 0 a , a 1 1 ,
(a b) a b , (a b) a b . Например, выведем из условий 1-12 равенство a 0 0 :
a 0 a (a a) (a a) a a a 0 . Элементы 0 и 1 булевой алгебры B называют её нулём и единицей. Иногда их обозначают в виде 0B и 1B. Пример 7.7. Пусть 2M — обозначение множества всех подмножеств множества M, — бинарная операция пересечения множеств, — бинарная операция объединения множеств. Для A M обозначим A = M\A, A — дополнение множества A. «» — унарная операция, и M – нуль-арные операции, играющие роль 0 и 1. Тогда 2M( , , , M) — булева алгебра. Пример 7.8. Пусть M — множество всех положительных делителей числа m, равного произведению некоторых различных простых чисел. Определим операции « », « » и «» следующим обa b НОД(a, b) , разом: для любых a, b M положим m a b НОК( a, b) , a . Число 1 M играет роль нуль-арной опеa рации 0. Число m M играет роль нуль-арной операции 1. Тогда M( , , , 1, m) — булева алгебра. Определение 7.9. Пусть — бинарное отношение на на M. Бинарное отношение на множестве M называется отношением ча47
стичного порядка (или просто отношением порядка), если оно рефлексивно, транзитивно, антисимметрично. Отношение частичного порядка на М называется отношением линейного порядка, если для любых x, x M либо x x, либо x x. Отношение порядка обозначается через « ». Если a b и a b , то пишут a b . Множество M с заданным на нём отношением частичного или линейного порядка « » называется, соответственно, частично или линейно упорядоченным множеством. В некоторых случаях при изучении частично упорядоченных множеств используются их геометрические изображения — диаграммы. При построении диаграмм частично упорядоченного множества M( ) различные элементы из M отождествляются с различными точками плоскости так, что: точка a лежит левее (или ниже) точки b , если a b ; точка a соединяется отрезком с отличной от неё точкой b , если a b и не существует точки c , отличной от a, b, удовлетворяющей условию a c b (в этом случае говорят, что b непосредственно следует за a или a непосредственно предшествует b). Пример 7.10. M = 2{1, 2, 3}. Положим для любых A, B M, A B A B . Тогда диаграмма для M( ) представляется рис.7.1. {1, 2, 3} {1, 2} {1}
{2, 3}
{1, 3} {2}
{3}
Рис.7.1
Пример 7.11. M = { 1, n }. Положим a b «натуральное число a» «натурального числа b». Тогда диаграмма для M( ) имеет вид, показанный на рис.7.2. 1
2
3 Рис.7.2 48
n–1
n
Пример 7.12. M = {1, 2, 3, 4, 5, 6}. Положим a b a | b для любых a, b M. Тогда диаграмма для M( ) имеет вид (рис.7.3). 4
6
2
3
5
1 Рис.7.3
Интересно отметить связь булевых алгебр с частично упорядоченными множествами. Пусть B — произвольная булева алгебра. Для произвольных элементов a, b B положим a b a b = b. Из условий 6.4.2 следует, соответственно, что так определённое отношение « » на B рефлексивно, антисимметрично и транзитивно. В итоге имеем частично упорядоченное множество B( ). Диаграмма для B( ) называется диаграммой булевой алгебры B. Таким образом на рис.7.1 изображена диаграмма булевой алгебры всех надмножеств множества {1, 2, 3}. 7.2. Изоморфизм алгебраических систем В математике при изучении алгебраических систем их обычно классифицируют по темам и по свойствам. Так получаются классы полугрупп, групп, колец, полей, булевых алгебр и т.д. В каждом таком классе алгебраические системы изучаются с точностью до изоморфизма. Определение 7.13. Алгебраические системы A, B одной и той же сигнатуры { f1 , ..., f k ; R1 , ..., Rl } типа называются изоморфными, если существует биективное отображение : A B, такое, что: 1) для любой операции f i и любых элементов a1 , ..., a ni A выполняется равенство: ( f i (a1 , ..., ani )) f i ((a1 ), ..., (ani )) ; 49
2) для любого отношения
Rj
и любых элементов
a1 , ..., a ni A: R j (a1 , ..., am j ) R j ((a1 ), ..., (am j )) .
При этом само отображение называется изоморфизмом системы A на систему B. Пример 7.14. Пусть B1 — булева алгебра всех подмножеств множества M = {a1, …, an}, B2 — булева алгебра всех делителей числа m = p1 p2 … pn, где p1 p2 … pn — различные простые числа. Определим отображение : B1 B2, положив ({ai1 , ..., ai1 }) Pi1 ... Pik и () 1 . Легко видеть, что (0 B1 ) () 1 0 B2 , (1B1 ) (M ) 1B2 ; ( A) ( A) , а также ( A B) ( A) ( A) ,
( A B) ( A) ( A) , для любых подмножеств A, B множества M. Это и означает, что есть изоморфизм булевой алгебры B1 на булеву алгебру B2. Замечание 7.15. Легко видеть, что отношение изоморфизма является отношением эквивалентности на любом множестве алгебраических систем одной сигнатуры и потому все такие системы разбиваются на классы изоморфных систем. Из определения 7.13 видно, что изоморфные алгебраические системы сигнатуры с точки зрения свойств операций и отношений отличаются лишь обозначениями элементов. Отождествив в системах из определения 7.13 элементы a и (a), мы получим одну и ту же алгебраическую систему. Тем самым достигается существенная экономия сил и времени при изучении всего многообразия алгебраических систем. Замечание 7.16. Понятие изоморфизма естественным образом распространяется на алгебраические системы различных, но однотипных сигнатур. При этом необходимо только предварительно установить между операциями (а также между отношениями) систем взаимно однозначное соответствие, сохраняющее арности. ~ Так, если операции fi соответствует операция f i , то условие 1 определения 7.13 запишется в виде: ~ ( f i (a1 , ..., ani )) f i ((a1 ), ..., (ani )) . 50
В частности, если fi — бинарная операция « », а f — бинарная « », то последнее равенство будет иметь вид: (a1 a2 ) (a1 ) (a2 ) . Пример 7.17. Рассмотрим алгебры R ( ) и R(+), где R — множество всех положительных действительных чисел; R — множество всех действительных чисел. Положим ( x) loga x , для любого x R+, где a — некоторое положительное число, a 1. Тогда условие 1 определения 7.13 гарантируется в этом случае известным свойством логарифмов: loga ( x y) loga x loga y . Замечание 7.18. Пример 7.17 показывает, что в некоторых случаях переход к изоморфной алгебре позволяет существенно упростить вычисления. В этом проявляется ещё одна положительная роль понятия изоморфизма. +
51
+
Лекция 8 АЛГЕБРЫ ВЫСКАЗЫВАНИЙ. ПРЕДИКАТЫ И ОПЕРАЦИИ НАД НИМИ 8.1. Основные логические операции и их свойства В математической логике изучаются высказывания и различные связи между ними. При этом понятие высказывания считается основным, неопределяемым понятием. В качестве пояснения говорят лишь, что высказывание — это утверждение, относительно которого известно, истинно оно или ложно. Если высказывание а истинно или ложно, то говорят, что оно имеет значение «и» или «л» и пишут а и или а л. Высказывания а и b, имеющие одинаковые значения, называются равносильными, что обозначается в виде а b. Очевидно, что отношение равносильности высказываний является отношением эквивалентности на любом множестве высказываний М, и потому М разбивается на два класса высказываний — на класс истинных и класс ложных высказываний. В обычной речи мы из определенных высказываний а, b с помощью различных связок можно образовывать новые высказывания, например «а и b» «а или b» «если а, то b», «неверно, что а». В математической логике эти высказывания обозначаются в виде a b (a b), a b, a b, a ( a) и называются конъюнкцией, дизъюнкцией, импликацией и отрицанием высказывания а (табл.8.1). В высказываниях a b, a b, a и b называются членами, или компонентами, соответственно конъюнкции и дизъюнкции; в высказывании а -> b а называют посылкой, b — заключением импликации. 52
Обозначим через = {и, л}. Тогда табл.8.1 может служить определением операций , , , на множестве . Таблица 8.1 a
b
ab
ab
ab
a
и
и
и
и
и
л
и
л
л
и
л
л
л
и
л
и
и
и
л
л
л
л
и
и
При этом операции , , обладают следующими свойствами: 1) операции , коммутативны, ассоциативны, идемпотентны, дистрибутивны одна относительно другой и связаны законами поглощения: a (a b) a, a (a b) a; 2) операция отрицания — инволютивна (т.е. a a ) и связана с операциями , законами де Моргана: a & b a b, a b a & b и соотношениями а а л, а а и. Отсюда следует, что алгебра (, , ) является булевой алгеброй. В ней роль 1 и 0 играют соответственно элементы и, л. Определение 8.1. Двухэлементная булева алгебра (, , ) называется алгеброй высказываний. Из табл.8.1 видно, что импликация (->) также является операцией на множестве и обладает рядом свойств, связывающих её с другими операциями: a b b a (закон контрапозиции), a (b a) и, ab b и, a b a b и другие. 8.2. Предикаты и операции над ними Пусть М — произвольное непустое множество, и n N {0}. М — n-я декартова степень множества М. n
53
Определение 8.2. Любое отображение Р: Мn называется nместным предикатом на множестве М. n-местный предикат, содержащий переменные x1, …, xn обозначим через Р(x1, …, xn). Переменные x1, …, xn принимают значения из множества М. Если — значение предиката Р(x1, …, xn) при x1 = a1, …, xn = an, то будем писать P(a1, …, an) = . Пример 8.3. M = N, n = 1. Тогда предложение «Х есть простое число» есть 1-местный предикат на множестве N. Обозначим это предложение через Р(х). Тогда Р: N , где
и, если x простое число; P( x) л, если x не я являет простым числом. Пример 8.4. M = N, n = 3. Тогда предложение «Число z является суммой чисел x, y» есть 3-местный предикат на множестве N. Обозначим это предложение через P(x, y, z). Тогда P: N3 -> : и, если z x y; P ( x, y , z ) л, если z x y.
Замечание 8.5. Любой n-местный предикат Р(x1, …, xn) на множестве М при фиксации переменных x1, …, xn превращается в высказывание. Замечание 8.6. Под 0-местным предикатом понимается произвольное высказывание. При этом нуль-местных предикатов ровно два — истинный и ложный. Множество М0 — одноэлементно, (содержит единственную последовательность элементов множества М длины нуль). Поэтому М0 Ω отождествляются с элементами множества Ω (нуль-местных предикатов ровно два — истинный и ложный). Замечание 8.7. По n-местному предикату Р(x1, …, xn) естественным образом определяется n-арное отношение R на множестве М: (a1, …, an) Мn положим (a1, …, an) R Р(a1, …, an) и. Тем самым устанавливается взаимооднозначное соответствие между множествами n-арных отношений и всех n-местных предикатов на множестве М. В связи с этим множество М с системой 54
определенных на нем предикатов называется, как и множество М с системой отношений, моделью сигнатуры и обозначается М(). Опишем некоторые способы, позволяющие получать из одних предикатов на множестве М другие предикаты на том же множестве М. 1. Пусть Р(x1, …, xn) произвольный предикат на М. Заменив в нем х1 некоторым элементом а М, мы получим новый, (n – 1)местный предикат на М, который будем обозначать в виде Р(а, x2, …, xn) или каким-либо иным образом, например, q(x2, …, xn). Аналогично, новые предикаты можно получать из предиката Р(x1, …, xn), заменяя в нем какую-либо другую переменную или даже несколько переменных элементами из М. Ясно, что заменив к переменных, получим (n – k)-местный предикат. Пример 8.8. Рассмотрим 3-местный предикат и, если z x y; P ( x, y , z ) л, если z x y,
на множестве N. Заменив х на 2, получим новый 2-местный предикат P(2, y, z) и, если z 2 y; P(2, y, z ) л, если z 2 y. который можно записать, например, в виде «Число z на две единицы больше числа y». 2. Пусть Р(x1, …, xn) — произвольный предикат на множестве М и n 2. Заменим х1 на х2 (или, как говорят, отождествим переменные х1, х2). В результате получим (n – 1)-местный предикат Р(x1, х2, х3, …, xn). Аналогично можно получить из предиката Р(x1, …, xn) новые предикаты, отождествляя какие-либо другие переменные. Пример 8.9. Отождествляя переменные х и у в предикате из примера 8.7, получим 2-местный предикат
и, если z 2 y; P( y, y, z ) л, если z 2 y, на множестве N. Этот новый предикат можно записать, например, в виде предложения «Число z в два раза больше числа у». 55
3. Учитывая связь понятия предиката с понятием высказывания, можно определить логические операции для предикатов. Если Р — n-местный предикат, а q — m-местный предикат, и переменные, входящие в Р, не входят в q, то через P q обозначим (m + n)местный предикат, значение которого при конкретных значениях переменных равно дизъюнкции соответствующих значений предикатов P и q. Аналогично определяются конъюнкция и импликация предикатов, а также отрицания предиката. 4. Кроме операций , , , для предикатов на множестве можно определить еще логические операции навешивания кванторов всеобщности и существования. Рассмотрим n-местный предикат Р(x1, …, xn) на множестве М. Добавив к нему фразу «Для всех х1 » или «Для всякого х1», получим новое предложение, которое обозначим в виде x1 Р(x1, …, xn).
(8.1)
Из построения этого предложения видно, что при замене в нем переменных х2, …, хn соответственно элементами а2, …, аn получится высказывание x1 Р(x1, а2, …, аn), которое истинно в том и только том случае, когда высказывание Р(а, а2, …, аn) истинно при любом а М. Таким образом, (8.1) является (n – 1)-местным предикатом. При этом говорят, что предикат (8.1) получен из предиката Р навешиванием квантора всеобщности по переменной х1. Отметим, что квантор всеобщности можно навешивать и по другим переменным. Добавляя перед предикатом Р(x1, …, xn) фразу «Существует х1, такое что», получим новое предложение, которое обозначается в виде x1 Р(x1, …, xn). (8.2) Подставив в него элементы а2, …, аn вместо x2, …, xn, получим высказывание x1 Р(x1, а2, …, аn), которое истинно в том и только том случае, когда высказывание Р(а, а2, …, аn) истинно хотя бы при одном а из М. Следовательно, 56
предложение (8.2) есть (n – 1)-местный предикат на М. Символ называется квантором существования, а о предложении (8.2) говорят, что оно получено из предиката Р(x1, …, xn) навешиванием квантора существования по переменной х1. Квантор существования можно навешивать и по другим переменным. Пример 8.10. Пусть Р(х, у) есть предикат на N
и, если x делит y; P ( x, y ) л, если x не делит y, тогда предложение у Р(х, у) зависит только от переменной х. При х = 1 оно принимает значение «и», так как 1 делит любое натуральное число. При любом другом значении х из N оно принимает значение «л», т.е. и, если x 1; у P( x, y ) л, если x 1.
Предложение х P(x, y) зависит только от переменной у и принимает значение «л» при любом значении у, поскольку в N не существует чисел, делящихся на все натуральные числа, т.е. х P(x, y) = л. Пример 8.11. Р(х, у) — то же самое, что и в примере 8.10, тогда х P(x, y) и зависит от у и принимает значение «и» для всех значений у. Аналогично у P(x, y) и, для всех значений х.
57
Лекция 9 ИСЧИСЛЕНИЕ ПРЕДИКАТОВ 9.1. Общее понятие о логическом исчислении В настоящее время большинство математических теорий строится дедуктивно. В основу теории кладется какое-либо достаточно хорошо обозримое множество основных понятий и утверждений, называемых аксиомами. Все остальные понятия определяются через основные или уже до этого определенные понятия, а все утверждения теории выводятся, как говорят, логически из аксиом или уже до этого доказанных утверждений. В любой такой теории естественно возникают вопросы: всякое ли утверждение, сформулированное в терминах данной теории, можно доказать или опровергнуть (вопрос о полноте); нельзя ли в этой теории доказать какое-либо утверждение и его отрицание (вопрос о непротиворечивости) и др. Такие вопросы можно считать корректными лишь в том случае, если будут точно определены понятия утверждения, сформулированного в терминах данной теории, и понятие доказательства. В ответ на такие потребности математики и возникли различные логические исчисления, призванные форматировать те или иные фрагменты математических теорий, а также доказательства в этих теориях. Каждое логическое исчисление характеризуется: набором используемых в нем символов, или алфавитом; правилами построения из алфавита корректных утверждений, или формул; некоторым фиксированным наборам формул, называемым системой аксиом; наборами правил. Алфавит, правила образования формул и само множество формул образуют язык исчисления, а правила преобразования формул образуют синтаксис исчисления. 58
Язык логического исчисления должен выбираться так, чтобы с его помощью можно было записать или формализовать возможно большее число утверждений. Разные формальные языки отличаются друг от друга широтой охвата формализованных в них утверждений, или выразительностью, а также ориентацией на изучение той или иной теории. Аксиомы и правила вывода логического исчисления позволяют выделить из множества всех формул так называемые доказуемые формулы, или теоремы. К ним относятся все аксиомы, а также формулы, которые могут быть получены из аксиом с помощью правил вывода. Если исчисление создается для обслуживания какой-либо математической теории, то естественно требовать, чтобы все доказуемые в нем формулы были формализацией истинных утверждений теории. Этот фактор должен накладывать определенные ограничения на выбор аксиом и правил вывода исчисления. В то же время набор аксиом и правил вывода должен быть достаточно богатым, чтобы с его помощью можно было доказать возможно большее число истинных утверждений теории. Правила, определяющие содержательный смысл формул исчисления и соответствие между понятиями доказуемости и истинности формул, составляют предмет семантики логического исчисления. 9.2. Формулы алгебры предикатов Формулы будут определяться как строчки некоторых символов или, как говорят, слова в некотором алфавите. Алфавитом называют произвольное множество попарно различных символов, допускающих такую запись, по которой однозначно восстанавливаются сами символы. Обычно символ отождествляется с любой своей записью, в связи с чем символы алфавита называют также его буквами. В математике в качестве символов зачастую используются изображения букв латинского и других алфавитов, изображения цифр, изображения букв с индексами, символы операций +, *, -, и др. Если А = {а1, а2, …, аn} — алфавит, то любая последовательность ai1 , ai2 , ..., aim его букв называется словом в алфавите А. При этом число m называется длиной слова. Длина слова Р обозначает59
ся в виде ℓ(Р). Для удобства в рассуждениях вводится еще символ Λ для обозначения пустого слова, т.е. слова, не содержащего ни одной буквы. По определению ℓ(Λ) = 0. Так как слово есть конечная последовательность букв, то можно все буквы в слове естественным образом занумеровать и говорить о 1-й, 2-й, и т.д. буквах слова. Обычно слова записывают в строки, а буквы в них нумеруют слева направо. Два слова называют равными, или графически равными, если они имеют одинаковую длину и соответствующие их буквы равны. Равенство будем обозначать знаком «=». Множество всех слов и всех слов длины m в алфавите А обозначим соответственно через W(A) и Wm(A). На множестве W(A) можно ввести операцию умножения (или приписывания) слов, взяв в качестве произведения слов P, Q слово PQ, полученное приписыванием слова Q справа к слову P. Говорят, что слово P является подсловом Q, если существуют такие слова L, R (возможно пустые), что Q = LPR. В этом случае говорят также, что слово Р входит или имеет вхождение в слово Q. Может оказаться, что указанная выше пара слов L, R находится по словам P и Q неоднозначно. Выпишем все такие различные пары слов (Li, Ri) и упорядочим их по возрастанию длины слова Li. Получим: Q = L1PR1 = L2PR2 = … LsPRs. В этом случае говорят, что имеется s вхождений слова P в слово Q, и все эти вхождения упорядочивают по возрастанию длины слова Li. В соответствии с этим говорят о 1-м, 2-м, и т.д. вхождениях слова P в слово Q. Например, слово «арарат» содержит два вхождения слова «ара». Перейдем к определению формул алгебры предикатов на алгебраической системе М(σ). Сигнатуру σ представим в виде объединения σ = σ1Uσ2, где σ1 — множество символов операций, а σ 2 — непустое множество символов предикатов на М. В частности, множество σ1 может быть и пустым. Обозначим через σ 0 подмножество из σ1 обозначений всех нуль-арных операций, т.е. выделенных элементов множества М. Оно может быть любым подмножеством из М. При определении формулы в качестве обозначений будут использоваться различные буквы (возможно, с индексами): a, d, c для 60
элементов из σ0; f, φ, ψ для элементов из σ1; p, q для элементов из σ2. Кроме того, будут использоваться: множество Х символов предметных переменных со значениями из М, обозначаемых буквами x, y, z, u, v (возможно, с индексами); множество О логических операций , v, , ┐, , и служебных символов — скобок и запятых. Таким образом, алфавитом при построении формул будет служить множество Ҩ = σ X O. В конкретных примерах для операций и предикатов будут использоваться также общепринятые обозначения +, , *, =, ≤ и т.д. Определим предварительно понятие терма на системе М(σ). Определение 9.1. 1. Каждый символ переменного из Х или константы из σ0 есть терм. 2. Если f — символ n-арной операции из σ и t1, …, tn — термы, то слово f(t1, …, tn) есть терм. 3. Других термов нет. Таким образом, множество термов для М(σ) есть минимальное подмножество слов в алфавите Ҩ, содержащее множество σ X и замкнутое относительно образования слов по правилу 2. Если вместо переменных из Х в терм t подставить элементы из М и произвести все указанные в t операции, то мы получим элемент из М, называемый значением терма t. Следовательно, терм t определяет функцию на M, зависящую от тех переменных, которые входят в t. Так, если M = N и σ = {0, 1, +}, то термами могут быть представлены все многочлены над N. Теперь определим понятие формулы. В формулах нам необходимо будет различать свободные и связанные вхождения переменных. Эти понятия удобнее определить параллельно с определением формулы. Определение 9.2. 1. Любой символ нуль-местного предиката σ есть формула. 2. Если р — символ n-местного предиката из σ, а t1, …, tn — термы, то слово p(t1, …, tn) есть формула.
61
3. Если А и В — формулы, то слова (A) (B), (A) v (B), (A) -> (B), ┐(А)*1 также являются формулами. В них каждое вхождение переменной является вхождением в формулу А или В и считается таким же (свободным или связанным), каким оно было соответственно в А или В. 4. Если А — формула, в которой есть свободное вхождение переменной xi, то слова xi (A) и xi (A) являются формулами, в которых все вхождения переменных, отличных от xi, называются так же, как и в А, а все вхождения переменной xi называются связанными. При этом формула А называется областью действия записанного перед ней квантора или по переменной xi. 5. Других формул нет. Формулы, определенные в пунктах 1-2, называются элементарными. Все вхождения переменных в элементарные формулы называются свободными. Замечание. В приведенном определении формулы на алгебраической системе М(σ) от М, по существу, использовалось лишь множество выделенных элементов σ0. Поэтому формулу М(σ) можно рассматривать также и как формулу на любой другой алгебраической системе сигнатуры σ0. В связи с этим формулы на алгебраической системе М(σ) называют просто формулами алгебры предикатов сигнатуры σ. Число всех логических операций, участвующих в записи формулы А, назовем рангом формулы А и обозначим через r(A). В частности, r(A) = 0 в том и только том случае, когда А — элементарная формула. Рассмотрим пример. Пусть р1, р2 — символы двухместных предикатов. Тогда выражение x1((x1(p1(x2, x1))) v (x2(( p2 ( x1 , x2 ) ))))
(9.1)
есть формула, поскольку p1(x2, x1), p2(x1, x2) являются формулами по пункту 2, это элементарные формулы. Тогда p2 ( x1 , x2 ) есть формула по пункту 3, x1(p1(x2, x1)) и x2 ( p2 ( x1 , x2 )) есть формулы по пункту 4 и, далее 1
Дальше вместо ┐(А) будем писать ( A ). 62
(x1(p1(x2, x1))) v (x2( p2 ( x1 , x2 ) )) есть формула по пункту 3. В ней последнее вхождение х1 свободно, а потому (9.1) есть формула по пункту 4. Заметим, что в формуле (9.1) все вхождения переменной х1 связанные, первое вхождение переменной х2 свободно, остальные — связанные. Число скобок при записи формул можно уменьшить, если условиться: не заключать в скобки элементарные формулы; не заключать в скобки формулу, над которой находится знак отрицания; считать, что операция сильнее , обе эти операции сильнее , а операции навешивания кванторов сильнее всех других операций; не заключать в скобки большие латинские буквы, являющиеся обозначениями формул; опускать скобки в формулах вида (…((A1 A2) A3)…) Ak, (…((A1 v A2) v A3)…) v Ak; записывать формулу δ1x1(δ2x2(…(δkxkA)…)) с кванторами δ1, …, δk в виде δ1x1δ2x2 … δkxkA и в виде δ1x1, x2, …, xkA при совпадении кванторов δ1, …, δk. При указанных соглашениях формулу (9.1) можно записать в виде x1(x1p1(x2, x1) v x2 p2 ( x1 , x2 ) ). В дальнейшем для сокращения иногда будем опускать знак , т.е. вместо А В писать АВ. Если А — формула сигнатуры σ, то любое ее подслово, являющееся формулой, называют подформулой формулы А. Подробнее понятие подформулы можно определить индукцией по рангу формулы. Определение 9.3. 1. Подформулой элементарной формулы А называется сама формула А. 63
2. Подформулами любой формулы вида AB, A v B, A B называется сама эта формула и все подформулы формул А и В. 3. Подформулами любой формулы вида A, xA, xA называются сама эта формула и все подформулы формулы А. Пользуясь определением 9.3, нетрудно выписать все подформулы любой заданной формулы. Так, подформулами формулы (9.1) будут она сама и формулы: x1p1(x2, x1) v x2 p2 ( x1 , x2 ) , p2 ( x1 , x2 ) , x2 p2 ( x1 , x2 ) , p1(x2, x1), p2(x1, x2), x1p1(x2, x1). Из рассмотренных в 9.2 правил получения предикатов на множестве М из заданных предикатов видно, что любая формула А алгебры предикатов сигнатуры σ является предикатом на алгебраической системе М(σ), зависящим лишь от тех предметных переменных, которые имеют свободное вхождение в А. Если такими переменными являются x1, …, xn, то формулу А иногда записывают в виде A(x1, …, xn). Заменив свободные вхождения переменных в формуле А элементами из М (одинаковыми для всех вхождений одной переменной), мы получим высказывание, значение которого можно вычислить, исходя из значений элементарных высказываний и используя определение логических операций. Значения этих высказываний называются значениями формулы А на М(σ) при соответствующих значениях переменных. Определение 9.4. Формула А алгебры предикатов сигнатуры σ называется выполнимой на алгебраической системе М(σ), если она принимает значение «и» хотя бы при одном наборе из М для переменных, имеющих свободное вхождение в А. В противном случае формула А называется ложной на М(σ). Формула А называется истинной на М(σ), если она принимает значение «и» при любых наборах значений из М для переменных, имеющих свободные вхождения в А. Определение 9.5. Формула алгебры предикатов сигнатуры σ называется выполнимой, тождественно истинной или тождественно ложной, если она соответственно выполнима хотя бы на одной алгебраической системе, истинна на всех системах или ложна на всех системах сигнатуры σ. 64
Тождественную истинность (ложность) формулы А обозначают в виде А и (А л). Примеры 9.6. 1. А (В А) и для любых формул А, В. 2. A B A л для любых формул А, В. 3. Формула x1 x1 x1 x2, x3((x1 = x2x3) (x1 = x2) v (x1 = x3)
(9.2)
выполнима, но не истинна на алгебраической системе N(. ; =). Легко видеть, что она зависит лишь от х1 и принимает истинное значение в том и только в том случае, когда значением переменной х1 является простое число. Формула x1, x2 (x1x2 = x2x1) выполнима, так как она выполнима, например, на системе N(. ; =). Однако она не тождественно истинна, поскольку существуют некоммутативные системы с операцией умножения. Пример 3 показывает, что формулами алгебры предикатов можно записывать те или иные свойства элементов алгебраических систем, или характеризовать те или иные подмножества ее основного множества или множества наборов ее элементов. Так формула (9.2) характеризует множество всех простых чисел. Формула x2(x1x2 = x3) характеризует множество пар натуральных чисел, из которых первое делит второе, т.е. отношение делимости на N. Пример 4 показывает, что формулы алгебры предикатов сигнатуры σ могут быть использованы для характеризации алгебраических систем сигнатуры σ. Формула из этого примера выделяет класс алгебраических систем с коммутативной операцией умножения, если под равенством = понимать отношение (предикат) совпадения элементов множества. 9.3. Равносильность формул. Основные отношения равносильности Определение 9.7. Формулы А, В алгебры предикатов сигнатуры σ называются равносильными на алгебраической системе М(σ), если они принимают на М(σ) одинаковые значения при любом 65
наборе значений предметных переменных, имеющих свободные вхождения переменных в А или В. Из определения 9.7 видно, что равносильность тех или иных формул сигнатуры σ зависит от свойств алгебраической системы М(σ). Например, формулы xA и xA равносильны на любой одноэлементной системе, однако не равносильны в общем случае. Можно привести и менее тривиальные примеры. Изучение равносильностей, имеющих место для отдельных конкретных алгебраических систем, не отвечает целям и задачам математической логики как науки об общих закономерностях в рассуждениях. В связи с этим более ценным является следующее понятие равносильности. Определение 9.8. Формулы алгебры предикатов сигнатуры σ называются равносильными, если они равносильны на любой алгебраической системе сигнатуры σ. Равносильность формул А, В, как и равносильность высказываний будем обозначать в виде А В. Отметим следующие очевидные свойства равносильности формул. Отношение равносильности формул является отношением эквивалентности на множестве всех формул сигнатуры σ, и, следовательно, все указанные формулы разбиваются на классы равносильных формул. Если формула A получена из А заменой некоторой подформулы В равносильной ей формулой В, то А = А. Приведем примеры равносильностей, называемых иногда основными равносильностями алгебры предикатов. Перечисленные равносильности являются следствиями свойств логических операций, а потому имеют место для любых систем. В связи с этим их называют основными законами логики предикатов. Они постоянно (явно или неявно) используются при доказательствах утверждений во всех разделах математики. Так, зачастую вместо теоремы вида А В доказывается равносильное утверждениеА В. При этом используется закон контрапозиции 13 (табл.9.1). Закон исключенного третьего 15 обычно используется при доказательствах от противного, когда для доказательства теоремы А опровергают утверждениеА и отсюда на основании равносильностиA A и делают вывод об истинности А. Правило силлогизма 17 позволяет сводить доказательства теоремы 66
вида А С к доказательству цепочек более простых утверждений, например, А В, В С. Таблица 9.1 № 1 2 3 4 5 6 7 8 9 10 11
Равносильности AB BA ABBA (AB)C A(BC) (A B) C A (B C) A(B C) AB AC A BC (A B)(A C) A(A B) A A AB A AA A AAA
Название Законы коммутативности
AB A B
Законы де Моргана
12
A B A B
13
AB B A
14
A A
15
A A и
Закон исключенного третьего
16
A& A л (A B) (B C) (A C) и хуА ухА
Закон противоречия
17 18 19 20
хуА ухА
21
xA x A x(A B) xA xB
22
23 24 25
26
xA x A
x(A B) xA xB AB AB ΔxA * B δx(A * B), где δ — квантор или , * — операция или v и формула В не содержит вхождений х δхА(х) δуА(у), где δ — квантор или , А(х) — формула, не содержащая вхождений буквы у, а А(у) — формула, полученная из А(х) заменой 67
Законы ассоциативности Законы дистрибутивности Законы поглощения Законы идемпотентности
Закон контрапозиции Закон двойного отрицания
Правило силлогизма Правила перестановки именных кванторов
одно-
Правила отрицания кванторов Законы дистрибутивности кванторов , относительно операций и v (соответственно)
всех свободных вхождений х на у
С другой стороны, в доказательствах иногда допускаются ошибки, состоящие в замене утверждения равносильным ему предложением. Так по аналогии с равносильностями 18-19 (см. табл.9.1), разрешающими переставлять одноименные кванторы, иногда переставляют и разноименные кванторы. Этого делать нельзя, поскольку и в общем случае формулы вида хуА и ухА
(9.3)
не равносильны. Например, формула ху(x < y) истинна на N, а формула ху(x < y) ложна. Аналогичные ошибки допускаются с использованием правила дистрибутивности кванторов и относительно операций v и соответственно. Можно показать, что формулы х(A B) и хА xB, a также формулы х (A B) и хА xB в общем случае не равносильны. Заметим, что равносильность формул А, В эквивалентна истинности формулы (A B) (B A) или двух формул A B, B A. Однако практически зачастую бывает так, что из двух последних формул истинна только одна. Так, формулы (9.3) в общем случае не равносильны, но формула ухА -> хуА истинна на любой алгебраической системе. Если формула А В истинна на системе М(σ), то при любом наборе значений предметных переменных, имеющих свободные вхождения в формулу А В, формула В принимает истинное значение всякий раз, когда истинным является значение А. В связи с этим говорят, что формула В является следствием формулы А. Свойства отношения логического следования формулы из формул также широко используются при доказательствах. В рассуждениях при доказательствах иногда используется также известный в математической логике принцип двойственности. Определение 9.9. Пусть А — формула алгебры предикатов, не содержащая операции «». Формула, полученная из А заменой всех вхождений на , на , на , на , называется двойственной к А и обозначается через А*.
68
Очевидно, что (А*)* = А, и потому формулы А и А* называются двойственными. Двойственными называются и взаимозаменяемые операции и , а также кванторы и . Теорема 9.10. Пусть А — формула алгебры предикатов, p1, …, ps суть все различные элементарные формулы в А, т.е.: A = A(p1, …, ps). Тогда имеет место равносильность формул: A* ( p1 ,..., p s ) A( p1 ,..., p s ) .
Доказательство. Докажем теорему индукцией по рангу r формулы А. При r = 0 ее утверждение верно. Допустим, что оно верно для любой формулы ранга r < n и пусть r(A) = n + 1. Возможны пять случаев: A = A1 A2, A = A1 A2, A = xA1, A = xA1,
A A1 . Рассмотрим случай A = A1 A2. Тогда, используя предположение индукции, закон де Моргана (см. табл.9.1 п.11) и общие свойства равносильности, получим: *
*
A* ( p1 ,..., p s ) A1 ( p1 ,..., p s ) A 2 ( p1 ,..., p s ) A1 ( p1 ,..., p s ) A 2 ( p1 ,..., p s ) A( p1 ,..., p s ).
В трех следующих случаях рассуждения аналогичны. Вместо равносильности 11 в них используются соответственно равносильности 12, 20, 21 (см. табл.9.1). В последнем случае утверждение теоремы следует непосредственно из предположения индукции. Теорема доказана. Следствие 9.11. (Принцип двойственности.) Для любых формул А, В алгебры предикатов: A B A* B*. 69
Принцип двойственности позволяет вместо двух равносильностей A B и A* B* доказывать лишь любую одну из них. 9.4. Использование равносильностей для упрощения формул Равносильности 1-26 (см. табл.9.1) зачастую используются также для преобразования формул к равносильным им формулам нужного вида. В качестве примеров рассмотрим преобразование формул алгебры предикатов к так называемым приведённым и предваренным формулам. Определение 9.12. Формула алгебры предикатов называется приведенной, если в ней не используется операция «», а отрицание или не используется совсем, или относится лишь к элементарным формулам. Определение 9.13. Предваренной (или нормальной, или пренексной) формулой алгебры предикатов называется любая формула вида 1xi1 2 xi2 ... k xik A , (9.4) где δ1, …, δk — кванторы, а А — приведенная формула, не содержащая кванторов. Теорема 9.14. Для всякой формулы А алгебры предикатов существует равносильная ей приведенная формула. Докажем теорему индукцией по рангу r(А) формулы А. Если r(А) = 0, то утверждение верно. Пусть r(А) > 0. Тогда по определению формулы А совпадает с одной из формул вида A1 A2, A1 A2, δxA1, A1 A2, A1 .
(9.5)
Доказательство. По предположению индукции формулы А1, А2 равносильны приведенным формулам. Заменив ими в (9.5) формулы А1, А2, мы в трех первых случаях сразу получим приведенные формулы. А так как A1 A2 А1 А2 (см. п.24 табл.9.1), то остается рассмотреть случай, когда A A1 . Если А1 элементарна, то А — приведенная формула. Если же А1 не элементарна, то она может иметь вид B1 B2, B1 B2, δxB1, B1 B2,B1, где r(Bi) < r(A) –2. То70
гда по свойствам равносильности 11, 12, 20, 21, 24, 14 (см. табл.9.1) формула А равносильна одной из формул: B1 B2, B1 B2, δ*xB1, B1 B2, B1. (9.6) Остается применить предположение индукции к формулам B1,B1,B2 и заменить их в (9.6) приведенными формулами. Теорема 9.15. Для всякой формулы алгебры предикатов существует равносильная ей предваренная формула. Доказательство. По теореме 9.14, не теряя общности, можно считать, что А — приведенная формула. Снова применим индукцию по r(А). Для r(А) = 0 утверждение верно. Пусть r(А) > 0. Тогда формула А может иметь вид 1) A1 A2, 2) A1 A2, 3) δxA1, 4)A1. Причем в случае 4 А1 — элементарная формула и для нее утверждение теоремы верно. Рассмотрим случаи 1-3. 1. A = A1 A2. По предположению индукции Аi равносильна предваренной формуле Bi, i = 1, 2, причем согласно равносильности 26 (см. табл.9.1) связанные переменные любой из формул В1, В2 можно считать отличными от всех переменных другой формулы. Таким образом, A = B1 B2, где можно считать B1 = δ1x1…δkxkC1, B2 = δk + 1xk + 1…δnxnC2, где x1, …, xk не входят в С2, а xk + 1, …, xn не входят в С1, и формулы С1, С2 не содержат кванторов. Отсюда, используя равносильность 25, получим A δ1x1…δkxkδk + 1xk + 1 … δnxn(C1 C2). 2. Для A = A1 A2, рассуждения двойственны. 3. A = δxA1. По предположению индукции А1 равносильна приведенной формуле A δ1x1…δkxkB, причем можно считать, что x x1, …, xk. Возможны два случая: а) В содержит свободные вхождения х. Тогда А равносильна предваренной формуле δxδ1x1…δkxkB; б) В не содержит свободных вхождений х. Тогда из равносильности 4 (см. табл.9.1) следует, что значения формулы А1 не зависят от значений переменной х, а потому А А1 и теорема доказана. 71
9.5. Построение исчисления предикатов 1. Язык исчисления предикатов. В качестве алфавита исчисления предикатов возьмем то же самое множество Ҩ = σ U X U O, которое служило алфавитом при определении формул алгебры предикатов. За элементами множества σ, Х и О сохраним те же самые обозначения и названия, хотя здесь на все буквы алфавита Ҩ мы должны пока смотреть просто как на символы, не имеющие какого-либо смысла. Например, символ операции f здесь не обозначает какую-либо конкретную операцию, определенную на какомлибо конкретном множестве. То же относится и к символам предикатов. Термины же «символ операции» и «символ предиката» объясняются тем, что в приложениях исчисления предикатов к конкретным математическим теориям мы будем трактовать их (интерпретировать) как операции и предикаты на конкретном множестве. Аналогично, предметным переменным будут придаваться значения из этого множества. Понятия терма и формулы сигнатуры σ в исчислении предикатов определяются буквально так же, как в алгебре предикатов. Равенство формул, как и в алгебре предикатов, будем обозначать знаком «=». Из множества всех формул ниже особую роль будут играть формулы, не содержащие свободных вхождений предметных переменных. Они называются замкнутыми формулами, или предложениями. Таким образом, нами полностью определен язык исчисления предикатов 1-й ступени сигнатуры σ. Обозначим его буквой α. Для формул языка α будут использоваться те же правила сокращения скобок, что и в алгебре предикатов. Заметим, что кроме исчисления предикатов 1-й ступени в математической логике и в теории моделей рассматриваются исчисления предикатов и логические языки 2-й ступени. В их алфавиты кроме перечисленных выше символов вводятся также символы функциональных и предикатных переменных, и кванторы , могут навешиваться не только на предметные переменные, но и на функциональные переменные и предикатные переменные. 2. Аксиомы и правила вывода исчисления предикатов. При построении исчисления предикатов с определенным выше языком 72
α аксиомы и правила вывода могут выбираться по-разному. Мы выберем следующую систему аксиом. Аксиомы этой системы по используемым в них логическим операциям делятся на пять подсистем, которые мы занумеруем римскими цифрами. В подсистемах I – IV под буквами А, В, С понимаются произвольные формулы языка α, ограничения на формулы системы V указываются в формулировках соответствующих аксиом (табл.9.2), где A(x) — формула, содержащая свободные вхождения переменной х, A(t) — формула, полученная заменой в A(x) всех свободных вхождений x термом t, удовлетворяющим условию: ни одно свободное вхождение х в A(x) не находится в области действия квантора по какойлибо переменной, содержащейся в t. При этом условии говорят, что терм t свободен для х в формуле A(x). Далее аксиомы будут обозначаться римскими цифрами с индексами. Например, II3 — аксиома 3 из подсистемы II. Таблица 9.2 I II
III
IV
V
1 2 1 2 3 1 2 3 1
A (B A) (A (B C)) ((A B) (A C)) ABA ABB (A B) ((A C) (A B C)) AAB BAB (A C) ((B C) (A B C))
2
A A
3
( A B) ( B A) x A(x) A(t) A(t) x A(x)
1 2
A A
Сформулируем теперь правила вывода. Каждое такое правило позволяет из некоторого множества исходных формул получать новые формулы. Поэтому правило вывода записывают обычно в виде «дроби», у которой в «числителе» находятся исходные формулы, а в «знаменателе» — вновь получаемая формула. 73
I. Правило заключения: A, A B , B
где А, В — любые формулы языка α. II. Правило -введения: BA , B x A
где А содержит, а В не содержит свободные вхождения переменной х. III. Правило -удаления:
A B , x A B где А, В — формулы, удовлетворяющие тем же условиям, что и в правиле II. Формула, находящаяся в «знаменателе» правила вывода, называется непосредственным следствием формул «числителя». Заметим, что, подставляя в аксиому I1 вместо А, В произвольные формулы, мы получим бесконечное множество формул. Таким образом, запись аксиомы I1 является, по существу, схемой, по которой можно получать формулы. То же можно сказать об остальных аксиомах и о формулах из правил вывода. Определив язык α и аксиомы с правилами вывода, мы определили тем самым логическое исчисление, называемое исчислением предикатов 1-й ступени сигнатуры σ. Меняя σ, т. е. меняя множество формул и сохраняя схемы аксиом и правил вывода, мы будем получать другие исчисления предикатов. В дальнейшем язык α будем считать фиксированным, и соответствующее логическое исчисление будем обозначать той же буквой α. 9.6. Выводимость и доказуемость формул Определение 9.16. Выводом формулы А из конечного или бесконечного множества формул Т в исчислении α называется конечная последовательность формул А1, А2, …, An, 74
в которой An = A и каждая из формул Ai, i = 1, …, n является или аксиомой, или формулой из Т (исходной формулой), или получается по некоторому правилу вывода из предыдущих формул этой последовательности. Если существует вывод формулы А из множества формул Т исчисления α, то говорят, что в α А выводима из Т и пишут Т ├─ А, или В1, В2, …, ВК ├─ А, α α если Т = {В1, В2, …, ВК}. При этом формулы из Т называют посылками вывода. Особо важным является случай, когда Т — пустое множество. Определение 9.17. Формула из А языка α , выводимая в исчислении α из пустого множества формул, называется доказуемой формулой, или теоремой исчисления α, а сам вывод формулы А из пустого множества формул называется ее доказательством. Если формула А доказуема в исчислении α, то пишут ├─ А. α Так как у нас исчисление α фиксировано, то букву α будем опускать и писать просто Т ├─ А; В1, В2, …, ВК ├─ А; ├─ А. Очевидно, что при выводах и доказательствах формул можно использовать не только аксиомы и исходные формулы, но и любые доказанные ранее формулы. Дальше нас будут интересовать вопросы о характеризации доказуемых формул и формул, выводимых из заданного множества, вопросы о непротиворечивости и полноте исчисления α. Предварительно приведем доказательства некоторых формул и вспомогательных правил вывода. При этом последовательности формул, являющиеся доказательствами или выводами, будем записывать в столбик, указывая справа их происхождение (номер аксиомы, номер правила вывода, порядковые номера исходных формул и т.п.). 75
Теорема 9.18. ├─ А А для любой формулы А. Доказательство. 1.
(А ((В А) А)) ((А (В А)) (А А)).
2. 3.
А ((В А) А). (А (В А)) (А А).
4. 5.
А (В А).
(I2) (I1) (I, 1, 2) (I1) (I, 3, 4)
А А.
Теорема 9.19. Если А — любая формула и В — доказуемая формула, то ├─ А В. Доказательство получается и добавлением к доказательству формулы В аксиомы I1 и формулы А В, получаемой из В и аксиомы I1 по правилу I. Теорема 9.20. ├─ АВ ВА для любых формул А, В. Доказательство. 1. (II3) (АВ В) ((АВ А) (АВ ВА)). 2. АВ В. (II3) 3. (АВ А) (АВ ВА). (I, 1, 2) 4. АВ А. (II1) 5. АВ ВА. Заменяя в доказательстве теоремы 9.20 II1 II3 соответственно аксиомами III1 – III3, получим доказательство следующей формулы. Теорема 9.21. ├─ А В В А для любых формул А, В. Теорема 9.22. ├─ xA( x) x A( x) для любой формулы А(х), содержащей свободные вхождения переменной х. Доказательство. 1.
А(х) х А(х).
2.
(А(х) х А(х)) xA( x) x A( x) .
3.
xA( x) A( x) .
(I, 1, 2)
4.
xA( x) x A( x) .
(I, 1, 3)
(V2)
76
(IV3)
Даже из приведенных простейших примеров видно, что задача построения доказательств формул является сложной и зачастую весьма искусственной. То же относится и к построению выводов. Попытайтесь, для примера построить вывод AC D ├─ A (C D). Для облегчения этой работы сначала доказывают ряд вспомогательных правил вывода, которыми затем можно заменять целые куски выводов или доказательств. Ряд наиболее распространенных вспомогательных правил вывода можно получить из так называемой теоремы дедукции. Однако и ее формулировка и доказательство в общем случае сложны. Мы пока рассмотрим один ее ослабленный вариант. Теорема 9.23 (об ограниченной дедукции). Пусть Т — произвольное множество формул, и А, В — произвольные формулы. Если T, A├─ B и существует вывод формулы В из T {A}, в котором не используются правила -введения и -удаления, то T ├─ A B. Доказательство. Пусть В1, В2, …, Вm = B есть вывод формулы В из T {A}, в котором не используются правила -введения и удаления. Докажем утверждение теоремы индукцией по длине вывода m. Пусть m = 1. Тогда В является или аксиомой, или посылкой. Если В — аксиома, то она, очевидно, доказуема, и по теореме 9.19 имеем ├─ A B для любой формулы А. Пусть В — посылка. Если В = А, то T ├─ A B следует из теоремы 9.18. Если же В Т, то можно указать следующий вывод формулы А В из Т: 1. 2. 3.
В (А В) В АВ
(I1) (посылка) (I, 1,2)
Допустим, что теорема верна при m n, и докажем ее для m = n + 1. В этом случае по условию формула В будет или аксиомой, или посылкой, или непосредственным следствием двух предыдущих формул Bi, Bj по правилу заключения. Если В — аксиома или посылка, то T ├─ A B устанавливается точно так же, как и при m = 1. Пусть В получается из Bi, Bj по правилу заключения, 77
т.е. BJ = Bi -> B. Так как i < n, j < n, то по предположению индукции имеем: T ├─ A Bi, T ├─ A (Bi B). Применяя теперь к формулам A (Bi B), A Bi и к аксиоме I2 (A (Bi B)) ((A Bi) (A B)) дважды правило заключения, получим формулу А В. Теорема доказана. Докажем теперь ряд вспомогательных правил вывода, обозначая в них буквами А, В, С произвольные формулы α. Правило умножения формул: A, B ├─ AB. Вывод: 1.
(A A) ((A B) (A AB))
2. 3.
AA (A B) (A AB) B (A B) B AB
4. 5. 6. 7. 8. 9.
(II3) (I, 1, 2) (I1) (посылка) (I, 4, 5) (I, 3, 6) (посылка) (I, 7, 8)
A AB A AB
Правило силлогизма: A B, B C├─ A C. В ы в о д. Согласно теореме дедукции достаточно показать, что A B, B C, A├─ C, причем существует вывод С, не использующий правил -введения и -удаления. Таким выводом может служить последовательность формул: А, А В, В, В С, С. Для ее получения дважды применяется правило заключения к посылкам. Аналогично доказываются следующие правила. A (B C)├─ AB C AB C ├─ A (B C)
Правило умножения посылок: Правило разделения посылок: 78
Правило перестановки посылок: Правило умножения заключений: Правило сложения посылок:
A (B C)├─ B (A C) A B, A C├─ A BC A C, B C├─ A B C
Правило введения посылки: Правило контрапозиции:
A├─ B A A B├─ B A
Правило де Моргана: а) A B ├─ AB , б) AB ├─ A B . Вывод правила а): 1. AB -> A 2. AB -> B 3. A AB 4. B AB 5. A B AB 6. A B 7. AB
(II1) (II2) (правило контрапозиции, 1) (правило контрапозиции, 2) (правило сложения посылок, 3, 4) (посылка) (1, 5, 6)
Вывод правила б): 1. A A B 2. B A B 3. A B AB
(III1) (III2) (правило контрапозиции, 1)
4.
A B B
(правило контрапозиции, 2)
5.
A A
(IV2)
6.
BB
(IV2)
7.
A B A
(правило силлогизма, 3, 5)
8.
A B B
(правило силлогизма, 4, 6)
9.
A B AB
10.
AB A B
11.
A B A B AB A B
12.
(правило умножения заключений, 7, 8) (правило контрапозиции, 9) (IV2) (правило силлогизма, 10, 11)
79
Правило -отрицания: а) xA(x) ├─ x A(x) (следует непосредственно из теоремы 9.6.7); б) x A(x) ├─ xA(x) . Вывод правила б): 1. x A( x) A( x)
(V1) (правило контрапозиции, 1)
2.
A( x) x A( x)
3.
A( x) A( x)
4.
A( x) x A( x)
5.
xA( x) x A( x)
6.
x A( x) xA( x)
7.
x A( x) x A( x)
(IV1)
8.
x A( x) xA( x)
(правило силлогизма, 6, 7)
(IV1) (правило силлогизма, 2, 3) (III, 4) (правило контрапозиции, 5)
Правило -отрицания: а) xA(x) ├─ x A(x) ; б) x A(x) ├─ xA(x) . Докажите в качестве упражнения. Правило противоречия: AA ├─ В (из противоречия выводима любая формула). Выведем произвольную формулу В из AA , используя при этом любую доказуемую формулу R, например, А А. 1. 2.
A (R A) ( R A) ( A B)
3.
A ( A B)
4. 5. 6.
AA R BR
7.
AA B
(I1) (IV3) (правило силлогизма, 1, 2) (правило умножения посылок, 3) (правило контрапозиции, 5)
RB
(правило силлогизма, 4, 6) 80
8. 9. 10. 11.
(IV2)
BB AA B AA B
(правило силлогизма, 7, 8) (посылка) (1, 9, 10)
Правило (закон) исключенного третьего: ├─ A A . Доказательство (снова используем доказуемую формулу R): 1. 2. 3.
A A A A A A A A A
(III1) (III2) (правило контрапозиции, 1)
4.
A A A
(правило контрапозиции, 2)
5.
A A
6.
A A A
7.
A A AA AA R
8. 9.
A A R
10.
R A A
11.
RR
12.
R A A
13.
A A A A R A A R A A
14. 15. 16.
(IV1) (правило силлогизма, 4, 5) (правило умножения заключений, 7, 8) (правило противоречия и теорема дедукции) (правило силлогизма, 7, 8) (правило контрапозиции, 9) (IV1) (правило силлогизма, 10, 11) (IV2) (правило силлогизма, 12, 13) (1, 14, 15)
Воспользуемся вспомогательными правилами вывода для доказательства еще одного частного случая теоремы дедукции. Теорема дедукции 9.24 (для замкнутой формулы). Если Т произвольное множество формул, В — произвольная, А — замкнутая формулы и T, A├─ B, то T├─ A B.
81
Доказательство. Производится так же, как теоремы об ограниченной дедукции. В дополнение нам необходимо лишь рассмотреть два случая (при m = n + 1): а) В получается по правилу -введения из формулы Bi; б) В получается по правилу -удаления из формулы Bi. В случае «а» имеем: Bi = C D(x), B = C x D(x), причем С не содержит свободных вхождений х. По предположению индукции имеем: T├─ A (C D(x)). Дополним вывод формулы A (C D(x)) следующими формулами до вывода формулы А В: AC D(x) (правило умножения посылок) AC x D(x) (правило -введения) A (C x D(x)) = A B (правило разделения посылок) В случае «б»: Bi = C(x) D, B = x C(x) D, где D не содержит свободных вхождений х. По предположению индукции T├─ A (C(x) D). Отсюда, используя правила перестановки посылок и -удаления, получим: T├─ C(x) (A D); T├─ x C(x) (A D); T├─ A (x C(x) D) = A B. Теорема доказана. Укажем одно следствие теоремы дедукции. Следствие. Если Т — любое множество формул, А — замкнутая, В — любая формулы и T, A├─ B B , то T├─ A . Доказательство. По теореме дедукции T├─ A B B . Применяя правило контрапозиции, получим T├─ B B A . Из правила де Моргана «а» и закона исключенного третьего следует, что ├─ B B , для любой формулы В. Следовательно, T├─ A .
82
9.7. Семантика исчисления предикатов Для уяснения смысла аксиом и правил вывода введем понятие интерпретации языка и исчисления α. Определение 9.25. Под интерпретацией языка исчисления α понимают любое множество М с зафиксированным отображением сигнатуры σ во множество операций и предикатов, определенных на М, при котором символу n-арной операции f из σ соответствует n-арная операция f, определенная на множестве М, а символу nарного предиката р из σ n-арный предикат р на М. Образ множе ства σ при отображении обозначим через σ . В частности, образом констант из σ при будут нуль-арные операции на М, т. е. некоторые элементы из М. Если (М, ) — интерпретация языка α, то, заменив в любой формуле языка α константы, символы операций и символы предикатов их образами при и условившись переменным из Х придавать значения из множества М, мы получим формулу А алгебры предикатов на алгебраической системе М(σ ), и можно говорить о выполнимости, истинности или ложности этой формулы на систе ме М(σ ). Определение 9.26. Формула А исчисления предикатов называется выполнимой, истинной, ложной в интерпретации (М, ), если соответственно выполнима, истинна, ложна формула А на алгебраической системе М(σ). Определение 9.27. Формула А исчисления предикатов α называется тождественно истинной, если она истинна во всех интерпретациях исчисления α. Естественно возникает вопрос о соотношении между классами доказуемых и истинных формул исчисления предикатов. Ответ на этот вопрос можно получить из следующих теорем. Теорема 9.28. Если каждая формула множества формул Т истинна в некоторой интерпретации (М, ) исчисления α и T├─ A, то А — истинна в (М, ). Доказательство. Для простоты записей условимся считать, что операции и предикаты на М обозначены теми же буквами, что и 83
соответствующие им символы операций из σ. Тогда — тожде ственное отображение и в записи А индекс можно опускать. Из определения доказуемой формулы следует, что достаточно доказать два утверждения: а) все аксиомы истинны; б) формула, являющаяся непосредственным следствием по любому правилу вывода из истинных формул, является истинной. Истинность аксиом первых четырех групп аксиом доказывается одним методом. Проиллюстрируем его на аксиоме I1: A (B A). Заменив в А, В свободные вхождения переменных элементами из М, получим высказывания, имеющие вполне определенные значения £ и ß (каждое из £, ß есть «и» или «л»). Перебирая всевозможные наборы значений «и» и «л» для £, ß мы непосредственной проверкой (пользуясь определением операции ) убедимся в том, что при любых £, ß £ (ß £) и. Отсюда следует, что аксиома I1 истинна в интерпретации (М, ). Докажем теперь истинность аксиомы V1 : x A(x) A(t), где t — терм, свободный для х в А(х). Пусть х, х1, …, хn суть все переменные, имеющие свободные вхождения в А(х) и xi1, …, xim — все переменные, участвующие в образовании терма t. Так как t свободен для х в А(х), то все вхождения переменных xi1, …, xim в терм t останутся свободными при подстановке t вместо х в формулу А(х). В связи с этим запишем: A(t) = A(t(xi1, …, xim), х1, …, хn). Допустим, что формула V1 не истинна в интерпретации (М, ). Это означает, что при некотором наборе значений переменных х1 = a1, …, хn = an, xi1 = ai1, …, xim = aim формула x A(x) принимает значение «и», а формула A(t) — значение «л». Если обозначить через b значение терма t при xi1 = ai1, …, xim = aim, то будем иметь: с одной стороны, A(х0, a1, …, an) является истинным высказыванием при любом значении х0 М, а с другой стороны, высказывание A(b, a1, …, an) — ложно. Полученное противоречие и доказывает наше утверждение. 84
Аналогично доказывается, что правила вывода позволяют из истинных формул в интерпретации (М, ) получать снова истинные формулы, т.е.: 1) если истинны формулы А и А В, то истинна и формула В; 2) если истинна формула В А(х) и х не имеет свободных вхождений в В, то истинна формула В х А(х); 3) если истинна формула А(х) В и х не имеет свободных вхождений в В, то истинна и формула х А(х) В. Теорема доказана. Следствие 9.29. Всякая доказуемая формула исчисления предикатов α является истинной в любой интерпретации (М, ) исчисления α. Замечание. Теорема и следствие теряют силу, если в аксиомах V1 и V2 не накладывать ограничений на терм t или в правилах введения и -удаления разрешить свободные вхождения х в В. Приведем соответствующие примеры. 1. Пусть множество натуральных чисел N, A(x) = y (x < y) и t = x + y — терм, не свободный для х в А(х), поскольку свободное вхождение буквы х в А(х) находится в области действия квантора по букве у, входящий в терм t. Нетрудно видеть, что формула x A(x) A(t), или подробнее, x(y(x < y)) y(x + y < y) ложна в арифметике. 2. В той же интерпретации, положим B = (x y), A = (x y + 1). Тогда имеем: формула В А истинна на N, а формула В xА ложна, поскольку, например, при х = 2, у = 3 имеем (2 3) и, x (x 4) л. Доказанная теорема свидетельствует о том, что логические средства исчисления предикатов выбраны разумно, поскольку с их помощью можно доказать только утверждения, истинные с содержательной точки зрения. Следствие 9.30. Исчисление предикатов непротиворечиво, т.е. в нем не может быть доказуемой никакая формула А вместе с ее отрицанием, или никакая формула вида A A . Действительно формула A A является ложной в любой интерпретации, тогда как доказуемые формулы истинны в любой интерпретации. 85
Теперь естественно возникает вопрос: не слишком ли мало аксиом и правил вывода мы взяли при построении исчисления предикатов? Так, из доказательства предыдущей теоремы видно, что если бы нашлась формула А, не доказуемая в исчислении предикатов, но истинная в любой его интерпретации, то, присоединив А к системам аксиом, мы получили бы более сильное и непротиворечивое логическое исчисление. Однако ниже будет показано, что такой формулы А не существует, а именно имеет место следующая теорема Геделя о полноте исчисления предикатов. Теорема 9.31. Если формула исчисления предикатов истинна во всех его интерпретациях, то она доказуема в исчислении предикатов. Для доказательства этой теоремы введем сначала некоторые понятия и докажем одно общее утверждение (см. теорему 9.7.11). Определение 9.32. Множество формул Т исчисления α называется противоречивым, если существует такая формула А языка α, что Т├─ A A . В противном случае Т называется непротиворечивым. Определение 9.33. Множество формул Т исчисления α называется выполнимым, если существует интерпретация, в которой все формулы из Т принимают истинное значение хотя бы при одной (общей для всех формул из Т) замене переменных. Определение 9.34. Множество формул Т исчисления α называется полным, если для каждой замкнутой формулы языка α имеет место Т├─ А или Т ├─ A . Теорема 9.35. Всякое непротиворечивое множество S замкнутых формул исчисления α выполнимо. Доказательство. Добавим к множеству символов языка α еще счетное множество констант (символов нуль-арных операций) ß = {b0, b1, b2, …}. Получим новый язык α1 в сигнатуре σ1 = σ ß. Заменяя в аксиомах и правилах вывода исчисления α формулы языка α 1, мы получим новое логическое исчисление, которое обозначим той же буквой α1. Из определения языка α1 видно, что все доказанные факты об исчислении α (в частности, все доказанные формулы и дополнительные правила вывода) сохраняются и в α1. Так как язык α1 включает в себя α, то S можно рассматривать как множество пред86
ложений языка α1. Легко видеть, что S будет непротиворечивым и в исчислении α1. Действительно, если в α1 из S выводима формула A A , то, заменив в формулах вывода A A из S все константы из ß переменными, не участвующими в этом выводе, мы получим вывод в α из S формулы B B , где В получается из А указанной заменой констант. Чтобы убедиться в этом, достаточно заметить, что указанная замена аксиомы переводит в аксиомы и сохраняет свойство формулы быть непосредственным следствием предыдущих формул. Таким образом, S непротиворечиво в α1. Теперь расширим определенным образом множество S. Для этого занумеруем все замкнутые формулы исчисления α 1: А0, А1, А2, … По формуле А0 и системе S построим множество формул S0, положив: S { A0 }, если A0 выводима из S ; S 0 S { A0 }, если A0 невыводима из S и A0 xB0 ( x); S { A , B , (b )}, если A невыводима из S и A xB ( x), 0 0 i0 0 0 0
где bi0 — символ с наименьшим номером из ß, не встречающийся в А0. Из определения S0 имеем: S S0 и S0 ├─ А0 или S0 ├─ A0 . Покажем, что S0 непротиворечиво. Допустим, что в α1 S0 ├─ B B . В соответствии с определением S0 рассмотрим три случая. 1. S ├─ А0. Тогда S0 = S { A0 } и из (9.5) имеем: S, А0 ├─ B B . Отсюда по следствию из теоремы дедукции получаем S ├─ A0 , что невозможно в силу непротиворечивости S. 2. A0 невыводима из S и А0 не имеет вида х В0(х). Тогда S0 = S {А0} и мы точно так же, как и в случае «а», получим S ├─ A0 , что противоречит условию. 3. A0
невыводима
из
S
и
А0 = х
В0(х).
Тогда
S0 =
= S {А0, B0, (bi0)}, и потому S, А0, B0, (bi0) ├─ B B . Так как формула B0 (bi0) замкнута, то тем же приемом, что и выше, получим S, 87
А0 ├─ B0 (bi0 ) . Так как bi0 не входит в А0 и в формулы из S, то, повторив весь вывод с заменой bi0 на переменную xJ, не входящую в участвующие в выводе формулы, мы получим S, А0 ├─ B0 ( x j ) , или S ├─ А0 B0 ( x j ) . Дополним вывод А0 B0 ( x j ) из S формулами: (правило -введения)
А0 xj B0 ( x j )
(аксиома)
xj B0 ( x j ) B0 ( x j ) А0 B0 ( x j )
(правило силлогизма)
А0 x B0 ( x)
(правило -введения) (правило -отрицания)
x B0 ( x) xB0 ( x)
(правило силлогизма)
А0 xB0 ( x)
Поскольку xB0(x) = А0, то мы получили вывод из S формулы А0 A0 , т.е. S, А0├─ А0. А так как S, А0 ├─ А0, то по правилу умножения формул S, А0├─ А0 A0 . Отсюда следует: S├─ А0, и мы снова пришли к противоречию с условием. Тем самым мы закончили доказывать непротиворечивость множества формул S0. Далее, по А1 и S0 мы аналогично построим непротиворечивое множество S1 такое, что: S0 S1, S1├─ А1 или S1├─ A1 . Продолжая этот процесс, мы получим последовательность непротиворечивых множеств формул S0 S1 S2 … таких, что Si├─ Аi и Si├─ Ai . Следовательно, T
S i есть непротиворечивое
i 0
и полное множество формул. Теперь построим интерпретацию исчисления предикатов α, в которой истинны все формулы из α. В качестве основного множества возьмем множество М термов языка α1, в которых нет предметных переменных — это так называемые замкнутые термы языка α1. Определим на М операции f и предикаты р , соответствующие символам операций f и предикатов р из α. 88
Если а — символ 0-арной операции из σ, то положим а = а. Если f — символ n-арной операции из σ, p — символ n-арного предиката и t1, …, tn — термы из М, то положим f (t1, …, tn) = f(t1, …, tn): и, если p(t1 ,...,t n ) выводима из T ; p (t1 ,...,t n ) л, если p(t1 ,...,t n ) выводима из T .
Тем самым определена интерпретация (М, σ) исчисления α1, а потому и α. Теперь индукцией по рангу формулы А докажем, что для любой замкнутой формулы языка α1: Т├─ А в α1 А и в (М, σ).
(9.7)
Для упрощения записи верхний индекс у формул будем опускать. Если А = р(t1, …, tn) — элементарная формула, то (9.7) верно по определению предиката р. Пусть А — замкнутая формула ранга r > 0. В зависимости от последней операции в А возможны шесть случаев. 1. А = А1А2. Используя определение конъюнкции, предположение индукции и правила умножения и разделения формул, получим: А и А1 = и, А2 = и Т├─ А1, Т├─ А2 Т├─ А1А2. 2. А = А1 А2. Если А1 А2 и, то А1 = и или А2 = и. Тогда по предположению индукции Т├─ А1 или Т├─ А2, а поэтому и Т├─ А1 А2. Обратно, пусть Т├─ А1 А2. Если Т├─ А1 или Т├─ А2, то по предположению индукции А1 и или А2 и, а потому и А и. В противном случае, в силу полноты системы Т имеем: Т├─ A1 , Т├─ A2 . Тогда по правилам умножения формул и де Моргана получим: Т├─ A1 A2 , Т├─ A1 A2 . Итак, имеем: Т├─ А1 А2, Т├─ A1 A2 , что невозможно в силу непротиворечивости Т. 3. А =А1. Учитывая предположение индукции и полноту системы формул Т, получим: А и А л Т├─ А1 Т├─ А. 4. А = А1 А2. В этом случае, используя предположение индукции и правила введения посылки, контрапозиции и двойного отри89
цания, получим: А и А1 л или А2 и Т├─ А1, или Т├─ А2 Т├─ А2 А1 или Т├─ А2 А1 Т├─ А. 5. А = хА1(х). Если А и, то А1(t) и при любом t M. Тогда по предположению индукции Т├─ А1(t) для всех t M. Допустим, что T ├─ xA1 ( x) . Тогда по правилу -отрицания T ├─ x A1 ( x) и по построению множества Т в Т существует формула A1 (b) при некоторой константе b M. В итоге мы получили: Т├─ А1(t) при любом t M и Т├─ А1(b) при b M, что невозможно в силу непротиворечивости Т. Следовательно, T ├─ хА1(х). Обратно, пусть T ├─ хА1(х). Если хА1(х) и, то А1(t) л при некотором t M. Тогда по предположению индукции Т├─ A1 (t ) . Отсюда по аксиоме V2 и по правилу -отрицания получим T ├─ x A1 ( x)
и
T ├─ xA1 ( x) , что невозможно в силу непротиворечивости Т. 6. А = хА1(х). Если А и, то А1(t) и при некотором t M и по предположению индукции Т├─ А1(t). Отсюда, используя аксиому V2, получим T ├─ хА1(х), т.е. Т├─ А. Обратно, если Т├─ А, то в силу непротиворечивости Т получим, что A не выводима из Т. Тогда, по построению Т, в Т содержится формула А1(b) при некотором b M. По предположению индукции А1(b) и, а потому и хА1(х) = и. Таким образом, все замкнутые формулы языка α, выводимые из Т, истинны в интерпретации (М, ). А так как S T, то и все формулы из S истинны в (М, ), т.е. множество S выполнимо и теорема доказана. Теперь можно доказать и теорему Гёделя о полноте исчисления α. Пусть А — формула исчисления предикатов α и А и в любой интерпретации исчисления α. Если х1, …, хn суть все переменные, имеющие свободные вождения в А, то формула В = х1, …, хnА также истинна в любой интерпретации α, а потому формулаВ ложна в любой интерпретации α. Отсюда следует, что множество формул B невыполнимо.
Тогда по теореме о выполнимости множество B противоречиво, т.е. существует формула С языка α, такая, что B ├─ С С . 90
Но тогда по следствию из теоремы дедукции ├─ B. Теперь, применяя n раз аксиому V1 и правило заключения, получим ├─ A, что и доказывает теорему Гёделя. В качестве других следствий теоремы о выполнимости докажем так называемую теорему о совместной выполнимости и локальную теорему Мальцева. Теорема 9.36 (о совместной выполнимости). Если замкнутая формула А исчисления α истинна в любой интерпретации α, в которой истинны формулы некоторого Т замкнутых формул, то Т├─ А. Доказательство. Из условия видно, что множество формул T Т U {A} невыполнимо. Значит, по теореме о выполнимости множество T противоречиво, т.е. T, A ├─ B B для некоторой формулы В. Отсюда по следствию из теоремы дедукции Т├─ А. Теорема Мальцева (9.37). Множество замкнутых формул S исчисления α выполнимо тогда и только тогда, когда выполнимо любое его конечное подмножество. Доказательство. Выполнимость конечных подмножеств выполнимого множества формул очевидна. Докажем обратное утверждение. Допустим, что выполнимо любое конечное подмножество формул множества S, а само S невыполнимо. Тогда по теореме о выполнимости оно противоречиво, т.е. найдется такая формула А, что S├─ A A . Но тогда A A выводима лишь из конечного подмножества S1 S формул, участвующих в выводе формулы A A из S. Следовательно, нашлось противоречивое конечное множество формул из S. Если бы S было выполнимым, то по теореме 9.28 нашлась бы интерпретация α, в которой была бы истинной формула A A , что невозможно. Полученное противоречие и доказывает теорему.
91
Л е к ц и я 10 ПОНЯТИЕ О ТЕОРИИ МОДЕЛЕЙ Теория моделей возникла на стыке между алгеброй и математической логикой. Она занимается в основном изучением таких свойств классов алгебраических систем, которые могут быть записаны формулами какого-либо логического исчисления (чаще всего, исчисления предикатов). При этом сами алгебраические системы изучаемого класса становятся интерпретациями или моделями соответствующего исчисления. Из анализа связей между формальным языком (формальными выводами, доказательствами и т.п.) и его интерпретациями черпает теория моделей и главные средства исследований. В самостоятельную область математики теория моделей выделилась в 50-е годы XX века благодаря работам Мальцева, Тарского, Геделя, Левенгейма, Скулема, Биркгофа и др. К настоящему моменту теория моделей является достаточно развитой областью математики со своей проблематикой и собственными методами исследований. Многие из разработанных в ней методов успешно используются в других областях математики. С некоторыми такими методами мы познакомимся в данной лекции. Предварительно сделаем одно замечание о предикате равенства и дадим несколько определений. Пусть К — некоторый класс алгебраических систем сигнатуры σ. Тогда можно построить язык логического исчисления в сигнатуре σ и записать свойства систем из класса К формулами полученного исчисления. Однако формализация свойств систем зачастую существенно облегчается, если в сигнатуру исчисления ввести еще двухместный предикат равенства « = ». Полученную сигнатуру будем обозначать в виде σ^. Сразу отметим, что, введя предикат равенства, мы должны пополнить и систему аксиом исчисления, введя в нее аксиомы, характеризующие предикат равенства. В качестве таких аксиом выбираются формулы: x(x = x), x1, x2 (x1 = x2 x2 = x1), 92
x1, x2, x3 (x1 = x2 x2 = x3 x1 = x3), характеризующие отношение равенства как отношение эквивалентности, а также все формулы вида x1, …, xk, y1, …, yk (x1 = y1 … xk = = yk h(x1, …, xk) = h(y1, …, yk)); x1, …, xn, y1 ,…, yn (x1 = y1 … xn = = yn (p(x1, …, xn) = p(y1, …, yn))), где h — функциональный, а р — предикативный символы из σ. Последние формулы характеризуют согласованность отношения равенства со всеми предикатами и операциями из σ. Ниже мы будем рассматривать лишь исчисления с равенством и аксиомы равенства будут автоматически включаться в соответствующие системы аксиом. Определение 10.1. Пусть K — класс алгебраических систем сигнатуры σ. Множество замкнутых формул исчисления предикатов сигнатуры σ^, истинных во всех системах из K, называется элементарной теорией класса K и обозначается th(K) или th(А), если K состоит из одной алгебраической системы А. Например, можно говорить об элементарной теории арифметики натуральных чисел, об элементарной теории групп, об элементарной теории конечных полей и т.д. Заметим, что слово «элементарная» в термине «элементарная теория» объясняется тем, что любая формула исчисления предикатов выражает свойства систем через указание связей между их элементами, поскольку кванторы навешиваются лишь на предметные переменные. Задача описания элементарной теории th(K) для разных классов K является важнейшей задачей теории моделей. В частности, теория th(K) является разрешимой, если существует алгоритм, позволяющий для любой формулы исчисления в сигнатуре σ^ выяснить, содержится она в th(K) или нет. В противном случае элементарная теория называется неразрешимой. В решении вопросов о разрешимости или неразрешимости элементарных теорий теория моделей смыкается с теорией алгоритмов, которая будет изучаться в последующих лекциях. Определение 10.2. Пусть F — произвольное множество формул исчисления предикатов сигнатуры σ^. Алгебраическая система А 93
сигнатуры σ, на которой истинны все формулы из F, называется моделью для F, что записывается в виде А╞═ F. Вопросы, связанные с построением и исследованием моделей для заданных систем формул, также занимают важное место в теории моделей. В частности, алгебраические системы сигнатуры σ называют элементарно эквивалентными, если в них истинны одни и те же формулы исчисления предикатов сигнатуры σ^. Очевидно, что из изоморфизма систем следует их элементарная эквивалентность. Обратное же не всегда верно. В связи с этим укажем на одну из долго стоящих и широко известных проблем А. Тарского (проблему о полноте для элементарной теории свободных групп): будут ли элементарно эквивалентными свободные группы рангов m и n при m > n > 1. Определение 10.3. Класс К алгебраических систем сигнатуры σ называется аксиоматизируемым (конечно аксиоматизируемым), если существует такое множество (конечное множество) формул F исчисления предикатов сигнатуры σ^, что А К А╞═ F. При этом множество F называется системой аксиом класса К. Очевидно, что наличие хорошей системы аксиом, описывающих класс алгебраических систем, играет немаловажную роль для изучения этого класса. В связи с этим в теории моделей вопросу аксиоматизируемости уделяется серьезное внимание. Приведем несколько примеров аксиоматизируемых классов. 1. Класс всех групп в сигнатуре σ = <, 1> конечно аксиоматизируем. Системой аксиом может служить множество формул Agr: 1) x1, x2, x3 ((x1 x2) x3 = x1 (x2 x3)), 2) x1 (x1 1 = x1), 3) x1 x2 (x1 x2 = 1). Добавление к ним формулы 4) x1, x2 (x1 x2 = x2 x1) приводит к аксиоматике класса всех абелевых групп. 2. Класс всех полей в сигнатуре σ = <+, , 0, 1> конечно аксиоматизируем. Его система аксиом Af может быть получена добавлением к аксиомам абелевых групп в сигнатуре <+, 0>, выписанных в 94
примере 1, формул 1, 2, 4, характеризующих коммутативные полугруппы с единицей, и формулы x1 (x1 0 x2(x1 x2 = 1)). Добавив к системе аксиом Af еще аксиому Ф p : x (1 ... 1) x 0 , p
(р — простое число), мы выделим из всех полей класс полей характеристики р. Класс полей характеристики 0 задается системой аксиом, полученных добавлением к системе Аf отрицаний аксиом Фp по всем простым числам р. Эта система аксиом бесконечна. Можно доказать, что класс полей характеристики 0 не является конечно аксиоматизируемым. 3. Арифметику натуральных чисел можно рассматривать как алгебру сигнатуры σA = {+, , `, 1}, где «`» есть символ унарной операции. Объединяя систему аксиом Пеано с требованием к операциям сложения и умножения по Грассману, получим следующую систему аксиом — формул: x1(x1` = 1), x1, x2 (x1 = x2 x1` = x2`), x1, x2 (x1` = x2` x1 = x2), x1 (x1 + 1 = x`), x1, x2 (x1 + x2`) = (x1 + x2)`, x1(x1 1 = x1), x1, x2 (x1 x2` = x1 x2 + x1), A(1) x1(A(x1) A(x1`)) yA(y), где А — произвольная формула сигнатуры σA. Пусть K — произвольный аксиоматизируемый класс алгебраических систем сигнатуры σ, и А — его система аксиом. Тогда, добавив к аксиомам исчисления предикатов аксиомы равенства и все аксиомы из А, мы построим новое логическое исчисление αК. В 95
нем, как и в изученном нами исчислении предикатов α, можно определить понятия формулы, выводимой из заданной системы формул, доказуемой формулы и т.д. Алгебраические системы класса К будут являться такими интерпретациями исчисления αК, в которых истинны все формулы из А, т.е. будут моделями множества А. Для исчисления αК, как и для исчисления α, доказывается следующая теорема о полноте. Если Ф — замкнутая формула исчисления αК, то Ф th(K)
├─ Ф. αК
Эту теорему, с одной с стороны, можно использовать для проверки истинности формулы Ф на системах класса K, а с другой стороны, из нее следует ряд общих методов получения утверждений об алгебраических системах. Один из этих методов, называемый методом компактности, основан на локальной теореме Мальцева для любого исчисления αК, называемой также теоремой компактности. Множество формул исчисления αК выполнимо тогда и только тогда, когда выполнимо любое его конечное подмножество. Первые примеры по применению этой теоремы были указаны в теории групп самим Мальцевым. Ниже мы приводим один его результат. Пусть G — группа и G2 < G1 < G. Охарактеризуем сначала формулами утверждения: 1. Gi < G – Gi — подгруппа группы G. 2. G2 < G1. 3. G2 G1 – G2 — нормальный делитель группы G1. 4. G1 / G2 — факторгруппа. С этой целью введем на G два одноместных предиката R1 и R2, положив: Ri(x) = и x Gi, i = 1, 2. Тогда утверждения 1 – 3 запишутся формулами: x1, x2, x3(Ri(x1)Ri(x2)(x2x3 = 1) Ri(x1x3)), x(R2(x) R1(x)), 96
x1, x2, x3(R1(x1)R2(x2)(x1 x3 = 1) R2(x3x2x1)). На элементы фактор-группы G1 / G2 можно смотреть как на элементы группы G1, определив иначе предикат равенства E(x, y) элементов x, y из G1 (как принадлежность их к одному смежному классу по G2): E(x1, x2) x3(R2(x3)(x3x2 = x1)). И несколько иначе, чем в G1 определим операцию «» умножения элементов из G1 x1 x2 = x3 x4 (R2(x4)(x1x2 = x3x4)). Легко видеть, что операция «» определена корректно, и если какое-либо групповое свойство Р группы G1 выражено формулой В в сигнатуре σ = {R1, R2, =, , 1}, то, заменив в В предикат «=» на Е и операцию на , мы получим формулу Р*, выражающую групповое свойство факторгруппы G1 / G2 (т.е. если Р истинна на G1, то Р* истинна на G1 / G2 ). Пусть теперь Р = [P1, …, Pk] — набор свойств группы G, записываемых конечными системами замкнутых формул и сохраняющихся при переходе к подгруппам. Пусть группа G имеет тип Р, т.е. в ней существует нормальный ряд G G0 G1 ... Gk 1 (10.1) такой, что Gi 1 / Gi обладает свойством Pi, i = 1, …, k. Как и выше, введем на группе G одноместные предикаты R1, R2, …, Rk, характеризующие подгруппы G1, G2, …, Gk и образуем множество формул АG в сигнатуре σ1, состоящей из предикатов R1, R2, …, Rk, «=», бинарной операции и нуль-арных операций, отвечающих всем элементам группы G, т.е. всех констант из группы G, включив в него: 1) систему аксиом Аgr; 2) формулы x1, x2 (x1 = x2 Ri(x1) = Ri(x2)); 3) формулы, характеризующие утверждения Gi 1 Gi , i = = 0, …, k – 1; 4) формулу x (Rk(x) x = 1), утверждающую, что Gk = 1; 97
5) формулы для записи того факта, что фактор-группа Gi 1 / Gi обладает свойством Рi. Введем еще для группы G систему формул D(G), называемую диаграммой группы G. Для любых элементов gi, gj, gr G D(G) содержит формулу gigj = gr, если она истинна в G, и формулу gigj gr — в противном случае. Объединение систем АG и D(G) обозначим через KG. Очевидно, что G имеет тип Р тогда и только тогда, когда множество формул KG выполнимо, т.е. имеет модель. Теорема 10.4. Если каждая конечно порожденная подгруппа H < G имеет тип Р, то и G имеет тип Р. Доказательство. Согласно локальной теореме Мальцева для выполнимости множества формул KG достаточно доказать выполнимость любого его конечного подмножества. При этом из конечных систем достаточно рассматривать лишь подсистемы, содержащие АG. Итак, пусть D` — конечная подсистема из D(G), G` — множество элементов из G, участвующих в соотношениях из D`, и Н — подгруппа в G, порожденная множеством G`. Так как Н — подгруппа типа Р, то множество формул АG U D(H), а потому и АG D1’ выполнимо, и теорема доказана. Примеры. 1. Возьмем в качестве свойства Pi формулу x, y (xy = yx). Тогда группы типа Р — это в точности разрешимые группы ступени разрешимости n < k и потому получается теорема. Теорема. Если каждая конечно порожденная подгруппа группы G разрешима ступени n < k, то и G — разрешимая группа ступени n < k. 2. Возьмем в качестве Р1 свойство: группа содержит не более n элементов, а в качестве Р2 — любую формулу, выводимую из Аgr. Тогда получится теорема. Теорема. Если каждая конечно порожденная подгруппа группы G содержит нормальный делитель индекса k n, то G также содержит нормальный делитель индекса k n.
98
Таким образом, выбирая различные свойства Pi, мы будем получать различные утверждения о группах на основании свойств только конечно порожденных подгрупп. Проиллюстрируем на примере еще один метод теории моделей для получения утверждений об алгебраических системах, называемый методом переноса. Теорема 10.5. Если В — замкнутая формула в сигнатуре теории полей и В истинна на всех полях характеристики 0, то существует такое простое число р0, что В истинна на любом поле характеристики p > р0. Доказательство. Действительно, если В истинна на всех полях характеристики 0, то В выводима из множества формул Аf { p : р = 2, 3, 5, …}. Однако в выводе формулы В используется лишь конечное множество аксиом вида p :
T Ф pi1 , ..., Ф pik ,
pi1 ... pik p0 . Тогда В выводима из систем аксиом Аf T, и потому истинна на всех полях, кроме полей характеристики pi1 , ..., pik , и, в частности,
всех полях характеристики p > р0. Выбирая в качестве В различные формулы, мы будем получать различные конкретные утверждения. В частности, можем получить следующий интересный факт. Если система алгебраических уравнений f1 ( x1 ,..., x n ) a1 ; ... (10.2) f ( x ,..., x ) a n m m 1 над кольцом Z не имеет решений в любом расширении поля рациональных чисел, то существует такое простое число р0, что при каждом простом p > р0 система уравнений, полученная заменой в (10.2) всех коэффициентов их вычетами по модулю р не имеет решений в любом поле характеристики р.
99
Л е к ц и я 11 ЭЛЕМЕНТЫ ТЕОРИИ АЛГОРИТМОВ Понятие «алгоритм» давно является привычным не только для математиков. Оно является концептуальной основой разнообразных процессов обработки информации. Возможность автоматизации таких процессов обеспечивается наличием соответствующих алгоритмов. С алгоритмами первое знакомство происходит в начальной школе при изучении арифметических действий с натуральными числами. В упрощенном понимании «алгоритм» — это то, что можно запрограммировать на ЭВМ. Слово алгоритм содержит в своем составе преобразованное географическое название Хорезм. Термин «алгоритм» обязан своим происхождением великому ученому средневекового Востока Маххамад ибн Муса ал-Хорезми (Магомет, сын Моисея, из Хорезма). Он жил приблизительно с 783 по 850 гг., и в 1983 году отмечалось 1200-летие со дня его рождения в городе Ургенче — областном центре современной Хорезмской области Узбекистана. В латинских переводах с арабского арифметического трактата ал-Хорезми его имя транскрибировалось как algorismi. Откуда и пошло слово «алгоритм» — сначала для обозначения алгоритмов цифровых вычислений десятичной позиционной арифметики, а затем для обозначения произвольных процессов, в которых искомые величины решаемых задач находятся последовательно из исходных данных по определенным правилам и инструкциям. Вплоть до 30-х годов нашего столетия понятие алгоритма оставалось интуитивным понятием, имевшим скорее методологическое, а не математическое значение. Так, к началу XX века много ярких примеров алгоритмов дала алгебра и теория чисел. Среди них упомянем алгоритм Евклида нахождения наибольшего общего делителя двух натуральных чисел или двух целочисленных многочленов, алгоритм Гаусса решения системы лния рациональных корней многочленов одного переменного с рациональными коэффициентами, алгоритм Штурма определения числа действительных корней многочлена с действительными коэффициентами на некотором отрезке 100
действительных чисел, алгоритм разложения многочлена одного переменного над конечным полем на неприводимые множители. Указанные алгоритмические проблемы решены путем указания конкретных разрешающих процедур. Для получения результатов такого типа достаточно интуитивного понятия алгоритма. Однако в начале XX века были сформулированы алгоритмические проблемы, положительное решение которых представлялось маловероятным. Решение таких проблем потребовало привлечения новых логических средств. Ведь одно дело доказать существование разрешающего алгоритма — это можно сделать, используя интуитивное понятие алгоритма. Другое дело — доказать несуществование алгоритма — для этого нужно знать точно, что такое алгоритм. Задача точного определения понятия алгоритма была решена в 30-х годах XX в. в работах Гильберта, Черча, Клини, Поста, Тьюринга в двух формах: на основе понятия рекурсивной функции и на основе описания алгоритмического процесса. Рекурсивная функция — это функция, для которой существует алгоритм вычисления ее значений по произвольному значению аргумента. Класс рекурсивных функций был определен строго как конкретный класс функций в некоторой формальной системе. Был сформулирован тезис (называемый «тезис Черча»), утверждающий, что данный класс функций совпадает с множеством функций, для которых имеется алгоритм вычисления значений по значению аргументов. Другой подход заключался в том, что алгоритмический процесс определяется как процесс, осуществимый на конкретно устроенной машине (называемой «машиной Тьюринга»). Был сформулирован тезис (называемый «тезис Тьюринга»), утверждающий, что любой алгоритм может быть реализован на подходящей машине Тьюринга. Оба данных подхода, а также другие подходы (Марков, Пост) привели к одному и тому же классу алгоритмически вычислимых функций и подтвердили целесообразность использования тезиса Черча или тезиса Тьюринга для решения алгоритмических проблем. Поскольку понятие рекурсивной функции строгое, то с помощью обычной математической техники можно доказать, что решающая некоторую задачу функция не является рекурсивной, что эквивалентно отсутствию для рассматриваемой задачи разрешающего алгоритма. Аналогично, несуществование разрешающей ма101
шины Тьюринга для некоторой задачи равносильно отсутствию для нее разрешающего алгоритма. Указанные результаты составляют основу так называемой дескриптивной теории алгоритмов, основным содержанием которой является классификация задач по признаку алгоритмической разрешимости, т.е. получение высказываний типа «Задача П алгоритмически разрешима» или «Задача П алгоритмически неразрешима». В данном направлении был получен ряд фундаментальных результатов. Среди них — отрицательное решение Новиковым П.С. в 1952 году классической проблемы тождества для конечно определенных групп, сформулированной Деном в 1912 году. Знаменитая десятая проблема Гильберта, сформулированная им в 1900 году (среди других 23 проблем) формулируется так: «10. Задача о разрешимости диофантова уравнения1. Пусть задано диофантово уравнение с произвольными неизвестными и целыми рациональными числовыми коэффициентами. Указать способ, при помощи которого возможно после конечного числа операций установить, разрешимо ли это уравнение в целых рациональных числах». Алгоритмическая неразрешимость 10-й проблемы Гильберта была доказана в 1970 году Матиясевичем Ю.В. В настоящее время теория алгоритмов образует теоретический фундамент вычислительных наук. Применение теории алгоритмов осуществляется как в использовании самих результатов (особенно это касается использования разработанных алгоритмов), так и в обнаружении новых понятий и уточнении старых. С ее помощью проясняются такие понятия как доказуемость, эффективность, разрешимость, перечислимость и другие. В технику термин «алгоритм» пришел вместе с кибернетикой. Понятие алгоритма помогло, например, точно определить, что значит эффективно задать последовательность управляющих сигналов. Применение ЭВМ послужило стимулом развитию теории алгоритмов и изучению алгоритмических моделей, к самостоятельному изучению алгоритмов с целью их сравнения по рабочим ха1 Диофантовыми уравнениями называются алгебраические уравнения или системы алгебраических уравнений с рациональными коэффициентами, решения которых отыскиваются в целых или рациональных числах. Например,
n
a 0 a1 x ... a n x 0, a i Z .
102
рактеристикам (числу действий, расходу памяти), а также их оптимизации. Возникло важное направление в теории алгоритмов — сложность алгоритмов и вычислений. Начала складываться так называемая метрическая теория алгоритмов, основным содержанием которой является классификация задач по классам сложности. Сами алгоритмы стали объектом точного исследования, как и те объекты, для работы с которыми они предназначены. В этой области естественно выделяются задачи получения верхних и нижних оценок сложности алгоритмов. Методы решения этих задач совершенно различны. Для получения верхних оценок достаточно интуитивного понятия алгоритма. Для этого строится неформальный алгоритм решения конкретной задачи, и затем он формализуется для реализации на подходящей алгоритмической модели. Если показывается, что сложность (время или память) вычисления для этого алгоритма не превосходит значения подходящей функции при всех значениях аргумента, то эта функция объявляется верхней оценкой сложности решения рассматриваемой задачи. В области получения верхних оценок получено много ярких результатов для конкретных задач. Среди них разработаны быстрые алгоритмы умножения целых чисел, многочленов, матриц, решения линейных систем уравнений, которые требуют значительно меньше ресурсов, чем традиционные алгоритмы. Установить нижнюю оценку — значит доказать, что никакой алгоритм вычисления не имеет сложности меньшей, чем заданная граница. Для получения результатов такого типа необходима точная фиксация рассматриваемой алгоритмической модели, и такие результаты получены только в очень жестких вычислительных моделях. В связи с этим получила развитие проблематика получения «относительных» нижних оценок, так называемая теория NP-полноты, связанная с труднорешаемостью переборных задач. Рассмотрим неформально, что именно в интуитивном понятии алгоритма нуждается в уточнении. 11.1. Основные требования к алгоритмам 1. Каждый алгоритм имеет дело с данными — входными, промежуточными, выходными. Для того чтобы уточнить понятие дан103
ных, фиксируется конечный алфавит исходных символов (цифры, буквы и т.п.) и указываются правила построения алгоритмических объектов. Типичным используемым средством является индуктивное построение. Например, определение идентификатора в языке программирования может выглядеть следующим образом: идентификатор — это либо буква, либо идентификатор, к которому приписана справа либо буква, либо цифра. Слова конечной длины в конечных алфавитах — наиболее обычный тип алгоритмических данных, а число символов в слове — естественная мера объема данных. Другой случай алгоритмических объектов — формулы. Примером могут служить формулы алгебры предикатов и алгебры высказываний. В этом случае не каждое слово в алфавите будет формулой. 2. Алгоритм для размещения данных требует памяти. Память обычно считается однородной и дискретной, т.е. она состоит из одинаковых ячеек, причем каждая ячейка может содержать один символ данных, что позволяет согласовать единицы измерения объема данных и памяти. 3. Алгоритм состоит из отдельных элементарных шагов, причем множество различных шагов, из которых составлен алгоритм, конечно. Типичный пример множества элементарных шагов — система команд ЭВМ. 4. Последовательность шагов алгоритма детерминирована, т.е. после каждого шага указывается, какой шаг следует выполнять дальше, либо указывается, когда следует работу алгоритма считать законченной. 5. Алгоритм должен обладать результативностью, т.е. останавливаться после конечного числа шагов (зависящего от исходных данных) с выдачей результата. Данное свойство иногда называют сходимостью алгоритма. 6. Алгоритм предполагает наличие механизма реализации, который по описанию алгоритма порождает процесс вычисления на основе исходных данных. Предполагается, что описание алгоритма и механизм его реализации конечны. Можно заметить аналогию с вычислительными машинами. Требование 1 соответствует цифровой природе ЭВМ, требование 2 — памяти ЭВМ, требование 3 — программе машины, требование 4 — 104
ее логической природе, требования 5, 6 — вычислительному устройству и его возможностям. Имеются также некоторые черты неформального понятия алгоритма, относительно которых не достигнуто окончательного соглашения. Эти черты сформулируем в виде вопросов и ответов. 7. Следует ли фиксировать конечную границу для размера входных данных? 8. Следует ли фиксировать конечную границу для числа элементарных шагов? 9. Следует ли фиксировать конечную границу для размера памяти? 10. Следует ли ограничить число шагов вычисления? На все эти вопросы далее принимается ответ «НЕТ», хотя возможны и другие варианты ответов, поскольку у физически существующих ЭВМ соответствующие размеры ограничены. Однако теория, изучающая алгоритмические вычисления, осуществимые в принципе, не должна считаться с такого рода ограничениями, поскольку они преодолимы по крайней мере в принципе (например, вообще говоря, любой фиксированный размер памяти всегда можно увеличить на одну ячейку). Таким образом, уточнение понятия алгоритма связано с уточнением алфавита данных и формы их представления, памяти и размещения в ней данных, элементарных шагов алгоритма и механизма реализации алгоритма. Однако эти понятия сами нуждаются в уточнении. Ясно, что их словесные определения потребуют введения новых понятий, для которых, в свою очередь, снова потребуются уточнения и т.д. Поэтому в теории алгоритмов принят другой подход, основанный на конкретной алгоритмической модели, в которой все сформулированные требования выполняются очевидным образом. При этом используемые алгоритмические модели универсальны, т.е. моделируют любые другие разумные алгоритмические модели, что позволяет снять возможное возражение против такого подхода: не приводит ли жесткая фиксация алгоритмической модели к потере общности формализации алгоритма? Поэтому данные алгоритмические модели отождествляются с формальным понятием алгоритма. В дальнейшем будут рассмотрены основные типы алгоритмических моделей, различающиеся исходными трактовками, что такое алгоритм. 105
Первый тип трактует алгоритм как некоторое детерминированное устройство, способное выполнять в каждый момент лишь строго фиксированное множество операций. Основной теоретической моделью такого типа является машина Тьюринга, предложенная им в 30-х годах XX века и оказавшая существенное влияние на понимание логической природы разрабатываемых ЭВМ. Другой теоретической моделью данного типа является машина произвольного доступа (МПД), введенная достаточно недавно (в 70-х годах) с целью моделирования реальных вычислительных машин и получения оценок сложности вычислений. Второй тип связывает понятие алгоритма с традиционным представлением — процедурами вычисления значений числовых функций. Основной теоретической моделью этого типа являются рекурсивные функции — исторически первая формализация понятия алгоритма. Третий тип алгоритмических моделей — это преобразования слов в произвольных алфавитах, в которых операциями являются замены кусков слов другим словом. Основной теоретической моделью этого типа являются нормальные алгоритмы Маркова. Теория алгоритмов оказала существенное влияние на развитие ЭВМ и практику программирования. В теории алгоритмов были предугаданы основные концепции, заложенные в аппаратуру и языки программирования ЭВМ. Упоминаемые выше главные алгоритмические модели математически эквивалентны, но на практике они существенно различаются сложностными эффектами, возникающими при реализации алгоритмов, и породили разные направления в программировании. Так, микропрограммирование строится на идеях машин Тьюринга; структурное программирование заимствовало свои конструкции из теории рекурсивных функций; языки символьной обработки информации (РЕФАЛ, ПРОЛОГ) берут начало от нормальных алгоритмов Маркова и систем Поста. Авторы обзора1 основных достижений теории алгоритмов пишут: «Алгоритмические концепции играют в процессе обучения и воспитания современного человека фундаментальную роль, сравнимую лишь с ролью письменности». 1
Успенский В.А., Семенов А.Л. Теория алгоритмов: основные открытия и приложения. М., 1987. С.230. 106
11.2. Машина Тьюринга и функции, вычислимые по Тьюрингу Опишем алгоритмическую модель, предложенную А. Тьюрингом в 30-х годах прошлого столетия и оказавшую влияние на разработку ЭВМ. Машина Тьюринга состоит из следующих элементов: 1) ленты, разбитой на ячейки и бесконечной в обе стороны. В каждой ячейке может быть записан один из символов конечного алфавита A a0 , a1 ,, am , называемого внешним алфавитом. Условимся считать, что символ a0 является пустым символом (также обозначаемым ^); 2) управляющего устройства, которое может находиться в одном из конечного числа внутренних состояний Q q0 , q1 ,, qn . Число элементов в Q характеризует объем внутренней памяти машины. В множестве Q выделены два специальные состояния: q 0 и q1 , называемые заключительным и начальным состояниями соответственно. Машина начинает работу в состоянии q1 , попав в состояние q 0 , машина всегда останавливается; 3) считывающей/пишущей головки, которая может перемещаться вдоль ленты и в каждый момент времени обозревает (считывает) одну из ячеек ленты. Функционирование машины Тьюринга осуществляется в дискретные моменты времени t 0, 1, 2, ... и заключается в следующем. В зависимости от внутреннего состояния машины и считываемого символа на ленте машина Тьюринга: а) записывает в эту ячейку символ внешнего алфавита; б) сдвигает считывающую головку на один шаг влево или один шаг вправо или оставляет ее на месте; с) переходит в новое внутреннее состояние. Таким образом, работа машины определяется системой команд вида qi a j qk al d , (11.1) где qi — внутреннее состояние машины; a j — считываемый символ; q k — новое внутреннее состояние; qi — новый записывае107
мый символ; d — направление движения головки, обозначаемой одним из символов L (влево), R (вправо), Е (на месте). Предполагается, что для каждой пары qi a j , где i 1, n ,
j 0, m , имеется точно одна команда вида (11.1). Множество этих команд называется программой машины и, значит, в программе имеется n(m + 1) команд1. Работа машины заключается в изменении конфигураций. Конфигурация представляет собой совокупность внутреннего состояния, состояния ленты (т.е. размещения букв внешнего алфавита по ячейкам или слова, записанного на ленте), положения головки на ленте. Предположим, что в начальный момент времени на ленте все ячейки, кроме конечного их числа, содержат пустой символ. Следовательно, и в любой другой момент времени лента будет иметь лишь конечное число ячеек, содержащих непустые символы. Активной зоной конфигурации назовем минимальную связную часть ленты, содержащую обозреваемую ячейку, а также все ячейки, в которых записаны непустые символы. Конфигурацию можно представить в виде машинного слова в алфавите A Q вида 1qi 2 , где qi — внутреннее состояние, 1 — слово из символов алфавита А, находящееся в левой части активной зоны от считывающей головки, 2 — слово из считываемого символа и символов алфавита А, находящегося в правой части активной зоны от считывающей головки. Конфигурация К называется заключительной, если qi q0 и начальной, если qi q1 . Условимся, что стандартная начальная конфигурация имеет вид q1 , а стандартная заключительная конфигурация имеет вид q0 . Конфигурацию в момент времени t обозначим K t . Машина реализует процесс изменения конфигураций в следующем смысле. Если K 0 q1 и ai , ai A , то в программе машины имеется точно одна команда вида q1ai qk al d . Тогда следующая конфигурация K1 определяется так: K1 qk al , если d = E; 1
Часто программу для машины Тьюринга организовывают в виде таблицы. 108
K1 al qk , если d = R; K1 qk a0 al , если d = L. Это обстоятельство записываем в виде: K 0 K1 . Если теперь конфигурация K1 не является заключительной, то в соответствии с системой команд, аналогично предыдущему, определима однозначно следующая конфигурация K 2 , т.е. K1 K 2 . Таким образом, начальная конфигурация K 0 порождает последовательность конфигураций K 0 K1 K t Если последовательность конечна, т.е. обрывается в заключительной конфигурации, то говорят, что машина применима к конфигурации K 0 , в противном случае говорят, что машина неприменима к K 0 . Если машина применима к конфигурации K 0 q1 и K t q0 — заключительная конфигурация, то слово объявляется результатом работы машины на слове . Таким образом, машине Тьюринга соответствует частичная словарная функция с областью определения и областью значения, являющейся конечными словами в алфавите А, которая каждому такому слову ставит в соответствие результат применения машины к данному слову. Потребуем, чтобы заключительные конфигурации машины находились в стандартной форме. Этого всегда можно добиться, добавляя к машине Т два новых состояния q и q и команды:
q0 ai q ai L , i 0, m ;
q ai q ai L , i 1, m ; q a0 q a0 R . При этом состояние q объявим заключительным. Полученная машина T эквивалентна машине Т в следующем смысле: а) обе машины применимы к одним и тем же начальным конфигурациям; б) результаты применения обеих машин совпадают; 109
с) заключительные конфигурации у машины T находятся в стандартной форме. Определим теперь вычисление функций на машине Тьюринга. Будем рассматривать словарные частичные1 функции f типа f : A* A* , где A* — множество всех слов конечной длины в алфавите А. Говорят, что машина Тьюринга Т правильно вычисляет частич-
ную функцию f для любого A* при условии: если f определено и f , то машина Т применима к начальной конфигурации q1 , и заключительной конфигурацией является K t q0 ; если f не определено, то машина Т неприменима к начальной конфигурации q1 . Функция f называется правильно вычислимой по Тьюрингу, если существует машина Тьюринга Т, которая ее правильно вычисляет. Аналогичные определения могут быть сделаны и для функций нескольких переменных. Для этого достаточно множество слов, являющихся аргументами, записать в виде одного слова, введя знак-разделитель. Ограничимся соответствующим определением для числовых функций. Рассмотрим частичную функцию f x1 , xn от n переменных, аргументы которой и ее значения принадлежат множеству N 0 0,1,2, . Будем считать, что алфавит А машины Т содержит элемент 1. Условимся, произвольное число x N 0 представлять в виде слова 1x 1 11 (x + 1 раз), чтобы запись нуля была непустой. Будем говорить, что машина Тьюринга Т правильно вычисляет функцию f x1 , xn , если кон1 *1 1 * *1 1 она переводит в конфигурацию фигурацию q11 x1 1
1
x2 1
xn 1
Частичная функция определена, вообще говоря, не для всех значений аргумента. В строгом смысле частичное отображение f : A B является произвольным подмножеством A B . Частичная функция — это однозначное частичное отображение. 110
q0
1 1
f x1 ,, xb 1
, если значение
f x1 , xn определено, и Т не-
применима, если значение f x1 , xn не определено. Здесь * — символ-разделитель из А. Класс функций, вычислимых по Тьюрингу обозначим через Т. Рассмотрим несколько примеров на построение машин Тьюринга. 1. Пусть A a0 ^ , a1 1, Q q0 , q1 , q2 . Программа машины T1 : q1 ^ q21E ;
q11 q11R ;
q21 q21L ;
q 2 ^ q0 ^ R . Пусть K 0 q11x 1 . Тогда T1 правильно вычисляет функцию f x x 1 , x N 0 . 2. Пусть A ^ , 1, Q q0 , q1 , q2 . Программа машины T1 :
q1 ^ q1 ^ R ; q11 q11R ;
q21 q2 ^ R ; q2 ^ q01E . Пусть K 0 q11x 1 . Тогда T2 правильно вычисляет функцию f x 0 , x N 0 . 3. Пусть A ^ , 1,*, Q q0 , q1 , q2 , q3 , q4 . Программа машины T3 : q11 q2 ^ R ;
q21 q21R ; q2 * q21R ;
q2 ^ q01E ; 111
q31 q4 ^ L ; q 4 ^ q0 ^ R ;
q2 ^ q01E . Пусть K 0 q11x 1 *1 y 1 . Тогда T3 правильно вычисляет функцию f x, y x y , x, y N 0 . Прямое построение машин Тьюринга для решения даже простых задач может оказаться затруднительным. Однако существуют приемы, которые облегчают данный процесс, если использовать способы сочетания программ нескольких машин в результирующие программы. Дадим некоторое представление об этих приемах, что позволит говорить о существовании тех или иных машин, на деталях же построения конкретных программ останавливаться не будем. Суперпозиция машин. Пусть даны две машины Тьюринга T1 и T3 , которые вычисляют, соответственно, словарные функции f и f в одном и том же алфавите. Тогда существует машина Тьюринга Т, которая вычисляет функцию f f 2 f1 . При этом для любого слова функция f определена в том и только в том случае, когда f определена и f 2 f1 определена. Программа машины Т строится так. Состояния машины T3 переобозначаем так, чтобы они отличались от состояний машины T1 . Начальное состояние q11 машины T1 объявляем начальным q1 для машины Т, заключительное состояние q02 машины T3 объявляем заключительным q0 для машины Т. Заключительное состояние q02
машины T1 отождествляем с начальным состоянием q02 машины T2. Полученные команды для обеих машин объединяем в одну программу. Рассмотрим начальную конфигурацию q1 . Поскольку
q1 q11 — начальное состояние машины T1, то вначале Т работает как машина T1, и если T1 применима к q1 , то на некотором шаге 112
будет получена конфигурация q01 f1 , но q1 q11 — начальное состояние для T2, и теперь Т действует как машина T2. Если T2
применима к q01 f1 , то на некотором шаге будет получена конфигурация f 2 f1 , которая является заключительной для Т, так как q02 q0 . Если T1 неприменима к q1 или T2 неприменима к
q01 f1 , то Т неприменима к q1 . Машина Т называется суперпозицией машин T1 и T2 и обозначается T2 T1 . Схематически суперпозиция изображается так: f1 f 2 f1 . T1
T2
Соединение машин. Пусть даны машины Тьюринга T1 и T2, вычисляющие словарные функции f и f соответственно. Тогда существует машина Т, которая начальную конфигурацию q1 переводит в заключительную q0 f1 * f 2 , если f и f определены, и неприменима в противном случае. Здесь * — новый символ, не входящий в алфавиты машин T1 и T2. Машина Т называется соединением машин и обозначается T1* T2. Существование машины Т вытекает из следующих неформально описываемых конструкций. Лента машины Т является двухэтажной. В качеa стве внешнего алфавита Т берутся двухэтажные буквы , где a, b b — буквы алфавитов T1 и T2. Каждой букве a ставится в соответ^ ствие двухэтажная буква . Слову ai1 ,, aik ставится в соa ^ ^ . Машина Т будет ответствие двухэтажное слово aik ai1 работать так (существование машин Тьюринга для реализации каждого шага ясно):
113
^ ai 1
^ a i1 ai aik 1
aik a i1 aik
aik f1
f 2 ^ ^ . f1 f1 * f 2
Ветвление машин. Пусть даны машины Тьюринга T1 и T2, вычисляющие словарные функции f и f соответственно, заданные в одном алфавите. Тогда существует машина Тьюринга Т, которая начальную конфигурацию q1 * , где 0,1 , переводит в заключительную q0 f1 , если = 0 и в q0 f 2 , если = 1. Машина Т называется разветвлением машин T1 и T2 и обозначается T1 T2. Схематически разветвление представляется так: *
f1
0
f T1 T2 1 2
.
Существование машины Т вытекает из следующих конструкций.
Пусть q11 и q12 — начальные состояния машин T1 и T2 соответственно. Считаем, что множества внутренних состояний машин не пересекаются. Объединим программы машин T1 и T2, добавим новое начальное состояние q1 и добавим команды:
q1 0 q11 ^ R ;
q11 * q11 ^ R ;
q11 q12 ^ R ; q12* q12 ^ R . Теперь заключительные состояния q01 и q02 машин T1 и T2 объединим, а полученное состояние q 0 будем считать заключительным для Т. Если q1 * — начальная конфигурация, то Т через 114
2 шага перейдет в конфигурацию q11 , если = 0, и в конфигурацию q12 , если = 1, а затем будет работать как T1 или T2 соответ-
ственно. Реализация цикла. Важным приемом в программировании является разбиение решаемой задачи на циклы. После выполнения каждого цикла проверяется выполнимость некоторого условия. Если условие выполнено, то выдается результат, если нет, то цикл повторяется. Точнее, процедура задается так. Пусть имеем словарные функции f и f и некоторый предикат Ф на словах (его значения обозначим 0,1). Для произвольного слова проверяется — верно ли Ф() = 1, если да, то выдается ответ f . Если Ф() = 0, то вычисляется f 2 . Затем проверяется — верно ли 1 , если да, то выдается ответ f . Если 0 , то вычисляется f 2 и т.д. Существует машина Тьюринга Т, реализующая данную процедуру. Пусть существуют машины Тьюринга для вычисления функций f и f и предиката Ф. Обозначим их T1, T2 и T соответственно. Пусть T0 — машина, которая оставляет всякое слово без изменения. Машина Т строится в соответствии со схемой: f1 1 * T1 T2 T *T0 f 2 0
Пояснение: Заключительные состояния q01 и q02 машин T1 и
T2 не объединяются, а считаются различными. Состояние q01 объ-
является заключительным для Т, а q02 отождествляется с начальным состоянием q1 для Т. Заключительное состояние для машины T *T0 объявляется начальным для T1 T2. Из изложенного следует, что если T1 T2 работает как T1, то полученное ею значение является выходом Т, если же T1 T2 работает как T2, то полученное 115
ею значение снова подается на вход машины Т. Используя данный прием, можно построить машину Тьюринга для перевода произn+1 вольного числа n 1, заданного в унарной записи, т.е. в виде 1 , в его двоичную запись, начинающуюся с 1. Входной алфавит машины есть A ^ , 1,*. Вначале стирается одна палочка, затем работа осуществляется с циклами 1 m . К концу каждого цикла машина находится в конфигурации q 11 t | || . двоичная за n пись числа τ
В течение цикла стирается одна палочка и к числу – 1 в двоичной записи прибавляется 1. Формальное описание машины Тьюринга, однако, требует большого числа технических деталей, и поэтому мы их опускаем. Таким образом, язык тьюрингова программирования содержит основные операторы программирования на алгоритмических языках и позволяет устраивать последовательное выполнение программ, параллельное их соединение, использовать условные переходы («если Ф, выполнить f1, иначе f2»), реализовывать цикл («пока Ф, выполнять f1, иначе f2»). Это является основанием для предположения о том, что для всех процедур, претендующих называться алгоритмическими, существует (при подходящем кодировании) реализующая их машина Тьюринга. Данное предположение носит название тезиса Тьюринга. Данный тезис доказать нельзя, поскольку здесь используется интуитивное понятие алгоритма. Подтверждением тезису является математическая практика, а также то, что описание алгоритма в любой другой алгоритмической модели может быть сведено к описанию его в виде машины Тьюринга. Однако принятие тезиса Тьюринга позволяет истолковывать утверждения о несуществовании машин Тьюринга для решения конкретных задач как утверждения о несуществовании алгоритмов вообще.
116
11.3. Машины произвольного доступа и вычислимые функции Опишем другую алгоритмическую модель, представляющую собой идеализированную ЭВМ и предложенную в 70-х годах XX века с целью моделирования реальных вычислительных машин и анализа сложности вычислений. Машина произвольного доступа (МПД) состоит из бесконечного числа регистров R1, R2, …, в каждом из которых может быть записано натуральное число из N 0 . Пусть rn есть число, записанное в регистре Rn , n N . Состоянием машины или конфигурацией назовем последовательность чисел r1 , r2 , ... . Функционирование машины заключается в изменении конфигураций путем выполнения команд в порядке их написания. Машина имеет следующие типы команд. Команды обнуления. Для всякого n N имеется команда Z n . Действие команды Z n заключается в замене содержимого регистра Rn на 0. Содержимое других регистров не меняется. Обозначение действия Z n : rn := 0. Команды прибавления единицы. Для всякого n N имеется команда S n . Действие команды S n заключается в увеличении содержимого регистра Rn на 1. Содержимое других регистров не меняется. Обозначение действия S n : rn := rn + 1. Команды переадресации. Для всех m, n N имеется команда T m, n . Действие команды T m, n заключается в замене содержимого регистра Rn числом rm — хранящимся в регистре Rm . Содержимое других регистров не меняется (включая и Rm ). Обозначение действия T m, n : rn := rm или rm Rn . Команды условного перехода. Для всяких m, n, q N имеется команда J m, n, q . Действие этой команды заключается в: 117
сравнении содержимого регистров Rn и Rm , затем: а) если rm = rn , то МПД переходит к выполнению команды с номером (идентификатором) q в списке команд; b) если rm rn , то МПД переходит к выполнению следующей команды в списке команд. Конечная, упорядоченная последовательность команд данных типов составляет программу МПД. Пусть зафиксирована начальная конфигурация K 0 a1 , a2 ,... чисел и программа P I1I 2 ...I s . Тогда однозначно определена последовательность конфигураций K 0 , K1 ,... , где K1 есть конфигурация, полученная из конфигурации K 0 применением команды I1 . Пусть на некотором шаге выполнена команда I t и получена конфигурация K t . Тогда, если I t не есть команда условного перехода, то следующая конфигурация K t 1 есть конфигурация, полученная из K t применением команды I t 1 . Если I t есть команда условного перехода, т.е. It = J(m, n, q), то K t 1 получается из K t применением команды I q , если rm = rn в конфигурации K t и команды
I t 1 , если rm rn . Последовательность конфигураций будет обозначаться также P(a1, a2, …) или PK 0 и называться вычислением. Вычисление (работа машины) останавливается, если: выполнена последняя команда, т.е. t = s и I t не есть команда условного перехода; если It = J(m, n, q), rm = rn в конфигурации K t и q > s; если It = J(m, n, q), rm rn в конфигурации K t и t = s. Если вычисление остановилось, то последовательность r1 , r2 ,... содержимого регистров R1 , R2 , называется заключительной конфигурацией. Если последовательность r1 , r2 ,... конечна, то говорим, что МПД применима к начальной конфигурации K 0 a1 , a2 ,... и пишем P(a1, a2, …) или PK 0 . В противном случае говорим, что МПД неприменима к K 0 a1 , a2 ,... и пишем P(a1, a2, …) или PK 0 .
118
Будем рассматривать только такие начальные конфигурации, в которых имеется конечное число элементов, отличных от нуля. Будем писать a1 , a2 ,, an вместо a1 , a2 ,, an ,0, для таких конфигураций. Ясно, что любого t конфигурация K t будет содержать конечное число отличных от нуля элементов, если этим свойством обладает конфигурация K 0 . Теперь условимся, что понимать под вычислением функций на МПД. Рассмотрим частичные функции f типа f : N 0n N 0 . Пусть P I1I 2 ...I s — фиксированная программа. Пусть a1 , ..., an , b N 0 . Будем говорить, что вычисление дает результат b, если Pa1 ,, an и в заключительной конфигурации r1 b . Обозна-
чение: Pa1 ,, an b . Будем говорить, что программа Р вычисляет функцию f, если для любых a1 , ..., an , b N 0 выполнимо Pa1 , , a n b f определена на a1 , , a n и f a1 , , a n b . Назовем функцию f вычислимой (на МПД), если существует программа Р, которая вычисляет f. Класс вычислимых (на МПД) функций обозначим Е. Заметим, что любая программа Р для любого n 1 на начальных конфигурациях вида K 0 a1 , a2 ,, an ,0, определяет n-
местную частичную функцию f Pn x1 ,, xn , такую, что для всех a1 ,...,an N 0 b, если Pa1 , , a n и Pa1 , , a n b; f Pn a1 , , a n не определена, если Pa1 , , a n . Ясно, что разные программы могут вычислять одну и ту же функцию. Распространим понятие алгоритмической вычислимости на пре-
дикаты, заданные на множестве N 0n . Пусть x1 ,, xn — произвольный такой предикат. Определим характеристическую функцию предиката соотношением: 1, если x1 , , x n и " истина"; x1 , , x n . 0, если x1 , , x n л " ложь". 119
Будем называть предикат разрешимым, если его характеристическая функция вычислима, и не разрешимым в противном случае. Это понятие соответствует вопросу о наличии алгоритма для проверки свойства, определяемого предикатом. Теперь распространим понятие вычислимости на функции, отличные от рассматриваемого типа. Пусть D — некоторое множество, и f : D n D — функция от n переменных. Зафиксируем эффективное кодирование множества D натуральными числами N 0 , т.е. зададим инъективную функцию
: D N 0 . Пусть 1 — ее обратная. Тогда для функции f : Dn D
можно
однозначно
определить
f * : N 0n N 0 , где f * f 1 или
функцию
f * a1 ,...,an f 1 a1 ,..., 1 an ,
для любых a1 ,...,an N 0 . Будем называть функцию f вычислимой тогда и только тогда, когда функция f* вычислима. Пример 11.1. Кодирование множества целых чисел Z. Пусть
2 z, если z 0; z 2 z 1, если z 0; 1 2 m, если m четно; z 1 2 m 1, если m нечетно. 1
Таким образом, можно считать определенным понятие вычислимости целочисленных функций. Позднее будут рассмотрены эффективные кодирования и других областей. Рассмотрим примеры вычислимых функций (на МПД). а) Функция f(x, y) = x + y. Эта функция может быть вычислена следующей программой при начальной конфигурации (x, y, 0, 0, …). P = I1 I2 I3 I4, где I1 = J(3, 2, 5), I2 = S(1), I3 = S(3), I4 = J(1, 1, 1). Данная программа прибавляет 1 к x до тех пор, пока r3 не станет равным y. 120
x / 2, если x четное; b) Функция f x неопределена, если x нечетное. Эта функция может быть вычислена программой Р = I1 I2 I3 I4 I5 I6, где I1 = J(1, 2, 6), I2 = S(3), I3 = S(2), I4 = S(2), I5 = J(1, 1, 1), I6 = T(3, 1). Данная программа прибавляет 1 к r3 и 2 к r2 до тех пор, пока r2 не станет равным x, тогда r3 даст результат. Поскольку доказательства вычислимости конкретных функций связаны с предъявлением конкретных программ, их вычисляющих, то следует ввести некоторые соглашения о составлении и записи программ. Аналогично композиции машин Тьюринга можно ввести композицию программ МПД. Пусть P I1I 2 ...I s . Будем говорить, что Р имеет стандартный вид, если для всякой команды условного перехода J(m, n, q) выполнимо q s 1 . Две программы Р и P назовем эквивалентными, если они определяют одни и те же n-местные функции, т.е.
f Pn f Pn для всех n 1 . Утверждение 11.2. Для всякой программы Р существует эквивалентная ей программа стандартного вида P . Доказательство. Пусть P I1I 2 ...I s . Тогда определим
P I1 I 2 ...I s где для любого k 1, k I k , если I k не есть программа условного перехода; I k I k , если I k J m, n, q и q s 1; . J m, n, s 1, если I J m, n, q и q s 1. k Ясно, что P удовлетворяет нужным требованиям, что требовалось доказать. Пусть теперь даны две программы P и Q стандартного вида. Образуем программу PQ I1I 2 ...I s I s1 I st (где P I1I 2 ...I s , Q I s 1...I s t ) с учетом нумерации, т.е. команды J(m, n, q) заменены на J(m, n, s + q). Тогда результат действия программы PQ совпадает с результатом вычисления по программе P, к которому применена программа Q. 121
Заметим, что для всякой программы Р существует минимальное натуральное число r(P) такое, что для всех m, n N , входящих в команды из Р, т.е. S(n), Z(n), T(m, n), J(m, n, q) выполнено m, n < r(P). Это число иногда называют ширина, ранг программы Р. Смысл числа r(P) состоит в том, что регистры Rt с t > r(P) в ходе вычисления по программе Р не будут менять свое содержание и не будут влиять на содержимое регистров R1 ,, Rr , поэтому их можно использовать для других вычислений. Заметим также, что можно организовывать вычисление, используя программу Р, в случае, когда входы программы находятся в регистрах Ri1 ,, Rin , а результат заносится в Ri . Далее для простоты положим, что регистры Ri1 ,, Rin отличны от R1 ,, Rn . Пусть Р вычисляет f в стандартном понимании вычислимости. Тогда программа T i1 ,1 ... T in , n Z n 1 Pi1 , , in i : ... Z r P P T 1, i будет вычислять f x1 ,, xn и результат запишет в Ri . Данную программу обозначим Pi1 ,, in i . Пример 11.3. Функция f(x, y) = xy — вычислимая функция. Пусть Н — программа, вычисляющая функцию x + y (пример а) ). Тогда f x, y xy вычисляется программой
122
P:
J 2,3, p ) S 3 H 1,4 5 T 5,4 J 1,1,1 I p :T 5,1
x 0 0; Программа Р вычисляет xy по правилу xy x y 1 x. Как следует из изложенного, язык программ МПД содержит основные процедуры языков программирования и позволяет устраивать композицию (соединение) программ и использовать программы в качестве подпрограмм других программ. Это является основанием для предположения о том, что введенный класс вычислимых функций в точности отвечает классу алгоритмически вычислимых функций. Данное предположение называется тезисом Черча (для МПД). Так же как и тезис Тьюринга, данный тезис доказать нельзя, однако принятие его позволяет истолковывать утверждения о несуществовании МПД для решения конкретных задач как утверждения о несуществовании алгоритмов вообще.
123
Л е к ц и я 12 ЧАСТИЧНО РЕКУРСИВНЫЕ ФУНКЦИИ И ИХ ВЫЧИСЛИМОСТЬ Приведем еще один класс вычислимых функций, предложенный в 30-х годах XX века (Гедель, Клини, Черч) в качестве уточнения понятия алгоритма — класс частично рекурсивных функций. Данный класс определяется путем указания конкретных исходных функций и фиксированного множества операций получения новых функций из заданных. Ниже рассматриваются функции типа f : N 0n N 0 . В качестве базисных функций берутся следующие: нуль-функция: ox 0, x N 0 ; функция следования: sx x 1, x N 0 ; функции выбора аргументов: n x1,, xn xm , n N , 1 m n ; Im
допустимыми операциями над функциями являются операции суперпозиции (подстановки), рекурсии и минимизации. Операция суперпозиции. Пусть даны n-местная функция g и n функций f1 ,, f n . Считаем, что функции f1 ,, f n зависят от одних и тех же переменных x1 ,, xm . Это можно сделать путем введения фиктивных переменных. Суперпозицией (подстановкой) функций g и f1 ,, f n называется функция
hx1 ,, xm g f1 x1 ,, xm ,, f n x1 ,, xm . Если среди заданных функций имеются частичные, то и функция h будет частичной. Функция h на наборе переменных x1 , , xm определена тогда и только тогда, когда определены все функции f1 x1 ,, xm ,, f n x1 ,, xm и функция g определена на наборе
124
f1 x1 ,, xm ,, f n x1 ,, xm . Операцию суперпозиции обозначают h S g , f1 ,, f n . Операция рекурсии (точнее: примитивной рекурсии). Пусть заданы n-местная функция g x1 ,, xn и (n + 2)-местная функция hx1 ,, xn , y, z . Определим (n + 1)-местную функцию f индуктивным образом с помощью соотношений: f x1 ,, xn ,0 g x1 ,, xn ; f x1 ,, xn , y 1 hx1 ,, xn , y, f x1 ,, xn , y .
Ясно, что данные соотношения однозначно определяют функцию f. Если функции g и h частичные, то f x1 ,, xn , y 1 считается определенной в том и только в том случае, когда определены f x1 ,, xn , y и hx1 ,, xn , y, t при t f x1 ,, xn , y . Значит, если f x1 ,, xn , y0 не определено, то и f x1 ,, xn , y не определено при y y0 . Про функцию f говорят, что она получена рекурсией из функций g и h и обозначают f = R(g, h). Операция минимизации. Пусть задана n-местная функция g x1 ,, xn 1 , y . Зафиксируем набор x1 ,, xn 1 , xn и рассмотрим уравнение относительно y: g x1 ,, xn 1 , y xn . Будем решать данное уравнение, вычисляя последовательно g x1 ,, xn 1 ,0 , g x1 ,, xn 1 ,1 , g x1 ,, xn 1 ,2 , …, и сравнивая с xn . Наименьшее y, для которого выполнено исходное уравнение обозначим через y g x1 ,..., xn 1 , y xn . При этом считаем, что y определено, если g x1 ,, xn 1 , z определено при всех z y . В противном случае считаем, что y не определено. Значение y есть функция f от переменных x1 ,, xn , про которую говорят, что она получена из функции g операцией минимизации и обозначают f M y g . Заметим, что определенные выше операции S и R, будучи примененными к всюду определенным функциям, дают всюду определенные функции. Операция М может давать частичные функции даже при применении к всюду определенным функциям. Пример 12.1. y x2 y x1 x1 x2 . Здесь g x2 , y x2 y всюду определена, но x1 x2 определена только при x1 x2 . 125
Дадим теперь основное определение данного раздела. Определение 12.2. Функция f x1 ,, xn называется частично рекурсивной, если она может быть получена из базисных функций n x1,..., xn применением конечного числа раз операций ox , sx , I m суперпозиции, рекурсии и минимизации. Иногда частично рекурсивные функции называют функциями, вычислимыми по Черчу. Всюду определенная частично рекурсивная функция называется общерекурсивной. Если рассматривать тот же базис функций, но в качестве допустимых операций брать операции суперпозиции и рекурсии, то получаемые функции называются примитивнорекурсивными. Обозначим: Ч — класс частично рекурсивных функций, Ч0 — класс общерекурсивных функций, Чпр — класс примитивнорекурсивных функций. Класс частично рекурсивных функций — одно из главных понятий теории алгоритмов. Это объясняется тем, что какие бы классы точно очерченных «алгоритмов» до сих пор не рассматривались, во всех случаях оказывалось, что соответствующие числовые функции, вычислимые посредством алгоритмов этих классов, были частично рекурсивными. Поэтому общепринятой является гипотеза, формулируемая как Тезис Черча (для частично рекурсивных функций). Класс алгоритмически вычислимых функций совпадает с классом всех частично рекурсивных функций. Принятие данного тезиса позволяет истолковывать доказательство, что некоторая функция не является частично рекурсивной, как доказательство отсутствия алгоритма вычисления ее значений. Сделаем одно замечание. Пусть необходимо доказать, что конкретная функция вычислима. Это можно сделать следующими способами: 1) написать программу машины Тьюринга или МПД, вычисляющую f, либо показать, что f принадлежит классу функций, вычислимость которых доказана; 2) написать рекурсивную схему для f, показывающую, что f — частично рекурсивна; 3) дать неформальное (но достаточно точное) описание алгоритма, вычисляющего f, и затем сослаться на тезис Черча. Мы будем пользоваться способом 3 как строгим методом доказательства, основанным на тезисе Черча. 126
Приведем примеры частично рекурсивных функций и установим частичную рекурсивность основных числовых функций, используемых в арифметике и анализе. 1. Функции-константы. f x m sssox . 2. Функция f x, y x y . Имеем x 0 x I12 x, y , x y 1 x y 1 . Это есть рекурсия с помощью функций g x x и hx, y, z sz . 3. Функция f x, y x y . Имеем x 0 0 , x y 1 xy x . Это есть рекурсия с помощью функций g x ox , hx, y, z x z . 4. Функция f x, y x y . Имеем x 0 1 , x y 1 x x y . Это есть рекурсия с помощью функций g x sox , hx, y, z x z . 0, если x 0; 5. Функция sg x Имеем sg 0 0 , sg x 1 1 . 1, если x 0. Это рекурсия, в которой g ox , h sox .
1, если x 0; 6. Функция sg x Имеем sg 0 1 , sg x 1 0 . 0, если x 0. Это рекурсия, в которой g 1 , h 0 .
0, если x 0; x . 1 Имеем x 1, если x 0. x 1 . 1 x . Это рекурсия, в которой g 0 , h y . 7. Функция
8. Функция
x . y 1 x . 9. Функция
0, если x y; x . y x y, если x y.
Имеем
0 . 1 0,
x .1 x,
y . 1 . Это рекурсия, в которой g x , h z . 1 . x y . Имеем x y x . y y . x . Отметим, что
поскольку функция x y общерекурсивна, то можно заменить определение операции минимизации, рассматривая вместо f x1 ,..., xn y g x1 ,..., xn 1 , y xn функции вида f x1 ,..., xn
hx1 ,..., xn , y g x1 ,..., xn 1 , y xn . Определяемый класс функций при этом будет тем же самым. y hx1 ,..., xn , y 0 , где
127
11. Функция maxx, y . Имеем maxx, y x y x . 10. Функция minx, y . Имеем minx, y x . x . y . .
x 12. Функция — целая часть от деления x на y. По опреде y x лению полагаем x , чтобы фукнция была всюду определена. 0 x Имеем z x . z x 1 . yz 1 0 . Действительно, при y
y = 0 z x . z x 1 yz 1 0 z x . z 0 x . При y 0 существует минимальное z, z x , при котором
x 1 . yz 1 0
или x 1 yz 1 или
x yz 1 , откуда
x z. y 13. Функция resx, y — остаток от деления x на y. Имеем x resx, y x y . y
1, если resx, y 0; 14. Функция d x, y 0, если resx, y 0. Имеем d x, y sg resx, y .
15. Двоичная степень числа x. exp2 x t , если 2t x , но не вы-
полняется 2t 1 x . Имеем exp2 x t d x,2t 1 0 и замечаем,
что функция 2t 1 — общерекурсивна. 16. Функция, отличная от 0 в конечном числе точек. Если f x 0 в точках x1 ,, xk , причем f x1 y1 ,, f xk yk , то имеем f x y1 sg x x1 y2 sg x x2 yk sg x xk . Аналогично можно доказать (примитивную) рекурсивность функций: x число простых чисел, не превосходящих x;
q x x
x 2 — квадратичный остаток числа x; 128
px p x — x 1 -е простое число ( p0 2 , p1 3 , p0 2 , p3 , и т.д.). Покажем теперь вычислимость на МПД частично рекурсивных функций. n Базисные функции o(n), s(n), I m x1 ,..., xn вычислимы на МПД командами Z(n), S(n), T(m, 1). Вычислимость суперпозиции Теорема 12.3. Пусть функции g y1 ,..., y n , f1 x1 ,..., xm , …, f n x1 ,..., xm вычислимы на МПД. Тогда вычислима и функция hx1 ,..., xm S g , f1 ,..., f n . Доказательство. Пусть G, F1 ,..., Fn — программы стандартного вида для вычисления функций g y1 ,..., y n , f1 x1 ,..., xm , …, f n x1 ,..., xm соответственно. Напишем программу Н для вычисления h. Положим t maxn, m, r G , r F1 ,...,r Fn . Запомним x1 ,..., xm в регистрах Rt 1,..., Rt m , в регистрах Rt m 1,...,Rt m n запоминаем значения F1 x1 ,..., xm , …, Fn x1 ,..., xm соответственно. Указанные регистры не затрагиваются вычислениями по программам G, F1 ,..., Fn . Теперь дадим программу Р вычисления h:
T 1, t 1
T 2, t 2 … T m, t m
F1 t 1,...,t m t m 1 … Fn t 1,...,t m t m n
Gt m 1,...,t m n 1 .
Ясно: вычисление H x1 ,..., xm останавливается тогда и только тогда, когда заканчиваются вычисления каждой Fi x1 ,..., xm ,
i 1, n и вычисление G f1 x1 ,..., xm ,..., f n x1 ,..., xm , что и требовалось доказать. 129
Следствие 12.4. Пусть f y1 ,..., ym — вычислимая на МПД функция и
xi1 ,..., xi m — последовательность n переменных из
(возможно с повторениями). Тогда функция x1 ,..., xn hx1 ,..., xn f xi1 ,..., xim вычислима. Доказательство. Если то hx1 ,.., xn x x1 ,..., xn , n n f I i x ,..., I i x , и потому функция h — вычислима, что и тре-
1
m
бовалось доказать. Вычислимость рекурсии Теорема 12.5. Пусть функции g x1 ,..., xn , hx1 ,..., xn , y, z вычислимы на МПД. Тогда функция f Rg , h вычислима. Доказательство. Пусть G и Н — программы стандартного вида для вычисления функций g и h. Построим программу F, вычисляющую функцию f Rg , h . По начальной конфигурации x1,..., xn , y,0,... по программе G вычисляется f x1 ,..., xn ,0 g x1 ,..., xn . Теперь, если y 0, то применяем (многократно) программу Н для нахождения f x1 ,..., xn ,1 , f x1 ,..., xn ,2 , …, f x1 ,..., xn , y . Положим m maxn 2, r G , r H . Запоминаем x1 ,..., xn , y в регистрах Rm1 ,..., Rmn , Rmn1 . Номер цикла k, где k = 0, 1, …, y помещаем в Rmn2 . Промежуточное значение f x1 ,..., xn , k помещаем в Rmn2 . Программа F для вычисления f (здесь t =m+n): T(1, m + 1) … T(n + 1, m + n + 1) G[1, 2, …, n m + n + 3] Iq: J(t + 2, t + 1, p) H[m + 1, … m + n, t + 2, t + 3 t + 3] S(t + 2) J(1, 1, q) Ip: T(t + 3, 1) Следовательно, функция f вычислима, что и требовалось доказать. 130
Вычислимость минимизации Теорема 12.6. Пусть функция g x1 ,..., xn1 , y вычислима на МПД. Тогда вычислима и функция f x1 ,..., xn y g x1 ,..., xn1 , y xn .
Доказательство. Пусть G — программа стандартного вида, вычисляющая функцию g. Пусть m maxn 1, r G . Построим программу F для вычисления функции f по следующему алгоритму: вычислять g x1 ,..., xn 1 , y при y = 0, 1, 2, … до тех пор, пока не найдется y, такой, что g x1 ,..., xn 1 , y xn , тогда y будет требуемым выходом. Помещаем x1 ,..., xn , y в регистры Rm1 ,..., Rmn , Rmn1 . Полагаем в начале y = 0. Промежуточное значение g x1 ,..., xn 1 , y помещаем в Rm n 2 . Программа для вычисления f:
T 1, m 1 …
T n, m n Ip:
Gm 1,...,m n 1, m n 1 m n 2 S m n 1
J m n, m n 2, q J 1,1, p Iq:
T m n 1,1
Следовательно, функция f вычислима, что и требовалось доказать. Следствие 12.6. Частично рекурсивные функции вычислимы на МПД, т.е. Ч Е. Покажем теперь частичную рекурсивность вычислимых функций. Теорема 12.7. Всякая вычислимая на МПД функция является частично рекурсивной. 131
Доказательство. Пусть f x1 ,..., xn — вычислимая на МПД функция и пусть P = I1I2…Is — соответствующая программа. Будем называть шагом вычисления выполнение одной команды програм мы. Для произвольных x x1 ,..., xn и t N 0 определим следую щие функции, связанные с вычислением Px : r1 (содержимое R1 ) после t шагов в Px , если Px c x , t не остановилось к этому моменту; r1 (содержимое R1 ), если Px остановилось раньше; номер следующей команды после t шагов в Px , j x , t если Px не остановилось к этому моменту; 0, если Px остановилось после t шагов или раньше . Таким образом, cx,0 x1 , j x,0 1 . Очевидно, что функции cx , t , j x , t всюду определены. Найдем теперь выражение для f x через введенные функции. Если значение f x определено, то Px останавливается после t0 шагов, где t 0 t j x, t 0 , по этому f x cx,t 0 . Если же значение f x не определено, то Px не останавливается, и тогда j x, t 0 для любых t N 0 , по этому t j x, t 0 не определено. Следовательно, во всех случаях t 0 t j x , t 0 . Теперь, если убедиться, что функции cx , t и j x , t частично рекурсивны, то таковой будет и функция f x . Ясно, что существует неформальный алгоритм вычисления значений функций cx , t и j x , t . Для этого нужно по заданным x , t написать последовательность конфигураций K0 K1 … Kt и выписать содержимое регистра R1 и номер выполняемой на шаге t + 1 команды. По тезису Черча функции cx , t и j x , t частично рекурсивны и, значит, функция f x является частично рекурсивной, что и требовалось доказать. Замечание 12.8. Более точный анализ показывает, что функции cx , t и j x , t являются примитивно-рекурсивными. 132
Следствие 12.9. Классы функций Ч и Е совпадают. Рассмотрим теперь вопрос о соотношении введенных классов Чпр, Ч0 и Ч. Поскольку класс Ч содержит частично определенные функции, то ясно, что Ч0 Ч. Кроме того, очевидно, что Чпр Ч0. Вопрос о том, является ли включение Чпр Ч0 собственным решается несколько сложнее. Первый пример общерекурсивной функции, не являющейся примитивно рекурсивной, был дан Аккерманом (1928). Функция Аккермана x, y задается соотношениями:
0, y y 1 ; x 1,0 x,1 ; x 1, y 1 x, x 1, y . Можно доказать, что данные соотношения однозначно определяют функцию x, y . Результаты вычислений убеждают, что имеется алгоритм вычисления функции x, y . В то же время доказывается, что функция x, x не является примитивно рекурсивной, так как растет быстрее, чем любая одноместная примитивно рекурсивная функция. Доказательство, ввиду его громоздкости, опускается1.
1
Мальцев А.И. Алгоритмы и рекурсивные функции. М., 1965. С.105. 133
Л е к ц и я 13 НУМЕРАЦИЯ НАБОРОВ ЧИСЕЛ И СЛОВ В теории алгоритмов получил распространение прием, позволяющий сводить изучение функций от нескольких переменных к изучению функций одной переменной. Он основан на нумерации наборов чисел так, что имеется биективное соответствие между наборами чисел и их номерами, причем функции, определяющие по набору чисел его номер и по номеру сам набор чисел являются общерекурсивными. Рассмотрим сначала множество N 0 N 0 — множество пар натуральных чисел. Рассмотрим следующее упорядочение этих пар, называемой канторовским: (0, 0), (0, 1), (1, 0), (0, 2), (1, 1), (2, 0), … (13.1) Здесь в порядке возрастания n N 0 упорядочиваются пары (x, y) с условием x + y = n в виде последовательности (0, n), (1, n – 1), …, (x, y), …, (n, 0). (13.2) Пусть c(x, y) — номер пары (x, y) в последовательности (13.1), причем считаем c(0, 0) = 0. Если c(x, y) = n, то обозначим через r, l — функции, удовлетворяющие x = l(n), y = r(n) и, следовательно, c(l(n), r(n)) = n. Покажем, что функции c, l, r в явном виде выражаются через обычные арифметические функции. Произвольная пара (x, y) находится на месте x + 1 в последовательности (13.2). Далее, перед последовательностью (13.2) находятся последовательности, отвечающие элементам (x, y) с условием x1 + y1 = t, где t = 0, 1, …, x + y – 1, и каждая из них содержит t + 1 элемент. Следовательно, элемент (x, y) находится в последовательности (13.1) на месте 1 + 2 + … + x + y + x + 1. Поскольку нумерация начинается с нуля, то номер элемента (x, y) в последовательности (13.1) равен cx, y
( x y)(x y 1) ( x y ) 2 3x y . x 2 2 134
(13.3)
Пусть теперь c(x, y) = n и найдем x = l(n) и y = r(n). Из (13.3) следуют равенства: 2n x y 2 3x y ; 8n 1 2 x 2 y 12 8x ; 8n 1 2 x 2 y 32 8 y 8 .
Следовательно, 2 x 2 y 1 8n 1 2 x 2 y 3 или 8n 1 1 x y 2. 2
x y 1
Это означает, что x y 1
8n 1 1 . 2
(13.4)
Теперь, используя (13.3), определяем x: x l n n
. 8n 1 1 8n 1 1 . 2 2
. 1 2
Подставляя найденное значение x в (13.4), получаем y: . 8n 1 1 1 8n 1 1 8n 1 1 . . y r n n 1. 2 2 2 2
Заметим, что важен не сам вид полученных функций c(x, y), r(n), l(n), а важен факт их эффективной вычислимости. Теперь с помощью нумерации пар чисел легко получить нумерацию троек чисел, т.е. элементов множества N 03 . Определим функцию c 3 x, y, z ccx, y , z . Тогда, если c 3 x, y, z n , то z = r(n), y = r(l(n)), x = l(l(n)). Аналогично, для наборов произвольной длины r + 1 полагаем c 1 x1 x1 , c 2 x1 , x2 cx1 , x2 , …, 135
c r 1 x1 , x2 ,.., xr 1 c r cx1 , x2 , x3 ,..., xr 1 …
и по определению называем число c n x1 ,..., xn канторовским но-
мером n-ки x1 ,..., xn . Если c n x1 ,..., xn m , то xn = r(m), xn – 1 = r(l(m)), …, x2 = r(l(…l(m)), x1 = l(l(…l(m)). Теперь, имея нумерацию множеств N 0k (k > 0), можно установить нумерацию множества M N 0 N 02 ... N 0k ... . Положим
для любого n N cx1 ,..., xn c c n x1 ,..., xn , n 1 . Ясно, что с — биективное соответствие между М и N0. Кроме того, если
cx1 ,..., xn m , то c n x1 ,..., xn l m , n r m 1 . Отсюда эффективно определяются x1 ,..., xn . Приведем еще одну нумерацию наборов чисел. Номер пары (x, y) зададим функцией px, y 2 x 2 y 1 . 1 .
Ясно, что это общерекурсивная функция. При этом, если p(x, y) = n, n 1 то выполнено x exp2 n 1 , y . Следовательно, для exp 2 n 11 2 n 1 данной нумерации l n exp2 n 1 , r n . exp 2 n 11 2 Теперь, имея нумерационную функцию для пар чисел, аналогично предыдущему строим нумерационные функции для к-ок чисел и множества наборов M N 0 N 02 ... N 0k ... . Другую нумерацию множества М можно получить так. Пусть x1 ,..., xk 2 x1 2 x1 x2 1 ... 2 x1 ... xk k 1 1.
Ясно, что — вычислима. Чтобы установить вычислимость 1 , заметим, что каждое натуральное число имеет единственное представление в двоичной позиционной записи. Т.е. для любого n можно эффективно и однозначно найти k > 0 и 0 b1 b2 ... bk такое, 136
что n 1 2b1 2b2 ... 2bk . Откуда получаем 1 n x1 ,..., xk , где x1 b1 , xi 1 bi 1 bi 1 (0 < i < k). Рассмотрим теперь вопрос о нумерации слов в некотором алфавите и укажем некоторые из применяемых способов такой нумерации. Пусть A a1 ,..., ar — конечный алфавит и пусть A* — множество всех слов конечной длины в алфавите А, включая и пустое слово ^. Алфавитная нумерация определяется следующим образом:
c(^) = 0, c ai1 ,...ais i s i s 1r ... i1r s 1 . Поскольку при фиксированном r каждое положительное число n однозначно представимо в виде n is is1r ... i1r s1 , (0 < ij < r + 1), то каждое число есть алфавитный номер одного и только одного слова из множества A* . Разложение (16) называется r-ичным разложением числа n с цифрами 1, …, r в отличии от обычного rичного разложения с коэффициентами 0, …, r – 1. Нумерация слов через нумерационные функции. Пусть имеется счетный алфавит A a0 , a1.... Тогда нумерация слов определяется так:
v(^) = 0, v ai1 ,...ais ci1 ,...,is 1, s 1 ,
где функция ci1 ,...,is определена выше. Ясно, что так определенная функция v является биективной и вычислимой. Геделевская нумерация. Пусть имеем счетный алфавит A a0 , a1.... Определим геделевы номера для каждой буквы g ai 2i 3, i N 0 . Теперь для каждого слова P ai0 ai1 ...aik
g a
определим геделев номер g P 2 i0 3 i1 ... pk g aik , где p k — k-е простое число. Кроме того, положим g(^) = 1. При этом геделев номер последовательности слов P0, P1, …, Pk определяется так: ga
2 g P0 3 g P1 ... pk g Pk .
137
Рассмотрим теперь два применения нумерационных функций. Утверждение 13.1. а) Функция f(x, y), отличная от нуля на конечном множестве пар из N 02 , общерекурсивна. Доказательство. Действительно, пусть f 0 на парах чисел x1, y1 ,...,xt , yt и пусть имеет на них значения z1, …, zt. На остальных пара f(x, y) = 0. Положим u1 cx1 , y1 ,...,ut cxt , yt , где c — нумерационная функция Кантора. Определим функцию g так: g ui zi , i 1, t , g(u) = 0 на остальных u N 0 . Было выше показано, что g — общерекурсивна. По построению выполнено f(x, y) = g(c(x, y)) и поэтому f — общерекурсивна. б) Определим сначала понятие совместной рекурсии. В схеме совместной рекурсии функция порождается с помощью нескольких функций. Пусть для определенности даны функции g1 x , g 2 x , h1 x, y, z, t , h2 x, y, z, t , здесь x x1 ,..., xn . Тогда можно опреде лить пару функций f1 x , y и f 2 x, y по рекурсии: f1 x,0 g1 x , f 2 x,0 g 2 x , f1 x, y 1 h1 x , y, f1 x, y , f 2 x, y , f 2 x, y 1 h2 x , y, f1 x, y , f 2 x, y . Утверждение 13.2. Если g1, g2, h1, h2 — общерекурсивные функции, то f1, f2 также общерекурсивны. Доказательство. Определим функцию ux , y c f1 x, y , f 2 x, y , где c — нумерационная функция Кантора. Тогда f1 x, y l ux, y , f 2 x, y r ux, y . Далее имеем ux,0 c f1 x,0, f 2 x,0 cg1 x , g 2 x — частично рекурсивная по условию.
138
имеем:
ux, y 1 c f1 x, y 1, f 2 x, y 1 ch1 x, y, f1 x, y , f 2 x, y , h2 x, y, f1 x, y , f 2 x, y ,
т.е. функция ux, y 1 получается по схеме обычной рекурсии с помощью функций g x cg1 x , g 2 x , hx, y, z ch1 x, y, l z , r z , h2 x, y, l z , r z . Значит функция ux , y — частично рекурсивная, а потому частич но рекурсивны и функции f1 x , y и f 2 x, y , что и требовалось доказать.
139
Л е к ц и я 14 НОРМАЛЬНЫЕ АЛГОРИТМЫ В данной лекции дается представление об одном подходе к уточнению понятия алгоритма, предложенном А.А. Марковым и называемом нормальные алгоритмы (в авторской транскрипции — алгорифмы). Данный подход связывает неформальное понятие эффективности с переработкой слов в некотором конечном алфавите в соответствии с определенными правилами. В качестве элементарного преобразования используется подстановка одного слова вместо другого. Множество таких подстановок определяет схему алгоритма. Правила, определяющие порядок применения подстановок, а также правила останова являются общими для всех нормальных алгоритмов. Дадим формальные определения. Пусть А = {a1, …, an} — алфавит. Если P, Q — слова в алфавите А (возможно, пустые), то выражения P Q P Q называются формулами подстановки в алфавите А (предполагается, что знаки , не входят в алфавит А). При этом формула P Q называется простой, а формула P Q — заключительной. Обозначим P ()Q — любую из этих формул. Произвольная конечная последовательность таких формул называется схемой SN нормального алгоритма N. Значит схема нормального алгоритма имеет вид:
SN :
P1 Q1 P2 Q2 ... Pm Qm
Схема SN определяет следующий алгоритм N, перерабатывающий слова в алфавите А (т.е. вычисляющий словарную функцию на словах в алфавите А). Говорим, что слово Р входит в слово W, если существуют слова V1 и V2 (возможно, пустые) такие, что W = = V1 P V2. Если слово V1 имеет наименьшую длину из всех слов такого вида, то говорят о первом вхождении Р в слово W. 140
Пусть дано произвольное слово К в алфавите А. Возможны следующие случаи: 1) ни одно из слов P1, …, Pm не входит в слово К. В этом случае говорим, что схема SN не применима к К и пишем SN : --|; 2) среди слов P1, …, Pm существует Pi, входящее в К. Пусть t — минимальное число такое, что Pt входит в К, и пусть К = V1 Pt V2, где V1 имеет минимальную длину (т.е. берется первое вхождение Pt в К). Тогда определим слово W = V1 Qt V2. В этом случае говорим, что схема SN применима к К и пишем SN : К W или SN : К W в зависимости от того, применялась простая формула или заключительная соответственно. Теперь пишем SN : К | W, если существует конечная последовательность слов W0, W1, … Wk в алфавите А такая , что К = W0, W = Wk и выполнено SN : W0 1, SN : W1 W2, …, SN : Wk – 1 Wk, либо SN : Wk – 1 Wk. В первом случае пишем также SN : К | W. Говорим, что нормальный алгоритм N со схемой SN вычисляет словарную функцию Fs : A* A*, где А* — множество слов в алфавите А, если для любых слов P, Q A* имеем: либо Fs(P) = Q либо
S N : P | Q и S N : Q ; S N : P | Q.
Работа нормального алгоритма может быть описана так. Если дано слово Р, то находим в схеме алгоритма SN первую формулу Pt ()Qt такую, что Pt входит в Р, и производим замену первого вхождения Pt словом Qt. Пусть W1 — результат этой подстановки. Если применяемая формула Pt ()Qt — заключительная, то работа алгоритма заканчивается, и слово W1 есть результат работы алгоритма. Если применяемая формула Pt Qt — простая, то к слову W1 применяем описанную процедуру. Если на некотором шаге получено слово Wi, к которому не применима схема алгоритма SN (т.е. ни одно из не входит в Pj, j 1, m ), то работа алгоритма закан141
чивается, и Wi есть результат работы алгоритма. Если описанный процесс не заканчивается, то, по определению, алгоритм не применим к слову Р. Словарная функция f в алфавите А (т.е. типа f : A* A*) называется вычислимой по Маркову, если существует схема нормального алгоритма SN в алфавите В А, вычисляющая f, т.е. Fs = f. Класс функций, вычислимых по Маркову, обозначим М. Рассмотрим несколько примеров. a ^ 1) А = {a1, a2}. Схема SN : 1 . Данный алгоритм оставляет a2 a2 пустое слово ^ без изменения и всякое слово Р в алфавите А переводит в слово Q, полученное из Р путем вычеркивания первого вхождения буквы а1. Алгоритм N не применим к словам, не содержащим вхождений буквы а1. 2) А = {a1, …, an}. Схема a1 ^ a 2 ^ SN : . ... a n ^ Данный алгоритм переводит всякое слово Р в алфавите А в пустое слово. 3) А = {1}. Схема SN : ^ 1 . Данный алгоритм переводит всякое слово Р = 1 ...1 в слово Q = 1 ...1 . Если представить натуральное x 1
x
n+1
число n словом 1 , то данный алгоритм вычисляет функцию f(n) = n + 1. 4) A = {a1, …, an}. Схема SN : ^ ^ . Данный алгоритм вычисляет функцию Fs(P) = P, для любого слова Р. Если же взять схему SN : ^^ , то данный алгоритм вычисляет нигде не определенную функцию. 5) A = {a1, …, an}. Если P ai1 ,...,aik , то обращением слова Р назовем слово P 1 aik ,...,ai1 . 142
Рассмотрим алфавит В = А {, } и соответственно схему SN (, — новые буквы): 1. 2. a a, для любых a A 3. 4. ^ 5. ab b a, для любых a, b A 6. ^ . Покажем, что данный алгоритм N осуществляет обращение слов в алфавите А. Пусть P a j0 ,...,a jk — слово в алфавите А. Тогда P P
по 6
по 5
a j1 a j0 ...a jk a j1 a j2 .a j0 a j3 ..a jk
по 5
по 5
a j1 a j2 ...a jk a j0 a j1 a j2 ...a jk a j0 ...
по 6
a j2 a j3 ...a jk a j1 a j0 .
Теперь, повторяя этот процесс, получим: a j k a j k 1 ...a j1 a j 0 a jk a jk 1 ...a j1 a j0
по 6
a jk a jk 1 ...a j1 a j0 a jk a jk 1 ...a j1 a j0
по 4
по 2
a jk a jk 1 ...a j1 a j0
по 3
...
по 2,3,4
a jk a jk 1 ...a j0 .
Для нормальных алгоритмов разработана техника программирования, позволяющая осуществлять операции композиции алгоритмов, реализовывать операторы «если Ф, то выполнить F1, иначе F2 », «пока Ф, выполнять F1, иначе F2». Следовательно, класс функций М достаточно широк. Много конкретных нормальных алгоритмов и соответствующая техника программирования представлены в книге «Теория алгорифмов»1. В связи с этим Марковым А.А. был выдвинут принцип нормализации, который заключается в том, что все алгоритмы исчерпываются нормальными алго1
Марков А.А., Нагорный Н.М. Теория алгорифмов. М., 1984. 143
ритмами или, что то же самое — всякий алгоритм нормализуем. Принятие данного принципа позволяет истолковывать утверждения о несуществовании нормальных алгоритмов для решения конкретных задач как утверждения о несуществовании алгоритмов вообще. Данный принцип эквивалентен тезисам Черча и Тьюринга, поскольку справедлива следующая теорема. Теорема 14.1. Класс функций М, вычислимых по Маркову, совпадает с классом функций Т, вычислимых по Тьюрингу, и, следовательно, с классом частично рекурсивных функций Ч и с классом МПД, вычислимых функций Е. Доказательство совпадения классов М и Ч проводится по той же схеме, что и приведенное выше доказательство совпадения классов Т и Ч1.
1
Полностью доказательство приведено в 5-й главе книги Э. Мендельсона «Введение в математическую логику» (М., 1971). 144
Л е к ц и я 15 НУМЕРАЦИЯ АЛГОРИТМОВ В данной лекции будут приведены эффективные кодирования натуральными числами множества всех алгоритмов для каждой из рассматриваемых моделей алгоритмов: машин Тьюринга, МПДпрограмм, частично рекурсивных функций. Данные результаты относятся к числу фундаментальных, так как они используются для получения многих важных фактов, в частности, для установления невычислимости ряда конкретных функций. 1. Нумерация машин Тьюринга Зафиксируем счетные множества символов {a0, a1, …, ai, …} и {q0, q1, …, qj, …} и будем считать, что внешние алфавиты и алфавиты внутренних состояний всех машин Тьюринга берутся из этих множеств. При этом будем считать, что a0 принадлежит всем внешним алфавитам машин и интерпретируется как пустой символ, а буквы q0, q1 принадлежат всем внутренним алфавитам машин и всегда означают заключительное и начальное состояния соответственно. Опишем теперь единый способ представления информации о машинах с помощью кодирования. Каждому символу из множества {L, R, E, a0, a1, …, ai, …, q0, q1, …, qj, …} поставим в соответствие двоичный набор согласно табл.15.1. Далее, команде I машины Тьюринга Т, имеющей вид qa q’a’d, ставится в соответствие двоичный набор вида Код (I) = Код(q) Код(a) Код(q’) Код(a’) Код(d), в котором коды букв приписаны друг к другу. Пусть машина Т имеет алфавиты A = {a0, a1, …, am} и Q = {q0, q1, …, qn}. Упорядочим команды машины Т в соответствии с лексикографическим порядком левых частей команд: q1, a0, q1, a1, …, q1, am, q2, a0, …, q2, am, …, qn, a0, …, qn, am.
145
Пусть I1, …, In(m+1), — соответствующая последовательность команд. Тогда машине Т поставим в соответствие двоичный набор вида Код(T) = Код(I1) Код(I2)… Код(In(m+1)), полученный приписыванием друг к другу кодов команд. Таблица 15.1
Символы сдвига
Символы алфавита ленты
Символ R L E a0 a1 …
ai …
Символы алфавита состояний
q0 q1 …
qi …
Код 10 100 1000 10000 1000000 … 100…00 … 100000 10000000 … 100…00 …
Число нулей в коде 1 2 3 4 6 … 2i + 4 … 5 7 … 2j + 5 …
Пример 15.1. Пусть дана машина Тьюринга Т. A = {a0, a1} и Q = {q0, q1}: q1a0 q0 a0 E . T: q a1 q0 a1 E Тогда имеем Код(T) = 107104105104103107106105106103. Легко видеть, что машина Т переводит конфигурации q1a1x в конфигурации q0 a1x , и поэтому, представляя натуральное число n как a1n , получаем, что машина Т вычисляет функцию f(x) = x. Ясно, что указанное кодирование является алгоритмической процедурой. Имея код машины, однозначно восстанавливается множество ее команд — для этого надо выделить подслова, начинающиеся с единицы с нулями до следующей единицы. Пятерка таких подслов образует команду. Далее, легко видеть, что имеется 146
алгоритмическая процедура, позволяющая по произвольному слову из 0, 1 выяснять — будет ли это слово служить кодом некоторой машины Тьюринга. Будем теперь рассматривать код машины Тьюринга как двоичную запись натурального числа. Данное число назовем номером машины Тьюринга. Поскольку все коды начинаются с единицы, то разным кодам соответствуют разные числа. Упорядочим машины Тьюринга по возрастанию чисел, представляемых их кодами, и занумеруем их Т0, Т1, …, Тn, … . Номер машины Т в этом упорядочении будем обозначать nT. Указанное упорядочение является эффективным в том смысле, что существует алгоритм, который по n выдает Код(Tn) и существует алгоритм, который, наоборот, по Код(Tn) выдает nT. Если обозначить через fn(x) одноместную функцию, которую вычисляет машина Тьюринга Tn, то в результате получим нумерацию всех одноместных частично рекурсивных функций: f0(x), f1(x), …, fn(x), … Согласно доказанному, каждая одноместная частично рекурсивная функция представлена в этой последовательности. Можно доказать, что каждая такая функция представлена в последовательности (5) бесконечное число раз. Аналогично можно определить нумерацию n-местных функций. 2. Нумерация МПД-программ Приведем аналогичную конструкцию по нумерации МПДпрограмм, которая позволит получить нумерацию МПДвычислимых функций. Сначала определим нумерацию команд. Положим (Z(n)) = 4(n – 1), (S(n)) = 4(n – 1) + 1, (T(m, n)) = 4p(m – 1, n – 1) + 2, (J(m, n, q)) = 4(m, n, q) + 3, где p(x, y) = 2x(2y + 1) – 1, (x, y, z) = p(p(x – 1, y – 1), z – 1).
147
Ясно, что функция эффективно вычислима. Для вычисления x действуем так: Находим числа u, v, такие, что x = 4u + v, где 0 v 4 . Тогда имеем: 1
1 x = Z(u + 1), если v = 0; 1 x = S(u + 1), если v = 1;
1 x = T(l(u) + 1, r(u) + 1), если v = 2; 1 x = J(m, n, q), если v = 3, где (m, n, q) = 1 u .
Следовательно, функция 1 также эффективно вычислима. Пусть теперь дана МПД-программа P = I1. . .Is. Определим ее номер (Р) = ((I1), …, (Is)), где (x1, …, xs) = 2 x1 2 x1 x2 1 2 x1 x2 x3 1 ... 2 x1 ... xs s 1 1 . Ясно, что тем самым определена биекция множества программ в множество натуральных чисел, причем функции и -1 эффективно вычислимы, по программе Р эффективно находится ее номер n = (P), а по номеру n можно эффективно найти программу Р такую, что n = (P). Число (P) называется номером программы Р. Например, если Р = I1I2I3, где I1 = T(3, 1), I2 = S(4), I3 = Z(6), то (T(3, 1)) = 18, (S(4)) = 13, (Z(6)) = 20. Следовательно, (P) = 2 2 2 – 1. Пусть теперь дано n = 4127. Поскольку 4127 = 25 + 212 – 1, то Р = I1I2, где (I1) = 5, (I2) = = 18 – 5 – 1. Следовательно, I1 = S(2), I2 = T(2, 1). Разумеется, существуют и другие способы нумерации программ, -1 для нас важна лишь эффективная вычислимость функций и . Таким образом, получаем эффективную нумерацию МПДпрограмм: P0, P1, P2, …, Pn, … . 18 32 53
Теперь, имея нумерацию МПД-программ, можно занумеровать МПД-вычислимые функции. Для любого a N и n 1 определим f an n-местная функция, вычислимая программой с номером а. 148
Это дает нумерацию n-местных МПД-вычислимых функций f 0n ,
f1n , f 2n , … Например, если а = 4127, то согласно определению имеем:
1 x 1 , n = 1; f 4127
n x ,..., x x 1, n > 1. f 4127 1 n 2
Поскольку для всякой частично рекурсивной функции f n существует вычисляющая ее МПД-программа Р, то f n , где a = (P). Число а называют номером (индексом) функции f n . Приведем одно применение существования нумерации частично рекурсивных функций. Теорема 15.2. Существует всюду определенная функция, не являющаяся частично рекурсивной. Доказательство. Построим всюду определенную функцию , отличающуюся от каждой частично рекурсивной функции f0, f1, …, fn, … в перечислении одноместных частично рекурсивных функций. Полагаем f x 1, если f x x определено; x x 0, в противном случае.
Функция всюду определена и отличается от fn при x = n, n N0. Действительно, если fn(n) определено, то (n) = fn(n) + 1, если fn(n) не определено, то (n) определено и равно 0. Поскольку отличается от fn при всех n N0, то не может находиться в перечислении (10) и, значит, она не может быть частично рекурсивной, что и требовалось доказать. Замечание. 15.3. Приведенный метод рассуждения есть пример диагональной конструкции Кантора, с помощью которой им была доказана несчетность множества действительных чисел. Данным методом можно установить нерекурсивность большого класса функций. 149
Например, функция f x 2 x , если f x x определено; g x x px , в противном случае,
причем p(x) — целочисленный полином является всюду определенной и не частично рекурсивной. Универсальные функции Пусть F — некоторый класс функций от k переменных. Функцию U(n, x1, …, xk) от k + 1 переменных называют универсальной для класса F, если выполнимы условия: а) для всякого n N0 выполняется fn(x1, …, xk) = U(n, x1, …, xk) F; б) для всякой f(x1, …, xk) F существует n N0 такое, что f(x1, …, xk) = U(n, x1, …, xk). 1 Теорема 15.4. Для класса Ч — одноместных частично рекурсивных функций существует универсальная частично рекурсивная функция U(n, x). Доказательство. Определим U(n, x) = f Pn x , точнее y, если Pn x y; U(n, x) = не определено, в противном случае.
(15.1)
Данное соотношение определяет частичную функцию. Функция U(n, x) является частично рекурсивной. Действительно, для произвольных (n, x) нужно найти программу Pn (эффективная процедура) и применить Pn к начальной конфигурации (x, 0, …, 0, …). Если Pn , то положить U(n, x) = r1, где r1 — содержимое регистра R1 в заключительной конфигурации. Если Pn , то считать значение U(n, x) неопределенным. По тезису Черча функция U(n, x) частично рекурсивна. Покажем, что функция U(n, x) универсальна. Поскольку U(n, x) частично рекурсивна, то и fn = U(n, x) для всякого n N0 частично рекурсивна, так как fn получена подстановкой константы вместо первого аргумента. Пусть теперь f(x) — произвольная од150
номестная частично рекурсивная функция. Тогда по доказанному она может быть вычислена некоторой МПД-программой Р. Пусть n = (P). Следовательно, f = f Pn x и значит f = U(n, x), что и требовалось доказать. Следствие 15.5. Для всякого k 1 существует частично рекурсивная функция Uk(n, x1, …, xk) универсальная для всех k-местных частично рекурсивных функций. Это делается с использованием нумерационных функций. Полагаем U 2 n, x1 , x 2 U n, px1 , x 2 ;
U 3 n, x1 , x 2 , x3 U n, p px1 , x 2 , x3 .
и так далее.
Покажем, например, что функция U 2 n, x1 , x2 удовлетворяет нужным условиям. Во-первых, функция U2 — частично рекурсивна, так как является суперпозицией частично рекурсивных функций. Во-вторых, функция f n x1 , x2 U 2 n, px1 , x2 частично рекурсивна, так как получается из частично рекурсивной подстановкой константы. Пусть теперь f(x1, x2) — произвольная частично рекурсивная функция. Образуем функцию g(x) = f(l(x), r(x)), где l, r — нумерационные функции. Так как g(x) — частично рекурсивна, то существует n такое, что g(x) = U(n, x). Теперь положим x = p(x1, x2), и тогда имеем f(x1, x2) = g(p(x1, x2)) = U(n, p(x1, x2)) = U 2 n, x1 , x2 , что и требовалось доказать. Представляет интерес вопрос о существовании универсальной функции для других рассмотренных выше классов Ч0 и Чпр — общерекурсивных и примитивно рекурсивных функций соответственно. Теорема 15.6. Не существует общерекурсивной функции Uk(n, x1, …, xk), универсальной для класса Чk0 — k-местных общерекурсивных функций при любом k 1. Доказательство. Пусть, наоборот, существует такая функция Uk(n, x1, …, xk) для некоторого k. Образуем функцию f(x1, …, xk) = 151
= Uk(x1, x1, …, xk) + 1. Согласно свойству универсальности существует n0 такое, что Uk(n0, x1, …, xk) = f(x1, …, xk) = Uk(x1, x1, …, xk) + 1. Поскольку данные функции всюду определены, то они определены и при x1, x1 = … = xk = n0. Тогда получаем противоречивое равенство Uk(n0, n0, …, n0) = Uk(n0, n0, …, n0) + 1. Значит, предположение о существовании универсальной функции ложно, что и требовалось доказать. В то же время справедлива следующая теорема. Теорема 15.7. Для каждого k N класс всех k-местных примитивно рекурсивных функций имеет общерекурсивную универсальную функцию. Доказательство данной теоремы приведено в [11, § 5]. Заметим, что из данной теоремы следует, что класс общерекурсивных функций шире класса примитивно рекурсивных функций, так как универсальная функция не может быть примитивно рекурсивной и является общерекурсивной. Дадим еще одно применение универсальной функции. Пусть f:N0 N0 — частичная функция. Функцию f0 будем называть доопределением f, если f0 всюду определена и совпадает с f в ее области определения. Покажем, что рассмотрение частичных вычислимых функций вызвано существом дела, а именно — существуют частичные вычислимые функции, любое доопределение которых делает их невычислимыми. Теорема 15.8. Существует частично рекурсивная функция f(x), которая не может быть доопределена до общерекурсивной. Доказательство. Рассмотрим функцию f(x) = sgU x, x , где U — универсальная функция. Данная фунция частично рекурсивна, так как она получается суперпозицией частично рекурсивных функций. Предположим, что существует общерекурсивная функция f0(x), которая является доопределением для f(x). По свойству универсальности U существует n такое, что f0(x) = U(n, x). Поскольку f0(x) всюду определена, то она определена при x = n, и тогда значение U(n, n) определено, и, следовательно, определено значение sgU n, n f n . Поскольку f0(x) есть доопределение f(x), то в обла152
сти определения их значения должны совпадать. Поэтому имеем f n sgU n, n U(n, n) = f0(x). Однако последнее равенство дает противоречие, так как, если U(n, n) = 0, то sgU n, n 1 , если U(n, n) 0, то sgU n, n 0 . Значит, допущение о существовании рекурсивного доопределения для функции f(x) приводит к противоречию, что и требовалось доказать.
153
Л е к ц и я 16 АЛГОРИТМИЧЕСКИ НЕРАЗРЕШИМЫЕ ПРОБЛЕМЫ 16.1. Алгоритмически неразрешимые проблемы В данном разделе устанавливается алгоритмическая неразрешимость ряда проблем, относящихся к теории алгоритмов. Будем рассматривать так называемые массовые проблемы. Массовая проблема представляет собой бесконечную серию индивидуальных задач. Например, индивидуальной задачей является такая: обладает ли заданным свойством Q конкретная частично рекурсивная функция. Совокупность всех таких задач (для всех частично рекурсивных функций) образует массовую проблему распознавания свойства Q. Мы ограничимся такими массовыми проблемами, в которых все индивидуальные задачи имеют двузначный ответ («ДА» или «НЕТ»). Массовая проблема П является алгоритмически разрешимой, если соответствующая характеристическая функция f, которая определяется соотношением: 1 инд . задача П имеет ответ " ДА"; f 0 инд . задача П имеет ответ " НЕТ "
является вычислимой. Решая конкретную массовую проблему, следует считаться с возможностью, что она может оказаться алгоритмически неразрешимой, поэтому необходимо иметь представление о технике доказательства неразрешимости. Основной метод, применяемый в доказательствах алгоритмической неразрешимости, базируется на следующем рассуждении. Пусть имеем две массовые проблемы П 1 и П2. Пусть имеется алгоритм А, который по всякой индивидуальной задаче 1 П1 строит индивидуальную задачу 2 П 2 такую, что выполнено: 1 имеет ответ «ДА» тогда и только тогда, когда 2 имеет ответ «ДА». В этом случае говорят, что проблема П1 сводит154
ся к проблеме П2. Если проблема П1 неразрешима, то проблема П2 также неразрешима. Действительно, пусть это не так, и проблема П2 разрешима. Тогда можно построить разрешающий алгоритм для проблемы П1. Берем произвольную индивидуальную задачу 1 П1 . Имея алгоритм А, строим индивидуальную задачу 2 A1 . Теперь применяем к задаче 2 существующий по предположению разрешающий алгоритм для проблемы П 2. Если задача 2 имеет ответ «ДА», то для задачи 1 полагаем ответ «НЕТ». Поскольку, по условию, проблема П1 неразрешима, то получим противоречие. Значит, проблема П2 неразрешима. Данное рассуждение называется методом сводимости, и его применение возможно, если уже имеется запас проблем, алгоритмическая неразрешимость которых уже установлена. Приведем теперь некоторые из таких проблем. Рассмотрим так называемую проблему самоприменимости машин Тьюринга. Она заключается в следующем. Рассматриваются машины Тьюринга, внешние алфавиты которых содержат символы 0,1 (наряду с другими). Для каждой машины Тьюринга Т построим Код(Т), который является (0,1)-словом, и запустим машину Т в начальной конфигурации q1Код(Т). Если машина Т останавливается (т.е. попадает в заключительное состояние) через конечное число шагов, то она называется самоприменимой, в противном случае — несамоприменимой. Заметим, что имеются как самоприменимые, так и несамоприменимые машины Тьюринга. Например, несамоприменимой будет машина Т1, у которой все команды имеют вид qiaj qiajE (в правых частях команд нет заключительного состояния), самоприменимой будет машина Т1, у которой все команды имеют вид qiaj q0ajE (в правых частях всех команд имеется заключительное состояние). Проблема самоприменимости состоит в том, чтобы по любой машине Тьюринга Т определить, является ли она самоприменимой или нет. Условимся, что машина Тьюринга М решает проблему самоприменимости, если для любой машины Т начальную конфигурацию q1Код(Т) она переводит в q01, если машина Т самоприменима, и в q00, если машина Т несамоприменима. 155
Теорема 16.1. Не существует машины Тьюринга М, решающей проблему самоприменимости, т.е. проблема самоприменимости алгоритмически неразрешима. Доказательство. Предположим противное, т.е. пусть существует машина Тьюринга М, решающая проблему самоприместимости в указанном выше смысле. Построим новую машину М0, добавив новое состояние q 0 и объявив его заключительным, а также добавив новые команды для состояния q0, которое было заключительным в М: q01 q01E; () q00 q 0 0E. () Рассмотрим теперь работу машины М0. Пусть Т — произвольная машина. Если Т — самоприменима, то начальная конфигурация q1Код(Т) перейдет с помощью команд машины МO через конечное число шагов в конфигурацию q01, далее применяется команда (), и машина М0 никогда не остановится. Если Т — несамоприменима, то начальная конфигурация q1Код(Т) перейдет с помощью команд машины М через конечное число шагов в конфигурацию q00, далее применяется команда (), и машина М0 остановится. Значит, машина М0 применима к кодам самоприменимых машин Т и не применима к кодам самоприменимых машин Т. Теперь рассмотрим Код(М0) и применим машину М0 к начальной конфигурации q1Код(М0). Сама машина М0 является либо самоприменимой, либо несамоприменимой. Если М0 самоприменима, то по доказанному, она никогда не остановится, начав с q1Код(М0), и потому она несамоприменима. Если М0 несамоприменима, то по доказанному, она останавливается через конечное число шагов, начав с q1Код(М0), и потому она самоприменима. Получили противоречие, которое является следствием допущения существования машины М0, решающей проблему самоприменимости, что и требовалось доказать. Приведем еще один пример неразрешимой проблемы. Проблемой останова называют проблему, заключающуюся в том, чтобы по любой машине Тьюринга Т и слову Р в ее внешнем алфавите узнать, применима ли Т к начальной конфигурации q1Р. 156
Проблема останова алгоритмически неразрешима, так как если бы она была разрешимой, то, взяв в качестве Р слово Код(Т), мы получили бы разрешимость проблемы самоприменимости. Приведем теперь неразрешимые проблемы, связанные с проверкой свойств частично рекурсивных функций. Пусть U(n, x) — универсальная функция для одноместных частично рекурсивных функций и соответствующая ей нумерация функций f0(x), f1(x), …, fn(x), …,
(16.1)
где fn(x) = U(n, x). Теорема 16.2. Проблема «функция fn всюду определена», n N0 алгоритмически неразрешима. Доказательство. Определим характеристическую функцию данной проблемы 1, если функция f x всюду определена; g x . 0 , в противном случае.
Определим новую функцию Ф(x), где f x 1, если функция f x всюду определена; x x . 0 , в противном случае.
Заметим, что функция Ф(x) всюду определена. Кроме того,
f x 1, если g x 1; x x . 0 , если g x 0. Нам нужно доказать невычислимость функции g. Ясно, что из вычислимости функции g следует вычислимость функции Ф. Предположим, что функция Ф вычислима. Тогда существует число n такое, что Ф(x) = U(n, x) = fn(x). Поскольку Ф(x) — всюду определена, то должно быть g(n) = 1. Значит, имеем Ф(n) = fn(n) и Ф(n) = fn(n) + 1. Поскольку при x = n функция Ф(x) определена, то получаем противоречие. Следовательно, Ф(x) — невычислима, откуда следует, что функция g(x) — невычислима, что и требовалось доказать. 157
Обозначим через Wn область определения функции fn(x) в последовательности (16.1). Теорема 16.3. Проблема «n Wn», n N0 алгоритмически неразрешима. Доказательство. Рассмотрим характеристическую функцию проблемы: 1, если x W x ; f x 0 , если x W x и построим новую функцию g(x), где 0 , если x W x g x не определена , если x W x .
Ясно, что из вычислимости функции f следует вычислимость функции g. Кроме того, справедливо соотношение для любых x N0: g(x) определена fx(x) не определена. Предположим теперь, что функция g вычислима. Тогда существует число m, такое, что g = fm. Тогда имеем m Wm g(m) определено fm(m) не определено m Wm. Получили противоречие, и поэтому g — невычислима и, следовательно, f — невычислима, что и требовалось доказать. Следствие 16.4. («Проблема применимости») Проблема «fx(y) определена», x, y N0 — неразрешима. Доказательство. Если бы данная проблема была разрешима, то и проблема «n Wn» была бы разрешима, что и требовалось доказать. Рассмотрим теперь алгоритмический прием, позволяющий эффективно работать с номерами частично рекурсивных функций. Пусть f(x, y) — вычислимая функция. Фиксируем x = a и положим ga(y) = f(a, y). Функция ga(y) — одноместная и вычислимая. Значит, существует номер e такой, что ga(y) = fe(y) в последовательности (2). Покажем, что данный номер e находится эффективно. Теорема 16.5. Для всякой вычислимой функции f(x, y) существует общерекурсивная функция s(x) такая, что f(x, y) = fs(x)(y). 158
Доказательство. Пусть F — программа МПД, вычисляющая f(x, y). Фиксируем x = a, и рассмотрим программу МПД Qa, где T 1,2 Z 1 S 1 Qa : ... a раз S 1 F
Легко убедиться, что данная программа Qa вычисляет f(a, y). Пусть s(a) — номер программы Qa. Согласно построению f(a, y) = fs(a)(y). При этом, поскольку F фиксирована, то s(a) — эффективно вычислима, что и требовалось доказать. Теперь, в силу вычислимости f(x, y) существует n такое, что (2) (2) f(x, y) = U (n, x, y), где U — универсальная функция для двухместных частично рекурсивных функций. Тогда в предыдущей конструкции при x = a имеем s = s(n, a) и выполнено fs(n, a)(y) = = U(s(n, a), y), где U — универсальная для одноместных частично рекурсивных функций. Таким образом, используя тезис Черча и приведенную выше конструкцию, установлена теорема. Теорема 16.6 (нумерационная). Существует общерекурсивная функция s(n, x) такая, что выполнено U(2)(n, x, y) = U(s(n, x), y). Данная теорема справедлива и в более общей ситуации, которую отметим без доказательства. Теорема 16.7. Для любых m, n 1 существует общерекурсивная функция S nm k , x , такая, что выполнено
U mn k , x, y U n S nm k , x , y , где k N0, x x1 ,..., xm , y y1 ,..., y n . Данное утверждение называют s-m-n-теоремой. Теорема 16.8. Проблема «fx = o », x N0 — неразрешима. (Здесь o означает функцию, тождественно равную нулю.) 159
Доказательство. Рассмотрим следующую функцию: 0, если x W x ; f x, y не определена, если x W x .
Легко видеть, что функция f(x, y) вычислима, поскольку универсальная функция U(n, x) вычислима. По теореме 16.5 существует общерекурсивная функция s(x) такая, что f(x, y) = fs(x)(y) = = U(s(x), y). Имеем по определению x Wx fs(x)(y) = o . Если бы проблема fz(y) = o , z N0 была разрешима, то тогда проблема «x Wx» была бы разрешимой, что противоречило бы теореме 16.3, что и требовалось доказать. Следствие16.9. Проблема «fx = fy», x, y N0 — неразрешима. Теорема 16.10 (Клини). Для любой частично рекурсивной функции h(x) существует число а такое, что fh(a)(x) = fa(x). Доказательство. Пусть задана частично рекурсивная функция h(x). Рассмотрим вспомогательную функцию f(y, x) = U(h(s(y, y)), x), где s — функция из тождества (10), существующая по нумерационной теореме 16.6. Поскольку функция f(y, x) — частично рекурсивная, то существует число n, такое, что f(y, x) = U(h(s(y, y)), x) = = U2(n, y, x). По нумерационной теореме 16.6 имеем f(y, x) = = U(s(n, y), x) или U(h(s(y, y)), x) = U(s(n, y), x). Теперь положим y = n, и поскольку функция s общерекурсивна, то s(n, n) определено. Тогда получаем U(h(s(n, n)), x) = U(s(n, n), x). Обозначая s(n, n) = a, имеем U(h(a), x) = U(a, x) или fh(a)(x) = fa(x), что и требовалось доказать. Теперь используем полученные результаты для установления фундаментального факта, полученного Райсом, показывающего, что проблема проверки любого нетривиального свойства частично рекурсивных функций неразрешима. Произвольное множество А N0 называется рекурсивным, если соответствующая характеристическая функция A x , где
1, если x A; A x 0, если x A
160
вычислима. Ясно, что рекурсивное множество А характеризуется тем, что проблема «x A» разрешима. Пусть F — множество одноместных частично рекурсивных функций, отличных от пустого множества и от множества всех одноместных частично рекурсивных функций (т.е. F — нетривиальное множество). Обозначим через NF — множество всех номеров функций из F. Теорема 16.11. (Райс) Множество NF нерекурсивно. Доказательство. Предположим, что множество NF рекурсивно. Тогда его дополнение N F N 0 \ N F также рекурсивно, так как N
F
x 1 . N F x .
По условию оба множества NF и N F непу-
стые. Выберем некоторые NF и N F и определим функцию , если x N F ; g x , если x N F .
Функция g(x) общерекурсивна, так как выполнено равенство g(x) = N x + N F x . По теореме 16.10 для функции g(x) суF
ществует число а такое, что fg(a)(x) = fa(x). Тогда должно быть либо a NF, либо a N F . Если a NF, то, по определению, fa F, и так как fg(a) = fa, то fg(a) F. Однако из a NF следует g(a) = = N F , т.е. g(a) N F , и тогда fg(a) F. Получено противоречие. Если a N F , то, по определению, fa F и тогда в силу fg(a) = fa имеем fg(a) F. Однако из a N F имеем g(a) = NF, т.е. g(a) NF и значит fg(a) F. Снова получено противоречие. Итак, число а не содержится ни в одном из множеств NF и N F , чего быть не может, так как N0 = NF N F . Противоречие является следствием предположения о рекурсивности множества NF, что и требовалось доказать. Пусть Q — некоторое нетривиальной свойство одноместных частично рекурсивных функций, т.е. имеются функции как обладающие свойством Q, так и не обладающие свойством Q. 161
Теорема 16.12. Проблема «f обладает свойством Q», f E1 неразрешима. Доказательство. Пусть проблема «f обладает свойством Q», f E1 разрешима, т.е. существует МПД, которая для любой f E1 начальную конфигурацию (n, 0, …), где n — номер функции f, через конечное число шагов переводит в заключительную конфигурацию (1, *, …), если f обладает свойством Q, и в заключительную конфигурацию (0, *, …), если f не обладает свойством Q. Тогда для множества N F номеров функций из E1, обладающих свойством Q, Q можно указать разрешающую процедуру для проблемы n N F Q соотношением n N F МПД дает результат 1. Q Данное соотношение показывает, что множество N F рекурQ сивно, что противоречит теореме 16.11, что и требовалось доказать. Теорема 16.11 имеет многочисленные применения в теоретическом программировании и позволяет доказывать неразрешимость многих задач, связанных с вычислением на машинах. Большое число алгоритмически неразрешимых проблем имеется в книге: Роджерс Х. Теория рекурсивных функций и эффективная вычислимость. М., 1972. Приведем одно важное понятие теории алгоритмов, связанное с вычислимостью. Выше была установлена невычислимость характеристической функции предиката «x Wx». В то же время частичная характеристическая функция, определенная соотношением 1, если x W x ; f x не определена, в противном случае,
является вычислимой. Это следует из тезиса Черча. Поэтому говорят, что проблема «x Wx» полувычислима. Многие проблемы, будучи неразрешимыми, являются полувычислимыми.
162
Определение 16.13. Предикат М( x ) на натуральных числах (здесь x x1 ,..., xn ) называется полувычислимым, если частичная характеристическая функция f, определенная соотношением 1, если M x и; f x не определена, если M x л, вычислима. Замечание 16.14. В литературе также используются равносильные термины: частичная разрешимость, рекурсивная перечислимость. Примеры: 1. Любой разрешимый предикат полувычислим. 2. Для любой вычислимой функции g( x ) проблема « x D(g)» является полувычислимой, так как вычислима функция 1 g x
(здесь 1 y 1, y ). 3. Проблема «x Wx» не является полувычислимой. Действительно, если f — соответствующая частичная характеристическая функция, то x D f x Wx . Значит, D(f) отличается от области определения любой одноместной вычислимой функции. Поэтому f не может быть вычислимой. Теорема 16.15. Предикат М( x ) полувычислим тогда и только тогда, когда существует вычислимая функция g( x ) такая, что М( x ) = и x D(g). Доказательство. Если М( x ) полувычислим и f — соответствующая частичная характеристическая функция, то по определению М( x ) = и x D(g). Обратное следует из примера 2. Определение 16.16. Множество А из N0 называется рекурсивно перечислимым, если частичная характеристическая функция f, где
1, если x A; f x не определена, в противном случае вычислима. Это равносильно тому, что предикат «x A» полувычислим. Теорема 16.16 может быть перефразирована следующим образом: Множество является рекурсивно перечислимым тогда и 163
только тогда, когда оно является областью определению одноместной вычислимой функции. 16.2. Примечательные алгоритмически неразрешимые проблемы Выявлению разрешимых и неразрешимых задач в различных разделах математики посвящено много исследований. Приведем без доказательства некоторые проблемы из алгебры, логики, теоретической кибернетики, которые отличаются простотой формулировки и фундаментальностью. 1. Проблема распознавания истинности формул элементарной арифметики. Формулы строятся с помощью арифметических действий (сложения и умножения), логических операций (логических связок и кванторов) и знака равенства. Проблема состоит в том, чтобы найти алгоритм, который по любой такой формуле определяет, истинна она или нет на натуральном ряду. Неразрешимость этой проблемы установил Гедель К. (1931). 2. Проблема разрешения для логики предикатов первого порядка. Нужно найти алгоритм, который бы проверил общезначимость формулы алгебры предикатов. Неразрешимость этой проблемы установил Черч А. (1936). 3. Проблема сочетаемости Поста. Конечное множество V пар слов в некотором алфавите называется сочетаемым, если для некоторых пар (A1, B1), …, (As, Bs) из V выполнено равенство A1…As = B1…Bs. Нужно найти алгоритм, который по всякому множеству V пар слов узнает сочетаемо оно или нет. Неразрешимость данной проблемы установил Пост Э. (1946). 4. Проблема представимости матриц. Рассматриваются (nxn)матрицы над кольцом целых чисел Z. Пусть даны произвольные матрицы U1…Uq и U. Нужно иметь алгоритм, который бы решал, верно ли U = U i1 ,...,U i p для некоторых i1, …, ip. Неразрешимость данной проблемы, начиная с n = 4, установлена Марковым А.А. (1958). 5. Проблема тождества элементарных функций вещественного переменного. Определим класс термов Т индуктивно: x — переменная, (число) — термы. Если u, v — термы, то (u + v), (uv), 164
(u/v), sin u, |u| — термы. Нужно иметь алгоритм, который по любым двум термам из Т узнает, задают ли одну и ту же функцию одного вещественного переменного x. Неразрешимость данной проблемы установил Матиясевич Ю.В. (1973). 6. Проблема полноты автоматных базисов. Дан набор конечных автоматов (базис) с одним множеством входов и выходами, входящими в множество входов. Строятся схемы с помощью присоединения базисного автомата и введения обратной связи. Каждая схема реализует автомат. Если схемами в данном базисе может быть реализован любой автомат в данном алфавите, то базис называется полным, в противном случае — неполным. Проблема полноты заключается в том, чтобы узнавать по заданному базису — является он полным или нет. Неразрешимость данной проблемы установил Кратко М.И. (1966). 7. Десятая проблема Гильберта из 23 поставленным им в 1900 году формулируется так: «Пусть задано диофантово уравнение (т.е. уравнение вида p(x1, …, xn) = 0, р — многочлен) с произвольными неизвестными и целыми рациональными коэффициентами. Указать способ, при помощи которого возможно после конечного числа операций установить, разрешимо ли уравнение в целых рациональных числах.» Неразрешимость 10-й проблемы Гильберта установлена Матиясевичем Ю.В. (1970). Учитывая важность данного результата, приведем его точнее. Пусть p(x1, …, xn, y1, …, ym) — многочлен над кольцом целых чисел Z. Тогда предикат М(x1, …, xn), задаваемый формулой М(x1, …, xn) = y1…ym(p(x1, …, xn, y1, …, ym) = 0), называется диофантовым предикатом (область определения кванторов — множество N0). Легко убедиться, что диофантовы предикаты являются полувычислимыми. Матиясевич Ю.В. в 1970 году установил справедливость теоремы, гласящей, что каждый полувычислимый предикат диофантов. Покажем теперь, как из этой теоремы следует неразрешимость десятой проблемы Гильберта. Заметим, что если 10-я проблема Гильберта разрешима, то разрешима и такая проблема: «установить, имеет ли произвольное полиномиальное уравнение p(x1, …, xn) = 0 с целыми коэффициентами решение в множестве натуральных чисел”. Действительно, любое натуральное число мо165
жет быть представлено как сумма четырех квадратов (по теореме Лагранжа), поэтому, чтобы решать эту проблему достаточно найти целые решения уравнения
p s12 t12 u12 v12 ,..., s n2 t n2 u n2 vn2 0 . Возьмем теперь многочлен p(x, y1, …, ym) такой, что x Wx y1…ym(p(x, y1, …, ym) = 0), что можно сделать по теореме Матиясевича. Тогда, если бы существовала разрешающая процедура для 10-й проблемы Гильберта, то существовала бы и разрешающая процедура для проблемы «x Wx»: чтобы проверить, верно ли а Wа, нужно проверить, имеет ли решение в N0 уравнение q(y1, …, ym) = p(a, y1, …, ym). Значит, неразрешимая проблема «x Wx» сводится к проблеме Гильберта, что означает ее неразрешимость. Укажем еще одно следствие теоремы Матиясевича. Теорема 16.17. Всякое рекурсивно перечислимое множество является множеством неотрицательных значений, принимаемых некоторым многочленом p(x1, …, xn) над кольцом целых чисел Z (причем x1, …, xn N0). Доказательство. Пусть А — рекурсивно перечислимое множество. По теореме Матиясевича существует многочлен q(x, y1, …, ym) такой, что x A y1…ym(q(x, y1, …, ym) = 0). Рассмотрим теперь многочлен p(x, y1, …, ym), определяемый формулой 2 p(x, y1, …, ym) = x – (x + 1)(q(x, y1, …, ym)) . Ясно, что p(x, y1, …, ym) 0 q(x, y1, …, ym) = 0, причем в этом случае p(x, y1, …, ym) = x. Таким образом, А есть множество неотрицательных значений, принимаемых p(x, y1, …, ym), когда x, y1, …, ym пробегает множество N0, что и требовалось доказать. Одно из приложений этого результата — множество простых чисел. Ясно, что множество простых чисел — рекурсивно перечислимо. На основании доказанного множество простых чисел есть множество положительных значений, принимаемых некоторым многочленом с целыми коэффициентами. Данный факт считался ранее маловероятным и даже невозможным.
166
Л е к ц и я 17 ХАРАКТЕРИСТИКИ СЛОЖНОСТИ ВЫЧИСЛЕНИЙ В общей теории алгоритмов изучается лишь принципиальная возможность алгоритмического решения задачи. При рассмотрении конкретных задач не обращается внимание на ресурсы времени и памяти для соответствующих им разрешающих алгоритмов. Однако нетрудно понять, что принципиальная возможность алгоритмического решения задачи еще не означает, что оно может быть практически получено. Поэтому возникает потребность уточнить понятие алгоритмической разрешимости, введя характеристики сложности алгоритмов, позволяющие судить об их практической реализуемости. Выше было установлено, что различные алгоритмические модели приводят к одному и тому же классу алгоритмически вычислимых функций. В то же время ясно, что выбор алгоритмической модели, реализующей алгоритмы, существенно влияет на сложность вычислений. Утверждения о трудоемкости вычислений, вообще говоря, не сохраняются при изменении алгоритмической модели. Однако имеется ряд фактов, которые не зависят от вычислительной модели и относятся к так называемой машиннонезависимой теории сложности. Введем необходимые определения, отправляясь от машины Тьюринга в качестве модели вычислительного устройства. Пусть машина Тьюринга Т вычисляет словарную функцию 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) называется емкостной (ленточной) сложностью. 167
Теорема 17.1. Пусть машина Тьюринга Т имеет внешний и внутренний алфавиты мощности 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 1q j a i ...a s , s s с активной зоной s , не превосходящей фиксированной величины s. Имеется k s k s вариантов записи на ленте, r s вариантов выбора положения головки и s вариантов для значения длины s конфигурации К. Таким образом, число рассматриваемых конфигураций не превосходит rs2ks. Далее, если в процессе работы машины встретятся две одинаковые конфигурации, то машина зациклится, поскольку конфигурация однозначно определеяет следующую за ней. Значит, если машина в процессе работы использует зону sT(x), то число ее шагов не превосходит числа различных конфигураций с зоной, не превышающей sT(x). В итоге получаем неравенство tT(x) r(sT(x)) k sT x , и теорема доказана. Введенные функции sT(x) и tT(x) являются словарными. Удобно ввести для рассмотрения функции натурального аргумента, положив tT n max tT x , sT n max sT x . 2
x n
x n
Они также называются функциями временной и емкостной сложности (по худшему случаю). Поведение этих функций в пределе при увеличении размера задачи n называется асимптотичской временной (соответственно — емкостной) сложностью. Для конкретных задач находятся, как правило, асимптотические функции сложности. Заметим, что для введенных функций sT(x) и tT(x) выполнены свойства: 168
1) DtT x D fT x , где Dg x — область определения функции g(x), fT — функция, вычисляема машиной Т; 2) предикат P(x, y), определенный соотношением P(x, y) = = (tT(x) = y) — разрешим. Аналогичное свойство справедливо для функции sT(x). Подобным образом можно определить функции сложности вычисления на машине МПД. Пусть Р — программа МПД. Обозначим через tP(x) функцию, определенную условием t P x t Px за t шагов , т.е. это есть число шагов вычисления на начальной конфигурации х по программе Р, если вычисление заканчивается, и не определено в противном случае. Ясно, что для введенной функции tP(x) также выполнены условия 1) и 2). Дадим теперь определение абстрактной меры вычисления (для одноместных) числовых функций. Пусть f0(x), f1(x), …, fn(x), … — нумерация одноместных частично рекурсивных функций. Мерой вычислительной сложности называется любое семейство функций Ф0(x), Ф1(x), …, Фn(x), …, обладающее свойствами:
DФ i D f i , i N 0 ; предикат P(x, y) = (Фi(x) = y) — разрешим i N 0 . Примером меры вычислительной сложности будет, например, семейство функций Фi(x), i N 0 , где Фi(x) — максимальное число, содержащееся в регистре МПД за все время вычисления Рi(x), если Рi(x), и не определено в противном случае. В дальнейшем основное внимание будет уделено сложности тьюринговых вычислений. Рассмотрим вопрос о верхней границе сложности вычислений, который формулируется так: существует ли такая общерекурсивная функция h(x), что для любой вычислимой функции f(x) найдется машина Тьюринга, для которой tT(x) h(x) (соответственно sT(x) h(x) там, где значения tT(x) определены). Если допустить, что значения f(x) могут быть сколь угодно большими, то ответ отрицателен, так как на запись ответа может понадобиться тактов больше, чем h(x). Поэтому предположим, что значения f(x) могут быть только 0,1. Если допустить, что f(x) может быть частичной, то ответ также отрицателен, так как из существо169
вания такой общерекурсивной функции h(x) следует существование рекурсивного доопределения для любой рекурсивной функции f(x). Действительно, пусть машина Т вычисляет функцию f(x). Для любого х отсчитываем h(x) тактов, и ести за это время значение f(x) не определено, то полагаем f(x) = 0. Эта алгоритмическая процедура дает рекурсивное доопределение. Но это противоречит теореме 5 параграфа 9. Будем теперь рассматривать общерекурсивные 0,1-функции f(x). Следующая теорема показывает, что ответ на поставленный вопрос также отрицательный. Теорема 17.2. Для всякой общерекурсивной функции h(x) существует общерекурсивая 0,1-функция f(x) такая, что для любой машины Тьюринга Т, вычисляющей f(x), существует значение аргумента x = n, при котором tT(n) > h(n). Доказательство. Рассмотрим нумерацию машин Тьюринга Т0, Т1, …, Тn, … и соответствующую нумерацию частично рекурсивных функций f0(x), f1(x), …, fn(x), … . Определим функцию sg f x x , если tT x hx и f x x определено; x . f x 0, в противном случае.
Функция f(x) вычислима с помощью следующей процедуры: для любого х находится значение h(x), затем машина Tx применяется к конфигурации q1 1...1 и считаются такты работы машины Tx. Если в x 1
течение h(x) тактов Tx остановилась в заключительной конфигурации вида q0 1...1 (это проверяется просмотром активной зоны, разy 1
мер которой не превосходит |x| + h(x)), то полагается f x sg y . В противном случае величина f x x не определена и полагаем f(x) = 0. Если машина Tx не остановилась в течение h(x) тактов, то полагаем f(x) = 0. Итак, вычислимость f(x) доказана. Следовательно, существует машина Тьюринга Т, вычисляющая f(x). Пусть ее номер n. Докажем, что выполнено tT(n) > h(n). Если это не так, т.е. tT(n) h(n), то поскольку f = fn общерекурсивна и f(n) определено, тогда f(n) = sg f n n = sg fT n . Следовательно, f(n) f T n , и это 170
противоречит тому, что f вычисляется машиной Т, что и требовалось доказать. Рассмотрим вопрос о существовании сложно вычислимых функций, который формулируется так: существует ли общерекурсивная 0,1-функция f(x), которая на любой машине Тьюринга для всех х вычисляется за время, превышающее значение наперед заданной функции h(x). В такой постановке ответ отрицательный, так как вычисление функции f(x) в любом конечном числе точек можно сделать тривиальным, предварительно занеся эти значения в программу машины. Поэтому в поставленном вопросе потребуем, чтобы нужная оценка выполнялась при всех х, кроме конечного числа значений. Теорема 17.3. Для всякой общерекурсивной функции h(x) существует общерекурсивная 0,1-функция f(x) и такая, что для любой машины Т, вычисляющей f(x), существует х0 такое, что выполнено tT(x) > h(x) при всех x х0. Доказательство. Нужную функцию f(x) и вспомогательную функцию x будем строить последовательно при х = 0, 1, 2, … . х = 0. Если tT0 0 h0 и f 0 0 определено, то полагаем
f 0 0 = sg f 0 0 , 0 0 . В противном случае полагаем f 0 0 ,
0 не определено. х = n > 0. Пусть значения f(x) определены при всех x < n и определены значения x . Для нахождения f(n) поступаем следующим образом: tT0 n hn , проверяем выполнимость неравенств tT1 n hn , …, tTn n hn . Для всех k 0, n , для которых вы-
полнены оба условия а) tTk n hn ; б) fk(n) определено, находим наименьшее, которое не является значением функции . Если такое число есть (обозначим его k0), то полагаем
n k 0 и
f n sg f k 0 n . 171
Если таких чисел k нет, либо все к уже являются значениями функции , то считаем, что значение (n) не определено и f n 0 . Легко убедиться, что функция f вычислима, всюду определена и принимает значения 0, 1. Функция (x) принимает различные значения и (x) x. Пусть Т — произвольная машина, вычисляющая f, и i — номер машины Т. Докажем, что выполнено tTi x hx при всех х, начиная с некоторого x0. Пусть это неравенство нарушается для бесконечного числа значений х. Пусть n1, n2, n3, … такие значения х, что i n1 > n2 > > n3 > … . Покажем, что по крайней мере в одном из чисел n1, n2, …, ni, ni+1, функция принимает значение i. Имеем в точках n1, n2, …, ni, ni+1 неравенства tTi nk hnk и f i nk определено. Если значение i не принимается функцией в точках n1, n2, …, ni, то либо (x) = i было ранее, что невозможно, так как n1 — первое, начиная с i число, для которого tTi n1 hn1 , либо функция принимала значения, меньшие i. Таких значений i штук и при n ni все они являются значениями (так как значения различны). Тогда в точке ni+1 функция принимает значение i. Это значит, согласно определению функции f, что f fi, т.е. машина Т не вычисляет fi. Полученное противоречие доказывает теорему. Выше была определена сложность конкретного алгоритма, вычисляющего некоторую функцию f. Рассмотрим вопрос: можно ли определить сложность вычислимой функции как сложность наилучшего алгоритма, вычисляющего ее? Приведем без доказательства результат М. Блюма, показывающий, что, вообще говоря, этого сделать нельзя. Существуют функции, допускающие убыстрение всюду, за исключением конечного числа точек. Теорема 17.4. Для любой общерекурсивной функции r(x) существует общерекурсивная 0,1-функция f(x) такая, что для любой машины Мi, вычисляющей f(x), существует машина Мj, также вычисляющая f(x), что для всех х, начиная с некоторого, выполнено t M i x r t M j x .
Обсудим некоторые следствия из данного результата. 172
1. Если взять r(x) = 2х, то существует функция f(x) со свойством: если она допускает вычисление со сложностью t(x), то она допускает вычисление со сложностью t’(x), причем t(x) > 2t x или t’(x) < log t(x). Убыстренное вычисление снова допускает убыстрение-вычисление со сложностью t’’(x), где t’’(x) < log t’(x) < < loglog t(x) и т.д. (т.е. неравенства выполняются при всех х, начиная с некоторого). 2. Пусть мы реализуем работу любой машины М со скоростью 1 шаг/с и переходим к реализации со скоростью 10 10 шаг/с. Тогда вычисление на машине Мi , требующее ti(x) секунд при старой реализации, требует ti x
t i x
1010
секунд при новой реализации. Рас-
смотрим функцию f, определяемую теоремой об ускорении при r(x) = 1010 x. Пусть f вычисляется Мi. Тогда существует Мj такая, что 10 tj(x) < ti(x), начиная с некоторого x0 или t j x 10
t i x
1010
ti x .
Значит, для всех x, начиная с некоторого, старая реализация вычисления машины Мj лучше, чем новая реализация машины Мi, т.е. более быстрая реализация вычислений не имеет преимуществ перед медленной реализацией для почти всех входов (для некоторых функций).
173
Л е к ц и я 18 ХАРАКТЕРИСТИКА СЛОЖНОСТИ ВЫЧИСЛИТЕЛЬНЫХ ЗАДАЧ 18.1. Классы сложности P и NP и их взаимосвязь Установление прямых нижних оценок сложности вычислений, о которых шла речь в предыдущем разделе, удается лишь в очень редких случаях. В связи с этим получил распространение подход, связанный с получением косвенных нижних оценок, т.е. установление таких утверждений, в которых существование эффективного разрешающего алгоритма для конкретной задачи влечет за собой существование эффективного алгоритма для многих общепризнанно трудных задач. Нам необходимо формализовать соответствующий подход. Пусть П — некоторая массовая задача, характеризуемая множеством параметров, I П — индивидуальная задача, в которой эти параметры фиксированы. Пусть с массовой задачей П связана и зафиксирована схема кодирования , которая ставит каждой индивидуальной задаче I П в соответствие слово (I) в некотором алфавите А. При этом под размером задачи I понимается длина слова (I). Пусть Т — машина Тьюринга, решающая задачу П и tT n max tT I — соответствующая функция временной I , I n
сложности (по худшему случаю). Говорят, что машина Т решает задачу П за полиномиальное время, если tT n O pn для некоторого полинома р. В противном случае говорят, что машина Т решает задачу П за экспоненциальное время. Заметим, что при данном определении к экспоненциальным оценкам относятся, например, оценки вида
O n log2 n . (Некоторые авторы оценки такого вида называют субэкспоненциальными, под которыми понимаются такие оценки, кото-
174
рые превосходят любой полином, но меньше, чем O 2 n для лю бого > 0. Про задачу П говорят, что она разрешима за полиномиальное время, если существует машина Тьюринга Т, решающая ее за полиномиальное время. Обозначим через Р класс задач, разрешимых за полиномиальное время. Относительно класса Р необходимо сделать следующие замечания. 1. В определении Р существенным является фиксация схемы кодирования . Многие естественные схемы кодирования полиномиально эквивалентны, т.е. позволяют переходить от одного кода задачи к другому коду за полиномиальное время от длины кода. В этом случае принадлежность (или не принадлежность) задачи П классу Р определяется инвариантно по отношению к схемам кодирования. Однако это справедливо не всегда и, вообще говоря, класс сложности Р зависит от схемы кодирования, поэтому там, где схема кодирования не очевидна или может повлиять на класс сложности, ее следует указывать явно. 2. Класс Р определен через функцию временной сложности машины Тьюринга. Можно сделать соответствующие определения через любую другую алгоритмическую модель. Однако имеется ряд фактов о полиномиальной эквивалентности временных функций сложности многих типов вычислительных моделей, что позволяет утверждать, что класс Р определен однозначно для «разумных» вычислительных моделей 1. Поэтому без специальных оговорок будут допускаться выражения типа «алгоритм А имеет полиномиальную сложность» или «алгоритм В имеет экспоненциальную сложность». Обратим внимание, что имеется существенное различие между алгоритмами полиномиальной и экспоненциальной сложности. Ясно, что любой полиномиальный алгоритм более эффективен при достаточно больших размерах входа. Кроме того, полиномиальные алгоритмы лучше реагируют на рост производительности ЭВМ. Рассмотрим
1 С результатами взаимного моделирования вычислительных моделей можно ознакомиться в работах: Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М., 1979; Трахтенброт Б.А. Сложность алгоритмов и вычислений: спецкурс для студентов НГУ. Новосибирск, 1967. 175
такой параметр, как размер решаемой задачи на ЭВМ за единицу времени с помощью данного алгоритма. Тогда изменение данного параметра при переходе к ЭВМ в 100 раз и в 1000 раз большей производительности для различных функций временной сложности показан в табл.18.1. Таблица 18.1 Функция временной сложности n n2 n3 2n 3n
Размер решаемой задачи на современной ЭВМ за сутки N1 N2 N3 N4 N5
То же на ЭВМ в 100 раз быстрых 100 N1 10 N2 4.64 N3 6.64 + N4 4.19 + N5
То же на ЭВМ в 1000 раз быстрых 1000 N1 31.6 N2 10 N3 9.97 + N4 6.29 + N5
Из табл.18.1 видно, что в случае полиномиальных алгоритмов размер решаемой задачи при увеличении производительности ЭВМ увеличивается на мультипликативную константу, тогда как для экспоненциальных алгоритмов имеет место увеличение на аддитивную константу. Далее, полиномиальные алгоритмы обладают свойством «замкнутости», — можно комбинировать полиномиальные алгоритмы, используя один в качестве «подпрограммы» другого и при этом результирующий алгоритм будет полиномиальным. В силу приведенных причин используется следующая терминология: полиномиальные алгоритмы называют эффективными, полиномиально решаемые задачи называют легкорешаемыми, а экспоненциально решаемые задачи называют труднорешаемыми. Для практики важным является классификация задач по признаку труднорешаемости, хотя следует заметить, что установление легкорешаемости задачи еще не означает ее практическую решае-
мость. Например, установление полиномиальной оценки O n1000 не гарантирует практической решаемости уже при начальных значениях n. Аналогичное замечание можно сделать относительно труднорешаемости. Заметим, что труднорешаемость задачи может быть связана с тем, что ее решение настолько велико, что не может быть записано в виде выражения, длина которого была бы ограни176
чена полиномом от длины входа. Чтобы исключить этот тип труднорешаемости, рассматривается только такие задачи, которые имеют «короткий» ответ. Рассмотрим несколько примеров. 1. Пусть М = {1, 2, …, n} — конечное множество и R MxM — бинарное отношение на М. Рассмотрим задачу проверки — является ли R отношением эквивалентности. Будем задавать индивидуальную задачу матрицей AR = (aij), i, j 1, n , где
1, если i, j R; ai j 0, в противном случае . Ясно, что R будет отношением эквивалентности тогда и только тогда, когда матрица AR имеет единичную диагональ, симметрична и выполнено соотношение bij aij , i, j 1, n , где bij AR 2 —
2
матрица отношения R . Кроме того, выполнено AR 2 AR AR , где имеется в виду булево умножение матриц. Ясно, что сложность рассматриваемой зада-
чи O n 2 . Бинарное отношение R называется связным, если для любых i, j 1, n существует k такое, что выполнено iR k j . 2. Бинарное отношение R называется эйлеровым, если элементы R можно так упорядочить R : i1 , j1 , i2 , j2 , ...,it , jt , t R , что выполнено j1 , i2 R, j2 , i3 R, ..., jt 1 , it R, jt , i1 R . Ясно, что эйлерово отношение является связным. Можно доказать, что связное отношение R является эйлеровым тогда и только тогда, когда число единиц в матрице AR совпадает в i-м столбце и в i-й строке для каждого i 1, n . Это дает алгоритм
сложности O n 2 , проверяющий эйлеровость отношения R. Ясно,
что связность отношения R проверяется за O n 2 действий. Заметим, что здесь главным для нас является установление полиномиальности рассматриваемых задач, а не установление наилучших алгоритмов. 177
3. Бинарное отношение R называется гамильтоновым, если элементы М можно так упорядочить i1, i2, …, in, что выполнено соотношение
i1, i2 R, i2 , i3 R, ...,in 1, in R, in , i1 R . В настоящее время неизвестно полиномиального алгоритма от n проверки гамильтоновости произвольного отношения R. Тривиальный алгоритм требует n! упорядочений множества М и проверки условий (7), что, конечно, превосходит по величине любой полином от n. 4. Пусть f(x1, …, xn) — формула от булевых переменных x1, …, xn в некотором фиксированном базисе В. Напомним, что формула f(x1, …, xn) называется выполнимой, если существует набор значений переменных x10 ,..., xn0 , такой, что f f(x1, …, xn) называется мультиафинной, f(x1, …, xn) = xi1 ... xik a1 ... x s1
1
x10 ,..., xn0 1 . Формула
если она имеет вид ... x sk at , где t
a1, …, at — константы, т.е. f представляет собой конъюнкцию линейных форм. Рассмотрим задачу проверки выполнимости мультиафинной формулы. Ясно, что существование выполняющего набора для мультиафинной формулы сводится к существованию решения линейной системы уравнений над полем F2. Алгоритм Гаусса дает
оценку O n 3 , поэтому рассматриваемая задача полиномиальна. Пусть формула f(x1, …, xn) имеет конъюнктивную нормальную форму, т.е. имеет вид: a a f(x1, …, xn) = xi 1 ... xi k1 k1 1
... x z1 ... x z kt , s1 s kt
где ai, …, zi — константы. Рассмотрим задачу проверки выполнимости для формул КНФ. В настоящее время неизвестно алгоритма полиномиальной сложности решения данной задачи. Тривиальный алгоритм требует перебор 2n наборов значений x10 ,..., xn0 переменных и вычисления для каждого из них значения формулы. 178
5. Рассмотрим стандартную задачу линейного программирования: для данных целочисленной (mxn)-матрицы А, m-вектора b и nвектора c: а) найти n-вектор x с рациональными координатами такой, что T x 0 и Ax = b, c x min; либо b) установить, что не существует n-вектора x такого, что x 0 и Ax = b; либо T с) установить, что множество {c x: x 0 и Ax = b} не ограничено снизу. Хачиян Л.Г. (1979) установил, что данная задача принадлежит классу Р и тем самым разрешил вопрос, долго стоявший открытым. Определим теперь класс NP задач распознавания, т.е. имеющих ответ «ДА» или «НЕТ». Для того, чтобы задача I содержалась в классе NP требуется только, чтобы в случае, если I имеет ответ «ДА», существовало бы слово с(I) длины, ограниченной полиномом от размера I такое, что задача с начальными данными с(I), I принадлежит Р. Слово с(I) называется удостоверением или догадкой для задачи I. Рассмотрим примеры. 1. Пусть дана задача проверки гамильтоновости бинарного отношения R MxM на множестве М = {1, 2, …, n}. Если R — гамильтоново отношение, то удостоверением этого будет последовательность элементов М: с(R) = i1i2…in. Имея пару с(R), R, легко убеждаемся, проверяя соотношения (7), верно ли, что R — гамильтоново отношение. Следовательно, задача проверки гамильтоновости бинарного отношения лежит в классе NP. 2. Пусть дана задача проверки выполнимости формул КНФ. Если f(x1, …, xn) — выполнимая функция, то удостоверением этого будет соответствующий выполняющий набор x10 ,..., xn0 . Имея пару ( x10 ,..., xn0 ), f(x1, …, xn), легко убедиться, верно ли, что f(x1 , …, xn) выполнима. Формализуем теперь данные идеи. Класс NP определяется через понятие недетерминированного алгоритма. Введем понятие недетерминированной машины Тьюринга. Схема недетерминированной машины Тьюринга приведена на рис.18.1. 179
… -3
-2
* x1 x2 … xn -1 0 1 2 … n
УМ
q1
Рис.18.1
Отличие от обычной машины Тьюринга заключается в том, что недетерминированная машина (НТ) имеет дополнительно угадывающий модуль (УМ), который может только записывать на ленту слова из внешнего алфавита. Поскольку речь идет о задачах распознавания, то удобно считать, что машина имеет два заключительных состояния qY и qN, соответствующие ответам «ДА» и «НЕТ» соответственно. Работа машины имеет две стадии: 1-я стадия — угадывание. В начальный момент на ленте записано слово x = x1…xn — код индивидуальной задачи I, начиная с ячейки 1. В ячейке 0 записан знак раздела *. Угадывающий модуль просматривает ячейку –1. Затем УМ пишет произвольное слово с(х) по одной букве за такт в каждой ячейке с номерами — –1, –2, –3, … . В итоге 1-й стадии конфигурацией машины будет с(х)*q1x. 2-я стадия — решение. На этой стадии недетерминированная машина работает как обычная машина Тьюринга с конфигурации с(х)*q1x. Если машина через конечное число шагов приходит в состояние qY, то говорим, что она принимает конфигурацию с(х)*q1x. Будем говорить, что недетерминированная машина принимает x, если существует слово с(х), такое что конфигурация с(х)*q1x принимается. Определим время работы недетерминированной машины, положив t HT x t1 x t 2 x , (если х принимается), где t1 x — время работы на стадии 1, т.е., по определению, t1 x cx ; t 2 x — время работы на стадии 2, т.е., по определению, t 2 x tT cx * x (Т — соответствующая (обычная) машина Тьюринга).
180
Определим t HT x max t HT x . Недетерминированная машиx, x n
на НТ решает задачу П за полиномиальное время, если t HT x O pn для некоторого полинома р. Заметим, что временная функция определена только для тех индивидуальных задач х, которые принимаются машиной НТ. Определим класс задач NP как множество задач, для которых существует недетерминированная машина Тьюринга, принимающая за полиномиальное время те и только те слова, которые соответствуют индивидуальным задачам с ответом «ДА». Разберем теперь вопрос о взаимоотношении между введенными классами Р и NP. Ясно, что Р NP. Имеется много причин считать это включение строгим, однако этот факт пока не доказан (1992). Теорема 18.1. Если задача П NP, то существует такой полином р, что П может быть решена детерминированным алгоритмом со сложностью O 2 pn , n — размер П. Доказательство. Пусть НТ — недетерминированная машина Тьюринга, решающая задачу П, и q(n) — полином, ограничивающий временную функцию сложности НТ. Не нарушая общности, c можно считать, что q(n)= c1n 2 (с1, с2 – константы). По определению класса NP, если вход х длины n принимается НТ, то существует слово с(х) длины не более чем q(n), такое, что НТ дает ответ «ДА» не более чем за q(n) шагов. Значит, общее число возможных q(n) слов-догадок не более чем k , где k — мощность внешнего алфавита НТ. Считаем, что все догадки имеют длину q(n), в противном случае их можно подравнять. Теперь можно представить детерминированный алгоритм решения задачи П, который на каждом из q(n) k слов-догадок реализует 2-ю стадию работы НТ и работает q(n) тактов. Алгоритм дает ответ «ДА», если найдется слово-догадка, приводящее к принимающему вычислению. Время работы данного q(n) алгоритма q(n)k . Ясно, что существует подходящий полином р(n) такой, что сложность описанного алгоритма не превосходит
O 2 pn , что и требовалось доказать. Относительно класса NP следует сделать несколько замечаний: класс NP один и тот же для различных вычислительных моделей, использующих недетерминированные операции; 181
класс P замкнут относительно дополнения задач. Для класса NP этого утверждать нельзя. Дополнением A задачи распознавания А называют задачу, в которой коды задач с ответом «ДА» в точности соответствует кодам задач А, которые не имеют ответа «ДА». Класс задач, являющихся дополнениями к задачам класса NP обозначают СО-NP. 18.2. NP-полные задачи. Теорема Кука Если P NP, то задачи из NP\P являются труднорешаемыми. Цель дальнейших результатов состоит в доказательстве того, что существуют конкретные задачи П, для которых справедливо включение П NP\P, если P NP. Соответствующие результаты основаны на понятии полиномиальной сводимости задач. Пусть П 1, П2 — две задачи распознавания, задаваемые в алфавитах А1 и А2 соответственно. Будем говорить, что задача П1 полиномиально сводится к задаче П2 (обозначение: П1 П2), если существует словарная функция f : A1* A2* такая, что выполнены условия: f — полиномиально вычислима; x A1* выполнено: х — индивидуальная задача П1 с ответом
«ДА» f x A2* — индивидуальная задача П2 с ответом «ДА». Утверждение 18.2. Если выполнено П1 П2 и П2 P, то П1 P. Доказательство. Предложим полиномиальный алгоритм решения задачи П1: x П1 находим f(x) П2 и применяем к f(x) полиномиальный алгоритм, существующий по условию. Если получен ответ «ДА», то х имеет ответ «ДА». В противном случае х имеет ответ «НЕТ». Время работы алгоритма не превосходит p f x p2 p f x , где pf — полином, ограничивающий время
вычисления функции f, участвующей в сведении П1 П2, p2 — полином, ограничивающий время решения задачи П2. Доказательство завершено. Утверждение 18.3. Если выполнено П1 П2 и П2 П3, то П1 П3. 182
Доказательство очевидно, так как функция f3(x) = f2(f1(x)) осуществляет сведение П1 П3, если f1, f2 дают сведения П1 П2, П2 П3 соответственно. Определение 18.4. Задача П называется NP-полной, если выполнено: а) П NP; б) П1 П для любой задачи П1 NP. Задача П называется NP-трудной, если для нее выполнено условие б). Обозначим через NPС класс NP-полных задач, а через NPН — класс NP-трудных задач. Согласно определению имеем: NPС P P = NP, NPH P P = NP, NPС (NP\P) NPС P = . Другими словами, если для какой-то NP-полной задачи существует полиномиальный разрешающий алгоритм, то и для любой задачи из класса NP существует полиномиально разрешающий алгоритм. То же высказывание справедливо относительно NPтрудной задачи. Если какая-то NP-полная задача не лежит в классе Р, то и все NP-полные задачи не лежат в классе Р. Утверждение 18.4. Если задачи П1, П2 NP, П1 П2 и П1 NPС, то П2 NPС. Доказательство. Пусть П’ NP — произвольная задача. Тогда по определению П’ П1. Поскольку по условию П1 П2, то согласно утверждения 18.3 имеем П’ П2, что и доказывает данное утверждение. Отсюда получаем способ доказательства NP-полноты конкретных задач, используя полиномиальное сведение к ней другой NPполной задачи. Этот же способ пригоден и для доказательства NPтрудности задачи. Напомним, что классы NPC и NPH определяются только выполнимостью условий а), б) для NPC и условия б) для NPH. Докажем теперь важную теорему Кука С. (1971), дающую первый пример NP-полной задачи. 183
Теорема 18.5. Задача проверки выполнимости произвольной КНФ является NP-полной задачей. Доказательство. Пусть ВЫП — идентификатор данной задачи. В предыдущем разделе было показано, что ВЫП NP. Пусть П — произвольная задача из NP. Необходимо показать, что П ВЫП. Для этого множество индивидуальных задач LП с ответом «ДА» представим в стандартном виде соответствующей недетерминированной машиной Тьюринга (обозначение: НДМТ), работающей полиномиальное время и принимающей множество LП. Такое представление дает общую сводимость задачи, решаемой НДМТ за полиномиальное время. Пусть распознающая множество LП НДМТ имеет алфавиты А, Q и функцию переходов (программу) : A Q \ qY , q N A Q R, L, S , р(n) — верхняя граница времени вычисления. Функцию fL, осуществляющую полиномиальное сведение П ВЫП, опишем в терминах работы НДМТ. В вычислениях участвуют ячейки ленты с номерами от -р(n) до р(n) + 1, и при этом требуется учесть не более р(n) + 1 тактов работы НДМТ. Проверяющее вычисление определяется заданием в каждый момент времени содержания ячеек с указанными номерами, внутреннего состояния машины и положения считывающей головки. Соответствующие вычисления опишем в виде КНФ, использующей полиномиальное число дизъюнкций. Фиксируем нумерацию в алфавитах: Q : q0 , q1 qY , q2 q N , q3 ,...,qr
A : a0 ^ , a1 ,...av . Условимся, что фраза «в момент времени i» означает «после выполнения i-го шага работы». Если вычисление закончилось раньше времени p(n), то конфигурация не меняется во все моменты после остановки. В нулевой момент на ленте записано слово х в ячейках с номерами 1, …, n. Слово-догадка w пишется в ячейках с номерами –1, …, –|n|. Остальные ячейки пусты. Описывая принимающее вычисление, необходимо учесть, что: а) в ячейках пишется точно один символ; b) машина находится точно в одном состоянии; с) головка может просматривать точно одну ячейку с номером от –p(n) до p(n) + 1; d) машина работает по программе. 184
Определим сначала переменные и их смысл с помощью табл.18.2. Таблица 18.2 Переменная Q(i, k)
Пределы изменения индексов 0 i p(n) 0kr
H(i, j)
0 i p(n) –p(n) j p(n) + 1
A(i, j, k)
0 i p(n) –p(n) j p(n) + 1 0kr
Смысл В момент времени i машина находится в состоянии qk В момент времени i головка просматривает ячейку с номером j В момент времени i в j-ю ячейку записан символ ak
Описание сводящей функции fL для П ВЫП дадим в виде набора дизъюнкций, конъюнкцией которых и будет fL. При этом выполняющий набор значений истинности однозначно соответствует принимающему вычислению на х, стадия проверки занимает время не большее p(n) шагов, слово-догадка имеет длину не более p(n), причем: x LП на х существует принимающее вычисление; на х существует принимающее вычисление с временем p(n) и |w| p(n); существует выполняющее значение переменных для задачи fL(x), заданной КНФ. При этом fL(x) вычисляется за полиномиальное время. Определим множества дизъюнкций и их смысл. G1 в любой момент времени i машина находится точно в одном состоянии; G2 в любой момент времени i головка просматривает точно одну ячейку; G3 в любой момент времени i каждая ячейка содержит точно один символ А; G4 в момент времени 0 вычисление находится в начальной конфигурации стадии проверки со входом х; G5 не более чем через p(n) шагов машина переходит в состояние qY (принимает х); G6 для любого момента времени i, 0 i p(n) конфигурация машины в момент i + 1 получается из конфигурации в момент i однократным применением команды машины. 185
Описание дизъюнкций для функции fL. (Q(i, 0) Q(i, 1) … Q(i, r)) G1
G2
Q i, j Q i, j
0 i p(n) 0 i p(n) 0 i < j’ r
(H(i, -p(n)) H(i, -p(n) + 1) … H(i, p(n) + 1))
0 i p(n)
H i, j H i, j (a(i, j, 0) a(i, j, 1) … a(i, j, v)
G3
a i, j, k a i, j, k
G4
(Q(0, 0)), (H(0, 1)), (a(0, 0, 0)), (a(0, -1, 0)), …, (a(0, -p(n), 0)), (a(0, 1, k1)), …, (a(0, n, kn)), (a(0, n + 1, 0)), …, (a(0, p(n) + 1, 0)), где x ak1 ,...,ak n
0 i p(n) –p(n) i < j’ p(n) + 1 0 i p(n) -p(n) j p(n) + 1 0 k < k’ v
G5 (Q(p(n), 0)) а) a i, j, l , H i, j , ai 1, j, l Замечание. Дизъюнкция гарантирует, 0 i p(n) что если головка машины в момент i не -p(n) j p(n) + 1 просматривает ячейку j, то в момент i + 1 0 l v ее содержимое не меняется б) i, j, k , l G6
H i, j Q i, k a i, j, l H i 1, i H i, j Q i, k a i, j, l Qi 1, k H i, j Q i, k a i, j, l a i 1, j, l ,
0 i p(n) -p(n) j p(n) + 1 где , l, k’ определены командами маши- 0 l v ны: если qk Q\{qY, qN}, то qk al qk’ al’; если qk {qY, qN}, то = 0, k’ = k, l’ = k
186
Заметим, что число дизъюнкций в G6 — полином от n. Далее, если x LП, то существует принимающее вычисление длины не большей p(n) и выполнимы все дизъюнкции из G1, G2, G3, G4, G5, G6, и x LП тогда и только тогда, когда существует выполняющий набор для fL = G1 G2 G3 G4 G5 G6. Теперь, для любого x LП индивидуальная задача fL(x) может быть построена за время, ограниченное полиномом от n = |x|, при этом длина fL(x) также ограничена сверху полиномом от n. Таким образом, преобразование fL(x) может быть осуществлено за число действий, полиномиально зависящее от n. При этом fL(x) имеет O((p(n))2) переменных и O((p(n))2) дизъюнкций. Так как П — произвольная задача из NP, то тем самым теорема доказана. 18.3. Основные NP-полные задачи. Сильная NP-полнота В данном разделе устанавливается NP-полнота некоторых известных в различных приложениях задач. Предпочтение отдается графическим задачам как наиболее наглядным. Доказательство получается преобразованием в рассматриваемую задачу другой задачи, NP-полнота которой установлена. Для задач с целочисленными параметрами вводится важное понятие – сильная NP-полнота. 1. Пусть f(x1, …, xn) — формула от булевых переменных x1, …, xn в конъюнктивной нормальной форме, где каждая дизъюнкция имеет не более, чем три вхождения переменных. Задача проверки выполнимости таких формул называется задачей 3-выполнимости (идентификатор: 3ВЫП). Утверждение 18.6. Задача 3ВЫП является NP-полной. Доказательство. Достаточно доказать, что ВЫП3ВЫП. Пусть F = D1D2 … Dm — индивидуальная задача выполнимость от переменных x1, …, xn. Пусть Di = z1 z2 … zk и k > 3, i 1, m . Положим Di z1 z 2 y1 y1 z3 y 2 y 2 z 4 y3 ...
... y k 5 z k 3 y k 4 y k 4 z k 2 y k 3 y k 3 z k 1 z k , где y1, …, yk-3 — новые переменные. Покажем, что: 187
Di выполнено тогда и только тогда, когда существует значение y1, …, yk-3 такое, что Di выполнено; Di не выполнено тогда и только тогда, когда для любых значений y1, …, yk-3 Di не выполнено. Действительно: Di = 0 z1 z2 … zk = 0 Di y1 y1 y 2 y 2 y3 ...
... y k 4 y k 3 y k 3 0 y1 ,..., y k 3 ;
Di = 1 z1 z2 … zk = 1 i zi 1, i 1, k . Укажем значения переменных y1, …, yk-3, выполняющие (табл.18.3).
Di
Таблица 18.3
z1 = 1 z2 = 1 z3 = 1 z4 = 1 … zk = 1
y1 0 0 1 1 … 1
y2 0 0 0 1 … 1
y3 0 0 0 0 … 1
… … … … … … …
yk-3 0 0 0 0 … 1
Проделаем теперь процедуру замены каждой дизъюнкции Di на Di для каждого i 1, m с условием k > 3. Получим задачу 3-выполнимости за полиномиальное время. По доказанному имеем ВЫП3ВЫП, что и требовалось доказать. Замечание. Можно доказать, что задача 2-выполнимости лежит в классе P. 2. Рассмотрим графическую задачу (идентификатор: КЛИКА): по произвольному графу G(V, E) и числу k узнать, имеется ли в графе G полный (граф называется полным, если любые две вершины соединены ребром) подграф с k вершинами (клика). Утверждение 18.7. Задача КЛИКА является NP-полной. Доказательство. Ясно, что КЛИКА NP, так как словомотгадкой для задачи служит список вершин, составляющих клику и детерминированный алгоритм за полиномиальное время проверяет 188
наличие ребра между каждой парой вершин. Покажем, что ВЫП КЛИКА. Пусть F = D1D2…Dm — произвольная индивидуальная задача ВЫП. Строим соответствующий граф GF следующим образом. Каждому вхождению переменной в F сопоставим вершину графа и присвоим ей обозначение (x , i), где x — вхождение переменного ( {0, 1}), i — номер соответствующей дизъюнкции. Вершины (x, i) и (y, j) соединим ребром в том и только в том случае, когда i j и x не есть отрицание y (т.е. x y или, если x = y, то = ). Допустим, что F выполнима и пусть x10 ,..., xn0 — соответствующий выполняющий набор. В каждом сомножителе F есть вхождение переменной, обратившее его в 1. Выберем по одному такому вхождению из каждой дизъюнкции. Рассмотрим соответствующее множество К вершин графа GF и покажем, что любые две такие вершины соединены ребром. Действительно, для вершин (x, i) и (y, j) нет соединяющего ребра лишь в случае i = j, либо x y . Но x y, так как вхождения переменных взяты из разных дизъюнкций. Если x y , то одно и то же значение переменного х не может одновременно обратить в 1 x и y. Значит, из выполнимости F следует наличие клики размера k в GF. Обратно, пусть GF содержит клику размера k. Пусть это набор
вершин xi1 , j1 ,..., xi k , jk . Покажем, что формула F выполнима. 1
k
Положим xiq q , q 1,...,k , и тогда xi q 1 . Значения остальных q переменных положим произвольно. Противоречия в выборе значе-
ний переменных нет, так как если x , r и x , s соединены ребром, то = . По построению GF вершинам соответствуют вхождения переменных из разных дизъюнкций и так как число вершин равно k, то каждая дизъюнкция имеет вхождение переменного, обращающего в 1 при данных значениях переменных, значит и F обращается в 1. Построение GF проводится за полиномиальное время и, следовательно, ВЫП КЛИКА, что и требовалось доказать. 189
3. Говорят, что некоторое множество вершин V1 V графа G(V, E) образует вершинное покрытие графа, если для любого ребра e E найдется инцидентная ему вершина v V1 этого множества. Задача о вершинном покрытии (идентификатор: ВП) состоит в том, чтобы по произвольному графу G(V, E) и числу К узнать, имеет ли граф вершинное покрытие мощности k. Утверждение 18.8. Задача ВП является NP-полной. Доказательство. Ясно, что ВПNP, так как словом-догадкой является список вершин соответствующего вершинного покрытия и правильность ответа проверяется за полиномиальное время. Покажем, что КЛИКА ВП. Для графа G(V, E) строим граф G’, являющийся дополнением G до полного графа (т.е. G’ = (V, E’)), где e E’ e E). Покажем, что А есть полный подграф в G дополнение А’ = V\A есть ВП в G’. Действительно, пусть полный подграф с множеством вершин А лежит в G. Тогда, если бы для ребра v1 ,v2 графа G’ выполнялось бы v1 A и v2 A , то должно быть, что ребра v1 ,v2 нет в G. Значит А’ = V\A — вершинное покрытие для G’. Обратно, если А’ образует вершинное покрытие графа G’, то всякое ребро, оба конца которого находятся в А, не может принадлежать G’ и содержится в G, т.е. в G имеется полный подграф с множеством вершин А. Итак, задача о к-вершинном полном подграфе сводится к задаче о вершинном покрытии мощности k’ = n – k, n = |V|. Доказательство закончено. Говорят, что множество вершин V1 V графа G(V, E) независимо, если никакие две вершины из V1 не связяны ребром. Задача о независимом множестве вершин (идентификатор: НВ) заключается в том, чтобы для произвольного графа G(V, E) и целого числа k выяснить, существует ли в G независимое множество из к вершин. Утверждение 18.9. Задача НВ является NP-полной. Доказательство аналогично предыдущему. Приведем теперь без доказательства некоторые известные NPполные проблемы. За доказательствами можно обратиться к книге: 190
Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М., 1983. 5. Задача ГАМИЛЬТОНОВ ЦИКЛ (идентификатор: ГЦ). Для произвольного графа G(V, E) требуется узнать, существует ли перестановка вершин i1 ,...in , n V такая, что выполнено:
i1, i2 E, i2 , i3 E, ...,in 1, in E, in , i1 E .
6. Задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК (идентификатор: ЦР). Для произвольных натуральных чисел c j , j 1, n и k требуется узнать, существует ли набор целых чисел x j 0, j 1, n , что выполнено
n
c j x j k .
Вариантом данной задачи является (0,1)-
j 1
рюкзак, в которой требуется установить существование (0,1)-чисел x j , j 1, n с условием
n
c j x j k . j 1
7. Множество ребер, разрезающих циклы. Для произвольного графа G(V, E) и целого числа к выяснить, существует ли множество E E , такое, что E k и каждый цикл графа G(V, E) содержит ребро из E . 8. Множество вершин, разрезающих циклы. То же, но только теперь ищется подмножество множества вершин. 9. Изоморфизм подграфу. Для заданных двух графов G(V1, E1) и H(V2, E2) выяснить, содержит ли граф G(V, E) подграф, изоморфный Н. 10. Проблема разрешимости диофантовых уравнений (в стандартном двоичном кодировании данных) вида ax 2 bx c 0, a, b, c Z .
В настоящее время известно большое число NP-полных задач из разных областей дискретной математики (несколько тысяч). Мы ограничимся приведением результата, полученного Шеффером Т.И. (1978), дающего бесконечную серию NP-полных проблем. Пусть S R1 ,..., Rm — любое конечное множество логических отношений. Логическое отношение определяется как некоторое 191
подмножество из {0, 1}k для некоторого целого k 1, при этом k называется рангом отношения. Определим S-формулу как произвольную конъюнкцию скобок, каждая вида Ri 1 , 2 ,.. , где 1 , 2 ,... — переменные, число которых соответствует рангу
Ri , i 1, m . Проблема S-выполнимости — это проблема разрешения, является ли данная S-формула выполнимой. Например, пусть R(x, y, z) — 3-местное логическое отношение с таблицей истинности {(1, 0, 0), (0, 1, 0), (0, 0, 1)}. Тогда формула R(x, y, z) R(x, y, u) R(u, u, y) выполнима и (x, y, z, u) = (0, 1, 0, 0) — ее выполняющий набор. Результат Шеффера состоит в том, что проблема S-выполнимости полиномиально разрешима, если множество S удовлетворяет по крайней мере одному из приводимых ниже условий (в противном случае проблема NP-полна): 1) каждое отношение Ri , i 1, m из S 0-выполнимо, т.е. (0, …, 0) Ri ; 2) каждое отношение (1, …, 1) Ri ;
Ri , i 1, m
из S 1-выполнимо, т.е.
3) каждое отношение Ri , i 1, m из S слабо положительно, т.е. Ri логически эквивалентно формуле КНФ, имеющей самое большее одно переменное с отрицанием в каждой дизъюнкции; 4) каждое отношение Ri , i 1, m из S слабо отрицательно, т.е. Ri логически эквивалентно формуле КНФ, имеющей самое большее одно переменное без отрицания в каждой дизъюнкции; 5) Каждое отношение Ri , i 1, m из S мультиафинно, т.е. Ri логически эквивалентно формуле, являющейся конъюнкцией линейных форм над полем GF(2); 6) каждое отношение Ri , i 1, m из S биюнктивно, т.е. Ri логически эквивалентно формуле КНФ, имеющей самое большее вхождения двух переменных в каждой конъюнкции. Установим теперь NP-трудность некоторых задач, уже встречавшихся в курсе математической логики. Рассмотрим следующие задачи о булевых функциях. 192
Задача 1. РАВНОВЕРОЯТНОСТЬ БУЛЕВОЙ ФУНКЦИИ. Для данной булевой функции f x1 ,..., xn , заданной в КНФ, узнать, является ли она равновероятной (т.е. верно ли, что ее вес равен
2 n 1 ). Задача 2. ЛИНЕЙНОСТЬ БУЛЕВОЙ ФУНКЦИИ. Для данной булевой функции f x1 ,..., xn , заданной в КНФ, узнать, является ли она линейной. Задача 3. СУЩЕСТВЕННОСТЬ ПЕРЕМЕННОГО. Для данных булевой функции f x1 ,..., xn в КНФ и целого числа к узнать, является ли переменное xk существенным для f. Задача 4. ФУНКЦИОНАЛЬНАЯ ПОЛНОТА. Для данной булевой функции f x1 ,..., xn в КНФ выяснить, образует ли f функционально полную систему (является ли f шефферовой). Утверждение 18.10. Задачи (1 – 4) являются NP-трудными. Доказательство. Задача 1. Пусть f x1 ,..., xn — произвольная индивидуальная задача ВЫП, где f x1 ,..., xn = D1…Dm, Di — дизъюнкции. Определим функцию f * x1 ,..., xn , y = D1…Dm y, где y — новое пере-
менное. Имеем f * x1 ,..., xn , y D1...Dm y D1 y ...Dm y и, значит, КНФ для функции f* строится по функции f за полиномиальное время. Легко видеть, что
f * f 2 n . Значит, f* равно-
вероятна тогда и только тогда, когда f не выполнима. Ясно, что условие «задача 1 P» влечет за собой ВЫП P, что означает задача 1 NPH. Задача 2. Пусть f x1 ,..., xn — произвольная индивидуальная задача ВЫП. Определим функцию f * x1 ,..., xn , y1 , y2 f x1 ,..., xn y1 y2 ,
где y1, y2 — новые переменные. Ясно, что КНФ для функции f* строится по f за полиномиальное время. Легко видеть, что f* линейна тогда и только тогда, когда f не выполнима и условие «задача 2 P» влечет за собой ВЫП P, что означает задача 2 NPH. 193
Задача 3. Пусть f x1 ,..., xn — произвольная индивидуальная задача ВЫП. Образуем функцию f * x1 ,..., xn , y f x1 ,..., xn y , где y — новое переменное. Ясно, что y существенно для f* тогда и только тогда, когда f — выполнима. Следовательно, «задача 3 P» влечет за собой ВЫП P, что означает задача 3 NP. Задача 4. Пусть f x1 ,..., xn — произвольная индивидуальная задача ВЫП. Образуем функцию f * x1 ,..., xn , y1 , y2 , y3 f x1 ,..., xn y1 y2 y3 .
Ясно, что КНФ для f* строится по f за полиномиальное время. Функция f* образует функционально полную систему тогда и только тогда, когда f выполнима. Действительно, если f не выполнима, то f * y3 и f* не является функционально полной. Если f выполнима, то пусть x10 ,..., xn0 - выполняющий набор. Тогда имеем
f * x10 ,..., xn0 ,0,0,0 f * x10 ,..., xn0 ,0,0,1 1, f * x10 ,..., xn0 ,0,0,1 f * x10 ,..., xn0 ,1,1,0 1 ,
откуда следует не самодвойственность и не линейность функции f*. Очевидно, что f* не сохраняет нуль, не сохраняет единицу и не монотонна. Значит, функция f* удовлетворяет критерию Шеффера функциональной полноты. Следовательно, условие «задача 4 P» влечет за собой ВЫП P, что означает задача 4 NPН, что и требовалось доказать. Замечание. Легко убедиться, что отрицание задачи 2, задачи 3 лежат в классе NP, и поэтому они NP-полны. Неизвестно, верно ли это для задач 1 и 4. Очевидно, что при табличном задании булевых функций рассмотренные задачи имеют полиномиальную сложность. Разберем еще одно важное понятие, относящееся к обсуждаемому кругу вопросов. Рассмотрим задачу ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК, которая, как отмечалось выше, является NP-полной. Пусть c1, …, cn, w — натуральные числа и спрашивается, суще-
194
ствуют ли такие целые x1, …, xn 0, что выполнено
n
c j x j w . j 1
Приведем один алгоритм решения данной задачи. Для индивидуальной задачи ЦР(c1, …, cn, w) построим ориентированный граф G(c1, …, cn, w) = (V, E), где V = {0, 1, …, w}, E = {(m, k), 0 m < k w и k – m = cj для некоторого j n}. Значит, граф G имеет w + 1 вершину и O(nw) дуг. Утверждение 18.11. В графе G(c1, …, cn, w) имеется путь из 0 в w тогда и только тогда, когда индивидуальная задача ЦР(c1, …, cn, w) имеет решение. Доказательство. Пусть (0 = i0, i1, …, im = w) — нужный путь в графе G. Рассмотрим набор чисел (s1, …, sm) = (i1 – i0, …, im – im-1). Все эти числа содержатся среди чисел {c1, …, cn} согласно определению графа G. Кроме того, имеем
m
s j w . Отсюда следует, что j 1
уравнение
n
c j x j w
разрешимо в неотрицательных целых чис-
j 1
лах, причем xj равно числу появлений cj в последовательности (s1, …, sm). Обратно, если
n
c j x j w
для неотрицательных целых чисел
j 1
x1, …, xn, то можно восстановить некоторый путь из 0 в w в графе G, если положить (s1, …, sm) = ( c1 ,..., c1 , c 2 ,...,c 2 ,..., c n ,...,c n ) и путь x1 раз
x2 раз
xn раз
из 0 в w имеет вид (0 = i0, i1, …, im = w), где i1 = s1, i2 = s1 + s2, …, im = s1 + … + sm. Доказательство завершено. Утверждение 18.12. Любая индивидуальная задача ЦР может быть решена за О(nw) действий. Доказательство. По данным c1, …, cn, w строим граф G за О(nw) действий. Затем за О(nw) действий проверяем существует ли путь из 0 в w, используя способ пометок: вершину 0 помечаем 0, вершины, достижимые из 0 за 1 шаг, помечаем 1 и т.д. Если w по195
лучает пометку, то задача разрешима, если нет, то неразрешима. Доказательство завершено. Приведенный результат показывает, что NP-полная задача ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК решается с помощью алгоритма с временной сложностью О(nw) — полиномиального и, следовательно, доказано, что P = NP и можно считать ненужным предыдущее и последующее обсуждение теории NP-полноты. Дело в том, что оценка О(nw) не является полиномиальной функцией от длины входа, так как целые числа в экономном кодировании должны задаваться в двоичной системе счисления. В то же время приведенный результат важен, так как он показывает, что NP-полные задачи имеют разную «сложность». Для задач с числовыми параметрами введем следующие определения. Пусть I — индивидуальная вычислительная задача, т.е. с числовыми параметрами. Обозначим через num(I) — наибольшее целое число, появляющееся в I. Определение 18.13. Пусть А — вычислительная задача и f:N N — числовая функция. Обозначим через Af подзадачу задачи А, в которой берутся индивидуальные задачи I, для которых выполнено num(I) f(|I|). Говорят, что задача А сильно NP-полна, если для некоторого полинома p(n) задача Ap является NP-полной. Замечание. Можно показать, что задачи КЛИКА, ГАМИЛЬТОНОВ ЦИКЛ являются сильно NP-полными, а задачи (0,1)-РЮКЗАК и ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК не являются таковыми. Определение 18.14. Алгоритм АЛГ для задачи А называют псевдополиномиальным, если он решает любую индивидуальную задачу I A за время, ограниченное полиномом (двух переменных) от |I| и num(I). Значит, алгоритм со сложностью О(nw) для задачи ЦЕЛОЧИСЛЕННЫЙ РЮКЗАК является псевдополиномиальным (ясно, что для индивидуальной задачи I ЦР num(I) = w). Отметим, что сильная NP-полнота задачи делает маловероятным существование псевдополиномиального алгоритма точно также, как NP-полнота задачи делает маловероятным существование полиномиального алгоритма. Утверждение 18.15. Если P NP, то ни для одной сильно NPполной задачи не существует псевдополиномиального алгоритма. 196
Доказательство. Пусть А — сильно NP-полная задача. Значит, для некоторого полинома p(n) задача Аp является NP-полной. Далее, пусть для А существует псевдополиномиальный алгоритм АЛГ, который решает любую индивидуальную задачу I A за время q(|I|, num(I)) для некоторого полинома q от двух переменных. Тогда очевидно, что алгоритм АЛГ решает NP-полную задачу Аp за время q(n, p(n)) — что является полиномиальной оценкой. Получено противоречие при P NP, что и требовалось доказать.
197
СПИСОК ЛИТЕРАТУРЫ 1. Ахо А., Хопкрофт Д., Ульман Д. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. 2. Ван дер Варден Б.Л. Алгебра. М.:Наука, 1976. 3. Верещагин Н.К., Шень А. Начала теории множеств. М.: МЦНМО, 1999. 4. Верещагин Н.К., Шень А. Вычислимые функции. М.: МЦНМО, 1999. 5. Верещагин Н.К., Шень А. Языки и исчисления. М.: МЦНМО, 2000. 6. Глухов М.М. Математическая логика. М., 1981. 7. Курош А.Г. Лекции по общей алгебре. М.: ГИФМЛ, 1962. 8. Лавров И.А., Максимова Л.Л. Задачи по теории множеств, математической логике и теории алгоритмов. М.: Физикоматематическая литература, 1995. 9. Ленг С. Алгебра. М.: Мир, 1965. 10. Мальцев А.И. Алгебраические системы. М.: Наука, 1970. 11. Мальцев А.И. Алгоритмы и рекурсивные функции. М.: Наука, 1986. 12. Марков А.А., Нагорный Н.М. Теория алгорифмов. М.: Наука, 1984. 13. Новиков П.С. Элементы математической логики. М.: Наука, 1973. 14. Носов В.А. Теория алгоритмов. М., 1990. 15. Яблонский С.В. Введение в дискретную математику. М.: Наука, 1986.
198