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

Мат. логика

.pdf
Скачиваний:
45
Добавлен:
28.03.2015
Размер:
2.57 Mб
Скачать

При вычислении частичной функции f(P) на машине Тьюринга будем считать, что если значение f(P) определено, то машина переводит за конечное число шагов конфигурацию q1P в конфигурацию q0f(P). В противном случае машина работает бесконечно.

Пример. Пусть требуется перевести унарную запись числа n ≥ 1 (изображается в виде n палочек) в двоичную запись. Другими словами, нужно построить машину Тьюринга М, которая конфигурацию q1 ||…| при любом n (число палочек) ≥ 1 преобразовывала бы в конфигурацию q0σ1σ2…σp, где σ1σ2…σp – двоичная запись числа n, начинающаяся с 1.

Вкачестве внешнего алфавита машины М возьмем {λ, |, 0,1}. Работа машины осуществляется циклами. К началу цикла r (1 ≤ r ≤ n-1) машина находится в конфигурации

q2 10…11 (двоичная запись r) 11…1 (n - r)

Втечение цикла r стирается одна палочка и к числу r в двоичной записи прибавляется 1. Цикл r осуществляется в несколько этапов:

1)головка проходит направо до конца записи, используя команды:

q21 → q21П q20 → q20П q21 → q2

2)определяет правый конец записи и оказывается у последней палочки в состоянии q3: q2λ → q3λЛ

3)стирает последнюю палочку и запоминает состоянием q4 необходимость прибавления единицы

q3 | → q4λЛ

4)проходит сквозь палочки налево вплоть до цифр 0 и 1 q4 | → q4 | Л

5)прибавляет 1, для чего в соответствии с алгоритмом двоичного сложения:

а) перемещаясь в состоянии q4 справа налево, головка заменяет все символы 1, расположенные в конце двоичной записи (до первого 0), символом 0:

q41 → q4

б) первый из встреченных нулей (если они есть) заменяется на 1, и головка изменяет состояние

на q5:

q40 → q5

в) в состоянии q5 головка проходит налево сквозь все цифры q50 → q5

q41 → q5

г) встретив пустой символ, головка перемещается в состоянии q2 к первой цифре q5λ → q2λП

д) если двоичная запись сплошь состоит из единиц, то после осуществления пункта а) головка встречает пустой символ, заменяет его на 1 и останавливается в состоянии q2:

q4λ → q21H

Цикл завершен.

Осталось назначить команды для входа в цикл и выхода из цикла. Переход к циклу осуществляется по единственной команде:

q11 → q21H

Выход из цикла строится так.

Если после выполнения команды (1) головка в состоянии q3 считывает не палочку, а цифру (все палочки стерты), то она проходит налево сквозь цифры

q30 → q30Л q31 → q3

и останавливается у первого непустого символа q3λ → q0λП.

Условимся при вычислении на машине числовых функций запись числа n (n = 0,1,2,…) представлять в виде n+1 палочек (чтобы запись нуля была непустой).

Будем говорить, что машина Тьюринга вычисляет функцию f(x1,…,хn), если конфигурацию

q1 || … | * … * || … |

х1+1 хn+1

она переводит в заключительную конфигурацию

q0 || … | f(x1,…,хn)+1

в случае, когда f(x1,…,хn) определена, и работает бесконечно в противном случае.

Вычисление словарных функций может быть сведено к вычислению числовых функций, если все слова в заданном алфавите перенумеровать каким-либо способом (например, в алфавитном порядке).

Некоторые приемы программирования на машинах Тьюринга

1. Суперпозиция программ Пусть имеются машины Тьюринга М1 и М2, которые соответственно вычисляют словарные

функции f1(P) и f2(P) в одном и том же алфавите.

Требуется построить машину М, вычисляющую суперпозицию f2(f1(P)).

Значение суперпозиции f2(f1(P)) считается определенным, когда определены f1(P) и f2 на слове

