Конкретизация понятия алгоритма

Задачу алгоритмической разрешимости можно сформулировать следующим образом: задача алгоритмически разрешима, если для нее можно построить рекурсивную функцию (машину Тьюринга, λ – нотацию, алгорифм Маркова).

Машины Тьюринга

Машина Тьюринга (МТ) – это математическая модель идеализированного вычисляемого устройства. Для построения МТ надо задать:

1. Конечный алфавит Конкретизация понятия алгоритма - student2.ru , где Конкретизация понятия алгоритма - student2.ru - пустой символ.

2. Конечное множество внутренних состояний Конкретизация понятия алгоритма - student2.ru .

МТ представляет собой

· Бесконечную ленту, разделенную на ячейки. В каждый момент времени в ячейке записана буква Конкретизация понятия алгоритма - student2.ru . В процессе работы в ячейку может быть записан другой символ Конкретизация понятия алгоритма - student2.ru

· По ячейкам передвигается управляющее устройство (УУ). В каждый момент времени оно находится напротив какой-то ячейки и имеет некоторое состояние Конкретизация понятия алгоритма - student2.ru .

Машина действует дискретно, т. е. в определенные моменты времени.

                   

Конкретизация понятия алгоритма - student2.ru

Если в какой-то момент времени УУ воспринимает ячейку, содержащую символ Конкретизация понятия алгоритма - student2.ru и МТ находится в состоянии Конкретизация понятия алгоритма - student2.ru , то МТ может совершить следующие действия:

1. Стереть символ Конкретизация понятия алгоритма - student2.ru и записать на его место символ Конкретизация понятия алгоритма - student2.ru .

2. Переместиться в ячейку слева (Л).

3. Переместиться в ячейку справа (П).

4. Остаться на месте (С).

Эти действия называются программой.

Таким образом, М=<A,Q, П>.

Программу МТ можно представить в виде последовательности команд вида: Конкретизация понятия алгоритма - student2.ru ,

где D={Л, П, С}. (Л- переход влево, П – переход вправо, С – остаться на месте).

Программу также можно представить в виде таблицы:

  q1 q2 …. qn
a1        
a2        
….   Конкретизация понятия алгоритма - student2.ru    
am        

Пример. МТ добавляет к слову единицу.

Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru

Программа:

Конкретизация понятия алгоритма - student2.ru (Если в воспринимаемой ячейке символ Конкретизация понятия алгоритма - student2.ru , и МТ находится в состоянии q1, то состояние не меняется, символ не меняется, УУ сдвигается вправо).

Конкретизация понятия алгоритма - student2.ru (Если в воспринимаемой ячейке символ 1, и МТ находится в состоянии q1, то это значит, что УУ находится на начале слова, состояние меняется на q2, символ не меняется, УУ сдвигается вправо).

Конкретизация понятия алгоритма - student2.ru ( Если в воспринимаемой ячейке символ 1, и МТ находится в состоянии q2, то это значит, что УУ передвигается по слову, состояние не меняется, символ не меняется, УУ сдвигается вправо).

Конкретизация понятия алгоритма - student2.ru ( Если в воспринимаемой ячейке символ Конкретизация понятия алгоритма - student2.ru , и МТ находится в состоянии q2, то это значит, что УУ дошло до конца слова, состояние меняется на заключительное, символ меняется на 1, УУ останавливается).

В виде таблицы эту программу можно записать следующим образом:

  q1 q2
Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru
Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru

Конфигурация МТ (машинное слово) – это слово вида Конкретизация понятия алгоритма - student2.ru , где

p1 – слово в алфавите МТ (может быть пустое),

qs – внутреннее состояние М,

ai – воспринимаемый символ,

p2 – слово в алфавите МТ.

МТ переводит конфигурацию Конкретизация понятия алгоритма - student2.ru в конфигурацию Конкретизация понятия алгоритма - student2.ru ( Конкретизация понятия алгоритма - student2.ru ), если Конкретизация понятия алгоритма - student2.ru имеет вид Конкретизация понятия алгоритма - student2.ru , Конкретизация понятия алгоритма - student2.ru имеет вид Конкретизация понятия алгоритма - student2.ru , Конкретизация понятия алгоритма - student2.ru - одна из команд МТ.

Для рассмотренного выше примера:

1. Команда Конкретизация понятия алгоритма - student2.ru переводит МТ из конфигурации Конкретизация понятия алгоритма - student2.ru в конфигурацию Конкретизация понятия алгоритма - student2.ru

Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru

