Математическая логика и теория алгоритмов. Учебное пособие-1
.pdf
Логика предикатов
16. Запишите предложение, выражающее:
коммутативность сложения;
ассоциативность сложения;
коммутативность умножения;
ассоциативность умножения;
дистрибутивность сложения относительно умножения;
бесконечность множества простых чисел.
17*. Запишите предложение, выражающее то, что уравнение 3x2 + 2x + 1 = 0 имеет в точности два различных корня.
18*. Пусть M множество точек, прямых и плоскостей 3-мерного евклидова пространства со следующими предикатами:
T (x) – «x – точка»;
Пр(x) – «x – прямая»; Пл(x) – «x – плоскость» Л(x, y) – «x лежит на y».
Запишите следующие формулы:
через каждые две точки можно провести прямую, если эти точки различны, то такая прямая единственна;
через каждые три точки, не лежащие на одной прямой, можно провести единственную плоскость;
определение параллельных прямых;
определение параллельных плоскостей.
61
Глава 4
ГЛАВА 4. ЭЛЕМЕНТЫ ТЕОРИИ АЛГОРИТМОВ
4.1. Машины Тьюринга
Слово «алгоритм» возникло от имени арабского математика Мухаммеда аль-Хорезми (780–850 гг.). Он сформулировал правила выполнения четырех арифметических действий.
Интуитивно алгоритм – это четкая система инструкций о выполнении
вопределенном порядке некоторых действий для решения задач определенного класса. Каждый алгоритм характеризуется наличием допустимых исходных данных, дискретностью – выполнением по шагам, определенностью – независимостью результата от исполнителя.
Вматематике, например, известны алгоритмы нахождения наибольшего общего делителя НОД (a, b) натуральных чисел a и b, вычисления ранга r(A) матрицы A, вычисления определителя |A| матрицы A и другие.
В1920-е годы развитие математической логики потребовало уточненияпонятияалгоритма. В1936–1937 годахбыливыполненынесколькоработ (Тьюринг, Пост, Эрбран, Гедель, Черч, Марков), дающих определения этого понятия. Позднее была доказана равносильность этих определений.
Далее остановимся на двух из них и рассмотрим понятия машины Тьюринга и частично-рекурсивных функций.
Машину Тьюринга (МТ) удобно представлять в виде автоматически работающего устройства, которое в каждый момент времени, находясь
вопределенном состоянии, обозревает содержимое некоторой ячейки, протягиваемой через устройство бесконечной ленты, и делает шаг – переходит в новое состояние, меняет или нет содержимое обозреваемой ячейки и переходит к обозрению соседней (справа или слева) или той же ячейки. Точнее, машину Тьюринга определяют три компоненты:
1) внешний алфавит A = {a0, a1, …, an} – те символы, которые могут быть записаны в ячейки ленты, a0 – пустая ячейка;
2) совокупность внутренних состояний Q = {q0, q1, …, qm}, где q1 – начальное состояние, q0 – заключительное состояние (останов);
3) программа {Tij} – совокупность команд одного из видов:
Tij : qi aj → qk al X,
где X одна из букв П, Л или С, предписывающая следующую обозреваемую ячейку – правую, левую или ту же самую.
Если машина, например, находясь в состоянии q1, обозревает ячейку, в которой записан символ a3, то по команде q1 a3 → q2 a1 П она выполняет:
62
Элементы теории алгоритмов
1)символ a3 заменяет символом a1;
2)переходит в состояние q2;
3)смещается для обозрения ячейки справа.
Определение. K-й конфигурацией МТ называется совокупность символов, записанных на ленте к началу k-го шага, обозреваемая ячейка и состояние, в котором находится МТ.
Таким образом, можно сказать, что работа МТ заключается в переходе от исходной конфигурации к заключительной с помощью программы (системы команд). Стандартной начальной (первой) конфигурацией будем считать такую конфигурацию, в которой исходная последовательность символов (слово) записана в последовательных ячейках, остальные ячейки пустые и обозревается крайняя правая ячейка.
Пример. Машина Тьюринга определяется компонентами:
A = {0, 1} – алфавит, Q = {q0, q1, q2} – множество внутренних состояний, программа, записанная в таблице:
– |
q1 |
q2 |
0 |
q2 0 П |
q0 1 |
1 |
q1 1 П |
q2 1 П |
Определить слово, в которое данная МТ перерабатывает исходное слово α = (1011).
Решение.
Последовательность четырех конфигураций, отражающая работу данной машины Тьюринга, приведена ниже.
1 |
0 |
1 |
1 |
|
|
1 |
|
|
|
q1 |
|
|
|
1 |
0 |
1 |
1 |
0 |
|
2 |
|
|
|
|
q1 |
|
|
1 |
0 |
1 |
1 |
0 |
0 |
3 |
|
|
|
|
|
q2 |
|
1 |
0 |
1 |
1 |
0 |
1 |
4 |
|
|
|
|
|
q0 |
|
Заключительное слово β = (101101).
Пусть y = f (x1, x2, …, xn) частичная n – местная функция переменных x1, x2, …, xn, xi N0, N0 = N {0}. Будем говорить, что машинаМ стандартно воспринимает последовательность x1, x2, …, xn в состоянии q1, если она находится в конфигурации
63
Глава 4
x1 |
x2 |
|
|
xn |
|
|
|
||||
01 101 |
|
10 01 |
|
1 0. |
|
|
|
|
|
|
q1 |
Определение. Машина М вычисляет функцию y = f (x1, x2, …, xn), если
(x1, x2, …, xn) имеем:
1)если f (x1, x2, …, xn) определена и равна y, то М, стандартно воспринимая последовательность x1, x2, …, xn в состоянии q1, останавливается после конечного числа шагов и стандартно воспринимает последователь-
ность x1, x2, …, xn, y в состоянии q0, а запись конечной конфигурации располагается в тех же ячейках;
2)если f (x1, x2, …, xn) не определена, то M, стандартно воспринимая последовательность x1, x2, …, xn в состоянии q1, работает бесконечно;
3)при работе М не заходит в левую зону начальной конфигурации. Определение. Функция y = f (x1, x2, …, xn) называется вычислимой по
Тьюрингу, если она вычислима на подходящей машине Тьюринга.
Тезис Тьюринга. Для нахождения значений функции, заданной в некотором алфавите, тогда и только тогда существует какой-либо алгоритм, когда она вычислима по Тьюрингу.
Таким образом, Тьюринг предложил считать синонимами понятия «вычислимая функция» и «функция, вычислимая на машине Тьюринга», или «алгоритм вычисления функции» и «программа МТ, вычисляющей эту функцию».
Пример. Доказать, что функция y = (x + 1) вычислима по Тьюрингу.
Решение.
Для доказательства достаточно построить МТ, вычисляющую эту функцию за конечное число шагов. Начальная конфигурация МТ имеет следующий вид (при x ≥ 1):
x
01 1 0 q1
По команде q11 → q11П МТ оставит без изменения обозреваемую единицу, останется в том же состоянии, сдвинется вправо и будет обозревать ноль (пустую ячейку):
По команде q10 → q01 МТ обозреваемый ноль заменит на единицу и перейдет в состояние q0, то есть остановится.
Программа этой машины приведена в таблице:
– |
q0 |
q1 |
0 |
– |
q01П |
1 |
– |
q11П |
64
Элементы теории алгоритмов
Пример. Доказать, что функция y = x – 2 вычислима по Тьюрингу.
Решение.
Для доказательства достаточно построить МТ, вычисляющую эту функцию за конечное число шагов при x ≥ 2 и работающую бесконечно при x = 1 и x = 0. Последовательность конфигураций и команды, обеспечивающие вычисление данной функции при x ≥ 2, приведены ниже:
0 |
1 |
1 |
1 |
1 |
0 |
q11 q2 0Л |
|
|
|
|
q1 |
|
|
0 |
1 |
1 |
1 |
0 |
0 |
q21 q3 0Л |
|
|
|
q2 |
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
q31 q01 |
|
|
q3 |
|
|
|
|
0 |
1 |
1 |
0 |
0 |
0 |
|
|
|
q0 |
|
|
|
|
Для того чтобы при x = 1 и x = 0 МТ работала бесконечно, добавим команды
q20 → q20П, q10 → q11П.
Таким образом, получаем следующую программу вычисления функции y = x – 2.
– |
q1 |
q2 |
q3 |
0 |
q10П |
q20П |
q00 |
1 |
q20Л |
Q30Л |
q01 |
Операции с машинами Тьюринга
Пусть M1 и M2 машины Тьюринга с общим алфавитом A = {0, 1},
множествамисостоянийQ1 = {q10, q11, …, q1m} иQ2 = {q20, q21, …, q2n}, гдеq10, q20 – заключительные состояния (остановы), q11, q21 – начальные состояния
и программами T1 и T2.
Определение. Композицией (произведением) машин M1 и M2 называется машина M1 M2 с алфавитом A, с множеством состояний Q1 Q2
(в котором q11 – начальное состояние, q10 = q21, q20 – останов) и программой
T1 T2.
С помощью композиции M1 M2 машин M1 и M2 результат счета машины M1 передается машине M2 (рис. 4.1).
65
Глава 4
Рис. 4.1 |
Рис. 4.2 |
Например, если машина M1 вычисляет функцию f (x) = x + 2, машина M2 вычисляет функцию g (x) = 5x, то композиция M1 M2 вычисляет функцию
h (x) = 5(x + 2).
Если результат работы машины M1 при одном условии нужно передать машине M 2, a при другом условии – машине M3, то строится разветвление машины M1. Для этого в машине M1 определяются два предстопсигнала q0 и q0 , которые отождествляются с начальными состояниями ма-
шин M 2 |
и M3, соответственно: q |
= q21, |
q = q31 (рис. 4.2). |
|
0 |
|
0 |
4.2. Рекурсивные функции
Будем рассматривать функции, определенные на множестве N0n с областью значений N0, где N0 – множество неотрицательн ых целых чисел:
f : N0n N 0.
Определение. Простейши ми функциями называются: O (x) = 0 – нулевая функция,
S (x) = x + 1 – фун ция следования,
Imn (x1, x2, …, xn) = m – функции-проекторы.
Определ в простейшие функции, далее этот класс расширится с помощь ю специальных операторов. Пусть g (x1, …, xm), fi (x1, …, xn), i 1,m
определены в N 0.
Определение. Говорят, что функция f (x1, … , xn) получена суперпозицией функций g и fi, i 1,m , если
f (x1, …, xn) = g (f1 (x1, …, xn), …, fm (x1, …, xn)).
Пример. Функция f (x) = 1 может быть получена суперпозицией функций O (x) = 0 и S (x) = x + 1:
1 = S (O (x)) = S (0) = 0 + 1.
66
Элементы теории алгоритмов
Пример. Функция f (x) = x + 1 может быть получена суперпозицией функций I12 (x, y) = x и S (x) = x + 1:
x + 1 = S ( I12 (x, y) ) = S (x).
Определение. Говорят, что функция φ(x1, …, xn, y) получена с помощью функций f (x1, …, xn) и g (x1, …, xn, y, t) по схеме примитивной рекурсии, если
φ(x1, …, xn, 0) = f (x1, …, xn),
φ(x1, …, xn, y + 1) = g (x1, …, xn, y, φ(x1, …, xn, y)).
Пример. Функция φ(x1, x2) = x1 + x2 может быть получена по схеме примитивной рекурсии с помощью функций f (x1) = I11(x1) = x1, g (x1, x2, x3) = = S ( I33 (x1, x2 , x3 ) ) = x3 + 1:
φ(x1, 0) = f (x1) = x1,
φ(x1, 1) = g (x1, 0, φ(x1, 0)) = φ(x1, 0) + 1 = x1 + 1,
φ(x1, 2) = g (x1, 1, φ(x1, 1)) = φ(x1, 1) + 1 = (x1 + 1) + 1 = x1 + 2, …
Определение. Функция называется примитивно рекурсивной, если она может быть получена из простейших функций с помощью конечного числа суперпозиций и схем примитивной рекурсии.
Выше фактически показали, что функция φ(x1, x2) = x1 + x2 примитивно рекурсивна.
Пример. Доказать примитивную рекурсивность функции φ(x) = n, где
n N0.
Решение.
Пусть n – фиксированное целое неотрицательное число, тогда
0= O (x),
1= 0 + 1 = S (O (x)), 2 = 1 + 1 = S (S (O (x))),
…
n = (n – 1) + 1 = S (S (…(S (O (x)))…)).
Таким образом, число n получено с помощью конечного числа суперпозиций из простейших функций O (x) и S (x). Это и означает примитивную рекурсивность функции φ(x) = n.
67
Глава 4
Упражнение. Доказать примитивную рекурсивность функций
0, |
x 0, |
(x, y) = xy и Sgn(x) |
x 0. |
1, |
Класс частично рекурсивных функций является расширением класса примитивно рекурсивных функций. Новые функции строятся с помощью оператора минимизации из примитивно рекурсивных функций.
Определение. Говорят, чтофункцияφ(x1, …, xn) полученаизфункций
f1 (x1, …, xn, xn+1) и f2 (x1, …, xn, xn+1) c помощью оператора минимизации, если:
f1 (x1, …, xn, 0) ≠ f2 (x1, …, xn, 0); f1 (x1, …, xn, 1) ≠ f2 (x1, …, xn, 1);
…
f1 (x1, …, xn, y – 1) ≠ f2 (x1, …, xn, y – 1); f1 (x1, …, xn, y) = f2 (x1, …, xn, y).
При этом пишут
φ(x1, …, xn) = μy [f1 (x1, …, xn, y) = f2 (x1, …, xn, y)].
Замечание. Иногда удобно считать f2 (x1, …, xn, y) =0.
Пример. Функцию φ(x1, x2) = x1 – x2 можно получить из функций f1 (x1, x2, y) = x2 + y и f2 (x1, x2, y) = x1 с помощью операции минимизации:
φ(x1, x2) = μy [x1 + y = x1].
Определение. Функция называется частично рекурсивной, если она получена из простейших функций с помощью конечного числа суперпозиций, схем примитивной рекурсии и операторов минимизации.
Из данного определения следует, что функция φ(x1, x2) = x1 – x2, рассмотренная выше, является частично рекурсивной, так как функции x2 + y и x1 примитивно рекурсивны:
x2 y I23 (x1, x2 , y) I33 (x1, x2 , y), x1 I13 (x1, x2 , y).
Тезис Черча. Числовая функция алгоритмически (машинно) вычислима тогда и только тогда, когда она частично рекурсивна.
Связь между понятиями «функция вычислима по Тьюрингу» и «частично рекурсивная функция» устанавливает следующая теорема.
68
Элементы теории алгоритмов
Теорема. Функция вычислима по Тьюрингу тогда и только тогда, когда она частично рекурсивна.
Таким образом, оказалось, что модели понятия «алгоритм» по Тьюрингу и Черчу эквивалентны.
Замечание. Есть еще одна (равносильная рассмотренным выше) модель понятия «алгоритм» – «нормальный алгорифм Маркова», рассмотрение которой выходит за рамки нашего курса.
Задачи к главе 4. Машины Тьюринга
1. Машина Тьюринга задается следующим образом:
A = {0,1,*} – алфавит, Q = {q0, q1, q2} – множество внутренних со-
стояний, T = {q11 → q20Л, q1* → q00, q21 → q21Л} – программа. Определите, в какое слово перерабатывает машина каждое из сле-
дующих слов, исходя из стандартного начального состояния: 111*111, 111*1, *1111.
2. Машина Тьюринга задается следующей функциональной схемой.
– |
q1 |
q2 |
q3 |
0 |
- |
q31П |
q10Л |
1 |
q20Л |
q21Л |
q31П |
* |
q00 |
q2*Л |
q3*П |
Определите, в какое слово перерабатывает машина каждое из следующихслов, исходяизстандартногоначальногосостояния: 1111*1, 111*1, 11*11.
3. Остановится ли когда-нибудь машина Тьюринга, заданная программой, если она начнет перерабатывать слова 1111,01; 11111; 10101, обозревая в состоянии q1 крайнюю левую ячейку слова?
– |
q1 |
q2 |
q3 |
0 |
q1П |
q30Л |
q00 |
1 |
q21П |
q10П |
q21Л |
4. Известно, что на ленте записано слово из n единиц 11…1 (n ≥ 1). Постройте машину Тьюринга с внешним алфавитом A = {0,1}, которая отыскивала бы левую единицу этого слова и в этом положении останавливалась.
5. Сконструируйте машину Тьюринга с внешним алфавитом A = {0,1}, которая каждое число n перерабатывает в число n + 2.
69
Глава 4
6.На ленту подряд записаны два конечных набора единиц, разделенныезвездочкой. Причемвлевомнабореединицнеменьше, чемвправом (m ≥ n). Составьте программу машины Тьюринга, которая в левом наборе оставляла бы ровно столько единиц, на сколько единиц в левом наборе больше единиц, чем в правом, а все остальные единицы стирала бы (вычитание единиц).
7.Постройте машину Тьюринга (называемую «удвоение»), которая перерабатывает слово 01x0 в слово 01x01x0, причем в начальном и конечном положении обозревается крайняя левая ячейка.
8.Докажите, что следующие функции вычислимы по Тьюрингу, для чего постройте машины Тьюринга, их вычисляющие:
|
sg(x) |
0, |
если x 0, |
|
|
|||||
|
|
|
если x 0; |
|
|
|||||
|
|
|
|
1, |
|
|
||||
|
|
|
|
0, |
если x 0, |
|
|
|||
|
sg(x) |
|
|
|||||||
|
|
|
если x 0; |
|
|
|||||
|
|
|
|
1, |
|
|
||||
f (x, y) = x – y (x ≥ y); |
|
|
||||||||
f (x) = 2x + 1; |
x |
|
||||||||
|
f (x) |
x |
|
– целая часть числа |
; |
|||||
|
|
|
|
|
|
|||||
|
|
|
2 |
|||||||
|
|
|
2 |
|
|
|
||||
|
f (x) |
x |
; |
|
|
|
|
|||
|
2 |
|
если x делится на 3, |
|
|
|||||
|
|
|
|
|
|
|
||||
|
f (x) |
1, |
|
|
||||||
|
|
|
если x не делится на 3; |
|||||||
|
|
|
0, |
|||||||
|
f (x) |
|
1 |
; |
|
|
||||
|
|
x 2 |
|
|
||||||
|
|
|
|
|
|
|
||||
f (x) = 21–x; |
|
1 |
|
|||||||
|
f (x) |
1 |
|
– целая часть числа |
. |
|||||
|
|
|
x |
|||||||
|
|
|
x |
|
|
|
||||
9. Докажите, что простейшие функции
O (x) = 0, S (x) = x + 1, Imn (x1, …, xn) = xm (1 ≤ m ≥ n)
вычислимы по Тьюрингу.
10. Докажите, что следующие функции примитивно рекурсивны:
f (x) x 1 |
|
|
0, |
если |
x 0, |
|
|
|
|
если |
x 0. |
|
|
x 1, |
|||
70