(f1(P).

Программа машины М может быть получена следующим образом:

1.Состояния машины М2 переобозначаются так, чтобы все они, за исключением начального, были отличны от состояний машины М1, а начальное совпадало с заключительным состоянием машины М1.

2.Программы приписываются друг к другу и начальным состоянием машины М объявляется

начальное состояние М1, а заключительным – заключительное состояние машины М2. Машину М будем называть суперпозицией машин М1 и М2 и обозначать М2 М1.

Вх. сиг.

 

 

 

Состояния

 

 

q1

q2

q3

 

q4

q5

q0

 

 

λ

-

q3

q0

 

q2

q2

-

-

 

 

 

 

 

-

 

λ, Л

λ, П

 

1, Н

λ, П

|

q2

q2

q4

 

q4

-

-

1, Н

| , П

λ, Л

 

1, Л

-

-

 

 

0

-

q2

q5

 

q5

q5

-

-

 

 

 

 

 

-

 

0, П

0, Л

 

1, Л

0, Л

1

-

q2

q3

 

q4

q5

-

-

 

 

 

 

 

-

 

1, П

1, Л

 

0, Л

1, Л

Пример. Пусть на ленте записаны два натуральных числа в унитарном коде. Числа разделены символом «+». Требуется разработать машину Тьюринга для сложения этих чисел.

q1 | → q2λН – стирание палочки

q2 | → q2 | П – проход вправо через палочки

q2+ → q3 | Н – замена + на |

q3 | → q3 | Л – проход влево через палочки

q3Л → q0 λ П – обнаружение пустой ячейки, остановка.

Вх. сиг.

 

 

Состояния

 

q1

q2

 

q3

q0

 

 

|

q2

q2

 

q3

q0

λ, Н

|, П

 

|, Л

|, Н

 

 

+

-

q3

 

-

-

-

|, Н

 

-

-

 

 

λ

-

-

 

q0

-

-

-

 

λ, П

-

 

 

Тезис Тьюринга

Многочисленные исследования ученых показали, что класс функций, вычислимых на машинах Тьюринга, чрезвычайно широк.

Каждая функция, для вычисления значений которой существует какой-нибудь алгоритм, оказывалась вычислимой посредством некоторой машины Тьюринга.

Это дало повод Тьюрингу высказать следующую гипотезу (её стали называть основной гипотезой теории алгоритмов или тезисом Тьюринга):

Для нахождения значений функции, заданной в некотором алфавите, тогда и только тогда существует какой-нибудь алгоритм, когда функция может быть вычислена на определенной машине Тьюринга.

39. Частично-рекурсивные функции. Тезис Чёрча.

Основные операции.

Мы рассмотрели функции, вычислимые по Тьюрингу. Опишем ещё один класс вычислимых функций, который порождается из нескольких простейших функций с использованием ряда операций.

1.Операция суперпозиции

Пусть заданы n-местная частичная функция g и частичные функции f1,f2,…,fn, зависящие от одних и тех же аргументов х1,…,хn

Суперпозицией функции g и f1,…,fn назовем частичную функцию

h(х1,…,хm) = g(f11,…,хm),…,fn1,…,хm))

При этом значение функции определено, если определены значения z1=f11,…,хm),…,zn(z1,…,zn). В противном случае величина h(х1,…,хm) считается неопределенной.

Пример. f1(x,y) = x – y, f2(x,z) = x2 + z, g(x,y) =

Тогда h(x,y,z) =

Будем рассматривать функции от натурального аргумента, принимающие натуральные значения. Поэтому значения функций определены лишь в случае, когда они целые и неотрицательные.

x

y

z

f1 = x – y

f2 = x2 + z

H =

 

 

 

 

 

 

1

2

5

-

6

-

4

1

0

3

16

-

2

2

1

0

5

0

2. Операция рекурсии (примитивная рекурсия) Пусть функция f(x) задана условиями:

Эти уравнения позволяют последовательно находить значения: f(0) = a, f(1) = h(0,f(0)), f(2) = h(1,f(1))…

