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

Математическая логика и теория алгоритмов. Учебное пособие-1

.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
932 Кб
Скачать

Логика предикатов

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

q0

1

q1

64

Элементы теории алгоритмов

Пример. Доказать, что функция y = x – 2 вычислима по Тьюрингу.

Решение.

Для доказательства достаточно построить МТ, вычисляющую эту функцию за конечное число шагов при x ≥ 2 и работающую бесконечно при x = 1 и x = 0. Последовательность конфигураций и команды, обеспечивающие вычисление данной функции при x ≥ 2, приведены ниже:

0

1

1

1

1

0

q11 q2

 

 

 

 

q1

 

 

0

1

1

1

0

0

q21 q3

 

 

 

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

q1

q2

q00

1

q2

Q3

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

-

q3

q1

1

q2

q2

q3

*

q00

q2

q3

Определите, в какое слово перерабатывает машина каждое из следующихслов, исходяизстандартногоначальногосостояния: 1111*1, 111*1, 11*11.

3. Остановится ли когда-нибудь машина Тьюринга, заданная программой, если она начнет перерабатывать слова 1111,01; 11111; 10101, обозревая в состоянии q1 крайнюю левую ячейку слова?

q1

q2

q3

0

q1П

q3

q00

1

q2

q1

q2

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]