2. Команда Конкретизация понятия алгоритма - student2.ru переводит МТ из конфигурации Конкретизация понятия алгоритма - student2.ru в конфигурацию Конкретизация понятия алгоритма - student2.ru

Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru Конкретизация понятия алгоритма - student2.ru

и т. д.

МТ останавливается при конфигурации Конкретизация понятия алгоритма - student2.ru , если не существует такой конфигурации Конкретизация понятия алгоритма - student2.ru , что Конкретизация понятия алгоритма - student2.ru (т. е. Конкретизация понятия алгоритма - student2.ru входит в Конкретизация понятия алгоритма - student2.ru , а среди команд МТ нет такой, которая бы начиналась с Конкретизация понятия алгоритма - student2.ru ).

Тезис Тьюринга: Любой интуитивный алгоритм может быть реализован с помощью некоторой машины Тьюринга.

Рекурсивные функции

Будем рассматривать только числовые функции, т. е. функции, аргументы и значения которых принадлежат множеству натуральных чисел N (N=0,1,2,…).

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

Пример:

f(x,y)=x+y – всюду определенная функция,

f(x,y)=x-y – частично определенная функция, т. к. она определена только для Конкретизация понятия алгоритма - student2.ru .

Рекурсивное определение функции – это такое определение, при котором значение функции для данных аргументов определяется значениями той же функции для более простых аргументов или значениями более простых функций.

Примеры:

1. Числа Фибоначчи (1, 1, 2, 3, 5, 8, …) это последовательность чисел f(n), где f(0)=1, f(1)=1, f(n+2)=f(n)+f(n+1).

2. Факториал (n!=1*2*3*…*n) f(0)=1, f(n+1)=f(n)*(n+1).

Рекурсивные функции строятся на основе трех примитивных (заведомо однозначно понимаемых и реализуемых) функций. Их также называют простейшими.

1. S(x)=x+1 – функция следования.

Примеры: S(0)=1, S(1)=2, S(-5) – не определена.

2. О(х)=0 – нуль-функция;

Примеры: О(0)=0, О(1)=0, О(-5) – не определена.

3. Im(x1,x2,…,xn)=xm, (m=1,2,…n) – функция проектирования (выбора аргумента).

Пример: I2(1,2,3,4,…n)=2.

С примитивными функциями можно производить различные манипуляции, используя три оператора: суперпозиции, примитивной рекурсии и минимизации.

1. Оператор суперпозиции (подстановки).

Пусть f – m-местная функция, g1,…gm – n-местные операции на множестве N. Оператор суперпозиции S ставит в соответствие операциям f и g1,…gm n-местную функцию h.

Конкретизация понятия алгоритма - student2.ru

Примеры:

1) Используя оператор суперпозиции, можно получить любую константу.

S(O(x))=0+1=1

S(S(O(x)))=0+1+1=0+2=2

S(S…(O(x))…)=0+n, где число вложений функций следования n.

2) Используя оператор суперпозиции, можно выполнить сдвиг на константу n.

S(x)=x+1

S(S(x))=x+1+1=x+2

S(S…(S(x))…)=x+n.

2. Оператор примитивной рекурсии

Оператор R каждой (n+2)-местной операции f и n-местной операции g ставит в соответствие (n+1)-местную операцию h=R(f,g), удовлетворяющую следующей схеме:

Конкретизация понятия алгоритма - student2.ru

Конкретизация понятия алгоритма - student2.ru

Для n=0 схема примитивной рекурсии имеет вид:

Конкретизация понятия алгоритма - student2.ru , где а – константа,

Конкретизация понятия алгоритма - student2.ru

Пример: Вычисление факториала с использованием оператора примитивной рекурсии будет выглядеть следующим образом.

Конкретизация понятия алгоритма - student2.ru

Схема примитивной рекурсии образует процесс построения функции h, при котором на нулевом шаге используется функция g, а на каждом последующем шаге значение функции f от аргументов Конкретизация понятия алгоритма - student2.ru , номера y предыдущего шага и значения функции h, вычисленного на предыдущем шаге.

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

Примеры:

1) Конкретизация понятия алгоритма - student2.ru - примитивно-рекурсивная функция.

Схема примитивной рекурсии:

Конкретизация понятия алгоритма - student2.ru

Конкретизация понятия алгоритма - student2.ru