Пример.

Для неё f(0) = 1, f(1) = 1*f(0) = 1, f(2) = 2*f(1) = 2, f(3) = 3*f(2) = 6 и т.д. Легко видеть, что f(x) = x!

Функция от двух аргументов может быть задана следующими условиями:

Здесь первый аргумент является параметром, а рекурсия ведется по второму аргументу. Пример. Определим функцию f(x,y) = xy:

Рассмотрим общий случай.

Пусть при n ≥ 0 имеются n-местная частичная функция g(x1,…,xn) и n+2 – местная частичная функция n(x1,…,xn, y.z).

Будем говорить, что функция f(x1,…,xn,y) возникает из g и h применением операции рекурсии, если для всех натуральных значений x1,…,xn,y имеет место

Величина f(x1,…,xn, y+1) определена, если определены f(x1,…,xn, y) и h(x1,…,xn, y,z) при

z = f(x1,…,xn, y)

Если значение f(x1,…,xn, y0) не определено, то неопределенными будет значения

f(x1,…,xn, y) при всех y ≥ y0.

Применение операции рекурсии к всюду определенным функциям g и h дает всюду определенную функцию f.

3.Операция минимизации

Пусть имеется n-местная частичная функция g(x1,…,xn, y)

Зафиксируем некоторый набор (x1,…,xn) и рассмотрим уравнение относительно y:

g(x1,…,xn-1, y) = xn

Будем решать это уравнение, последовательно вычисляя g(x1,…,xn-1, 1),…

Наименьшее y, для которого окажется, что g(x1,…,xn-1, y) = xn обозначим через My(g(x1,…,xn, y) = xn). Считается, что это значение неопределенно:

1)Если в процессе последовательного вычисления встретилось некоторое y0, при котором g(x1,…,xn-1, y0) не определено (в частности, это может случиться уже при y0 = 0), а при всех меньших у уравнение не выполнялось

2)Если g(x1,…,xn-1, y) определено при всех у, но отлично от xn

Значение My(g(x1,…,xn-1, y) = xn) является функцией переменных x1,…,xn. Будем говорить, что функция f(x1,…,xn) = My(g(x1,…,xn-1, y) = xn) получена из g операцией минимизации.

Типичной ситуацией применения операции минимизации является построение обратных функций. Используя, например, функции x+y, xy, x2 можно получить обратные им функции:

x – y = Mz (y + z = x) = Mz (y*z = x)

= My(y2 = x)

Функции x-y, , являются частичными. Следовательно, операция минимизации даже в применении к всюду определенным функциям может давать частичные функции.

Определение частично – рекурсивных функций.

С помощью описанных операций будем из исходных функций строить более сложные функции.

Вкачестве исходных возьмем 3 функции:

1)Для нуля 0(х).

2)Функция следования S(x) = x+1, которая указывает по x следующее за ним число.

3)Функция выбора аргумента.

Функция выбора по набору длины n выдает число, стоящее на m-м месте.

Функция f (х1, х2, …, хn) называется частично – рекурсивной, если она может быть получена из исходных функций 0(х), S(x), применением конечного числа операций суперпозиции, рекурсии и минимизации.

Примеры рекурсивных функций.

Всюду определенные частично-рекурсивные функции называются рекурсивными или общерекурсивными.

1)Константы.

Все константы являются рекурсивными функциями. 0 = 0(х), 1 = S(0(х)), 2 = S(S(0(x)))

2)Сложение.

х+ у

Сложение является рекурсивной функцией и задается следующей схемой:

3)Умножение.

Является рекурсивной функцией, задается:

4)Показательно-степенная функция ху.

=

5) Функции sg и .

Обе функции рекурсивны, так как их можно задать следующими системами:

6)Усеченная разность.

х y – рекурсивная функция

x

y =

 

 

 

 

x

1 - рекурсивна

 

 

0

1=0

 

 

 

 

(x + y)

1= x

 

 

 

х

0= x

 

 

 

 

х

(у +1)=(х

у)

1

 

Доказательство:

 

 

 

Действительно,

 

 

 

А) если

 

, тогда

 

х

(у +1)= х

у

 

1

у)

1= х

у

1

Б) если

 

, то

 

 

х

(у +1)=0

 

 

 

(x

y)

1= 0

 

 

7)Модуль разности. |x - y|

|x - y| = (xy) +(yx)

8)Целая часть от деления

a)y0 - целая часть от

b)y = 0 = x (по определению)

= Mz((xz)((x+1) y(Z+1)) = 0) (1)

При у0 равна наименьшему z, при котором .

Это означает, что и следовательно, (х + 1) у(z+1) =0.

При у0 = Mz((x+1) y(Z+1) = 0)

Чтобы учесть значение у = 0 и учесть = x вводится дополнительный сомножитель вида xz

9)Остаток от деления - ост(х, у)

1.Если у0, то ост(х, у) определим обычным образом.

2.Если у = 0, то определим ост(х, у) = х

ост(х, у) = х у

10) Функция делимости – дел (х, у).

дел(х, у) = (ост(х, у)) 11) Двоичная степень х.

СТ2(х)

-S

-2S

-2S + 1

x= 2t(2S +1)

Пусть СТ2(х) равна максимальному показателю, с которым входит 2.

СТ2(х) = t

СТ2(х) = My(дел(х, 2у+1)=0)

12)Функция, отличная от 0 в конечном числе точек. Эта функция является рекурсивной. Если f(x)0 в точках х1, х2, …, хк и принимает в этих точках значение у1, у2, …, ук, то она может быть представлена в виде

F(x) = y1(|x - x1|) + … + yk(|x – xk|)

13)Нумерация наборов.

Втеории алгоритмов часто используется прием, сводящий функции от нескольких аргументов к функции от одного аргумента.

Пусть имеется некоторая взаимно-однозначная нумерация пар. Пусть номер пары (х, у) задается функцией Р(х, у), а левый и правый элементы пары с номером n определим функциями l(n), r(n).

Функции P(х, у), l(n), r(n) называют нумерационными. Они удовлетворяют следующим соотношениям:

На основе нумерации пар легко получить нумерацию троек, четверок.

P3(x, y, z) = P (P (x, y), z) z = r(n)

P(x, y) = l(n) x = l (l (n))

y = r (l (n))

Если P, l, r – рекурсивные, то и построенные на их основе нумерационные функции тоже будут рекурсивными.

Следующая задача сводится к нумерации пар.

Опишем одну из возможных нумераций Р(х, у) = 2х(2у + 1) – 1 эта функция рекурсивна, так как при любом х и у

2х(2у + 1)

Р(х, у) может быть записана в следующем виде:

2х(2у + 1) = 1

По номеру n = 2х(2у + 1) – 1пары (х, у) левый элемент х мы найдем в соответствии со следующим равенством:

х = СТ2(n+1) (1)

Возьмем следующее соотношение:

(2)

Правые части выражений (1) и (2) представляют собой функции l(n) и r(n). Эти функции рекурсивны, так как являются суперпозициями рекурсивных функций. Таким образом, построенная нумерация пар обладает нужными свойствами.

14)Совместная рекурсия.

Всхеме совместной рекурсии одновременно участвуют несколько функций. В случае 2х функций

f1 1, х2, …, хn, y) f21, х2, …, хn, y)

Схема совместной рекурсии имеет следующий вид: = (х1, х2, …, хn)

Попытаемся доказать, что если функции g1, g2, h1,h2 частично рекурсивны, то такими же будут и

функции f1 и f2.

Для доказательства введем следующую функцию

,где Р – нумерационная функция, тогда

,поэтому

, таким образом,

получим по схеме обычной рекурсии из частично рекурсивных функций.

u – частично рекурсивна