2) Конкретизация понятия алгоритма - student2.ru - примитивно-рекурсивная функция.

Конкретизация понятия алгоритма - student2.ru

Конкретизация понятия алгоритма - student2.ru

3. Оператор минимизации ( Конкретизация понятия алгоритма - student2.ru -оператор)

Конкретизация понятия алгоритма - student2.ru , где y – выделенная переменная.

Работу Конкретизация понятия алгоритма - student2.ru -оператора можно описать следующим образом. Выделяется переменная y, затем фиксируются остальные переменные Конкретизация понятия алгоритма - student2.ru . Значение у последовательно увеличивается, начиная с 0. Значением Конкретизация понятия алгоритма - student2.ru -оператора будет то значение у, при котором функция впервые обратилась в 0.

Если функция не обратилась в 0 или принимает отрицательное значение, то значение Конкретизация понятия алгоритма - student2.ru -оператора считается неопределенным.

Пример: g(x,y)=x-y+3;

Зафиксируем х=1 и будем менять y.

Конкретизация понятия алгоритма - student2.ru , т. к. 1-1+3=3

Конкретизация понятия алгоритма - student2.ru , т. к. 1-2+3=2

Конкретизация понятия алгоритма - student2.ru , т. к. 1-3+3=1

Конкретизация понятия алгоритма - student2.ru , т. к. 1-1+3=0

Следовательно, Конкретизация понятия алгоритма - student2.ru .

Функция f(x1,x2,…,xn) называется частично рекурсивной (ЧРФ), если она может быть получена из простейших функций с помощью конечного числа применений операций суперпозиции, примитивной рекурсии и минимизации.

Пример.

f(x,y)=x-y - частична, т. к. она не определена, если x<y. Чтобы сделать эту функцию полностью определенной на множестве натуральных чисел N, рассматривают усеченную разность.

Конкретизация понятия алгоритма - student2.ru

Свойства усеченной разности.

1) Конкретизация понятия алгоритма - student2.ru

2) Конкретизация понятия алгоритма - student2.ru

3) Конкретизация понятия алгоритма - student2.ru

  • Докажем, что Конкретизация понятия алгоритма - student2.ru - примитивно-рекурсивная функция.

Функция Конкретизация понятия алгоритма - student2.ru примитивно рекурсивна, т. к. по схеме примитивной рекурсии:

1) При х=0 Конкретизация понятия алгоритма - student2.ru .

2) Конкретизация понятия алгоритма - student2.ru

Т. о. ее можно получить из простейших функций О(х) и Im(x1,…xn) с помощью оператора простейшей рекурсии R.

  • Докажем, что Конкретизация понятия алгоритма - student2.ru - примитивно-рекурсивная функция.

По схеме примитивной рекурсии

1) Конкретизация понятия алгоритма - student2.ru

2) Конкретизация понятия алгоритма - student2.ru

Т. о. функцию Конкретизация понятия алгоритма - student2.ru можно получить с помощью операции примитивной рекурсии из функций Конкретизация понятия алгоритма - student2.ru и h(x,y,z)= Конкретизация понятия алгоритма - student2.ru .

  • Функция Конкретизация понятия алгоритма - student2.ru также является примитивно-рекурсивной
  • Конкретизация понятия алгоритма - student2.ru - примитивно-рекурсивная функция.
  • Функцию f(x,y)=x-y можно получить с помощью оператора минимизации:

Конкретизация понятия алгоритма - student2.ru .

Следовательно, функция f(x,y)=x-y является частично-рекурсивной функцией.

Всюду определенная частично-рекурсивная функция является общерекурсивной (ОРФ).

Для алгоритмических проблем типичной является ситуация, когда требуется найти алгоритм для вычисления числовой функции f(x1,…xn). Числовые функции, значения которых можно вычислить с помощью некоторого алгоритма, называются вычислимыми функциями. Это понятие интуитивно, т. к. интуитивно понятие алгоритма.

Функция f(x1,…xn) эффективно вычислима, если существует алгоритм, с помощью которого можно найти f(k1,…kn), если известны k1,…kn.

Тезис Черча. Всякая эффективно вычислимая функция является частично-рекурсивной функцией.

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

Частичная рекурсивность – это уточнение понятия вычислимой функции. С его помощью можно уточнять или опровергать вычислимость.

Любая частично-рекурсивная функция является вычислимой по Тьюрингу и наоборот.

Наши рекомендации