f1 – частично рекурсивна

f2 – частично рекурсивна

Тезис Черча для теории рекурсивных функций

Подобно тезису Тьюринга, в теории рекурсивных функций выдвигается соответствующая гипотеза, носящая название тезиса Черча:

Числовая функция тогда и только тогда алгоритмически вычислима, когда она частично рекурсивна.

40. Нормальные алгоритмы Маркова. Тезис Маркова.

Марковские подстановки.

Пусть А – алфавит (любое непустое множество символов(букв). Слово – это любая последовательность букв данного алфавита. λ – пустое слово.

Если А и В – два алфавита, причем А B, то алфавит В называется расширением алфавита А. Пусть Р,Q,R,P1,P2,… - обозначения слов.

Если А – алфавит русских букв, а Р1 = параграф, Р2 = граф, Р3 = pa, то будем говориться, что слово Р2 является подсловом слова Р1 или вхождением в слово Р1, Р2 – подсловом Р1 и Р2, причем в Р1 оно входит дважды.

Марковской подстановкой называется операция (P,Q) над заданным словом R, означающая замену первого вхождения (если оно есть) слова Р в слова R на слово Q. Если вхождения Р в слово R нет, то подстановка (Р,Q) неприменима к слову R.

R

(P,Q)

Результат

1 3 5 6 2

(365,0)

102

тарарам

(ара, λ)

трам

шрам

(ра,ар)

шарм

функция

(λ, ξ -)

ξ - функция

книга

(λ, λ)

книга

поляна

(пор, Т)

неприменима

Формула подстановки (P,Q) – это запись вида P →Q.

Подстановка (P,Q), после которой работа алгоритма останавливается, называется заключительной, обозначается как P →Q; Р – левая часть, Q – правая часть в формуле подстановки.

Нормальные алгоритмы и их применение к словам.

Упорядоченный конечный список формул подстановок

в алфавите А называется схемой (или записью) нормального алгоритма в А. Точка в скобках означает, что она может стоять в этом месте, а может отсутствовать.

Нормальный алгоритм Маркова в алфавите А

V0 = V → V1 → V2 → … → Vm-1 → Vm = W

определяется следующей блок схемой:

- в этом направлении двигается слово, если подстановка неприменима ко входному слову.

Если процесс построения последовательности V,V1,V2,…,W обрывается, то говорят, что нормальный алгоритм применим к слову V, а W – результат применения нормального алгоритма к V.

Если алгоритм задан в некотором расширении алфавита А, то говорят, что он есть нормальный алгоритм над А.

Пример. Дана функция

φ(11…1) =

n – число единиц в слове 11…1

Нормальный алгоритм в алфавите А={1}, реализующий данную функцию, имеет вид:

1111111 → 1111 → 1 → ;

111111 → 111 → → 1.

Пример. Построим нормальный алгоритм для вычисления функции f(x) = x+1 в десятичной системе счисления (А = {0,1,2,3,4,5,6,7,8,9}). Для этого нам понадобится расширение В = А U {a,b}. Схема нормального алгоритма имеет вид:

0b

a0 → 0a

 

1b →

a1 → 1a 1a → 1b

2b

a2

→ 2a

2a → 2b

 

 

8b

a9

→ 9a

9a → 9b

9b

→ b0

0a

→ 0b

→ a

b →

→ a → aa → aaa → …

К пустому слову данный алгоритм не применим

499 → а499 →4а499 → 49а9 → 499а → 499b → 49b0 → 4b00 → 500

Определение. Функция f, заданная на множестве слов алфавита А, называется нормально

вычислимой, если найдется такое расширение В данного алфавита (АВ) и такой нормальный алгоритм в В, что каждое слово V (в алфавите А) из области определения функции f этот алгоритм перерабатывает в слово f(V).

Тезис Маркова.

Для нахождения значений функции, заданной в некотором алфавите, тогда и только тогда существует какой-нибудь алгоритм, когда функция нормально вычислима.