- •1.Перечислите и поясните основные этапы полного построения алгоритмов.
- •6. Программная реализация алгоритма.
- •4.Сформулируйте основные определения абстрактного алфавита (алфавит, слово алфавита, расширение алфавита, алфавитный оператор).
- •7.Дайте определение алгоритма, его особенности.
- •13.Свойства и виды алгоритмов и соотношение между ними.
- •14.Интерпретации и модели.
- •15.Семантическая и формальная непротиворечивость.
- •1) «Условие – действие», т.Е. Если построенные объекты удовлетворяют некоторым условиям, то для построений нового объекта нужно выполнить такое-то действие;
- •Первая теорема о неполноте
- •22. Интуитивное понятие алгоритма. Требования к алгоритмам.
- •23. Формализация понятия алгоритма и универсальные алгоритмические модели.
- •24.Машина Тьюринга - основные определения. Понятие вычислимости на машине Тьюринга.
- •25.Операции над машинами Тьюринга. Универсальная машина Тьюринга.
- •26.Понятие алгоритмической неразрешимости. Теорема Райса.
- •27.Проблема остановки - формулировка теоремы и ее доказательство.
- •28.Понятие рекурсии. Примитивно-рекурсивные функции. Примеры.
- •29.Неограниченный оператор минимизации. Примеры. Определение частично-рекурсивной функции.
- •30.Разрешимые и перечислимые множества и предикаты.
- •31.Конечные автоматы. Основные определения. Способы задания автоматов.
- •32.Алгоритмические возможности: что могут и что не могут вычислять автоматы. Примеры.
- •33.Эквивалентность автоматов. Алгоритм минимизации автоматов.
- •34.Автоматы и логические схемы. Программная реализация автоматов.
- •35.Интуитивное определение понятия «алгоритм». Свойства алгоритма.
- •37. Приметивно рекурсивные функции
- •Глава 4. Алгоритмы
- •40 Частично рекурсивные функции
- •41 Рекурсивные функции
- •Проблемы, касающиеся абстрактных машин
- •Другие проблемы
- •Проблемы, алгоритмическая неразрешимость которых не доказана
- •42 Формулировка и доказательство критерия Поста
- •Описание
- •Примеры Пример 1
- •Пример 2
- •Ветвление (условный оператор)
- •Повторение (цикл)
- •Устройство машины Тьюринга
- •Проблемы, касающиеся абстрактных машин
- •Другие проблемы
- •Проблемы, алгоритмическая неразрешимость которых не доказана
- •48) Машина Поста
- •Принцип работы
- •Устройство машины Тьюринга
- •Описание машины Тьюринга
- •Полнота по Тьюрингу
- •Варианты машины Тьюринга
- •Машина Тьюринга, работающая на полубесконечной ленте
Пример 2
Данный алгоритм преобразует двоичные числа в «единичные», то есть на выходе получается строка из N единичек, если на входе у нас было N в двоичной системе. Например, 101 преобразуется в 5 единиц:
Правила:
«|0» → "0||"
«1» → "0|"
«0» → "" (пустая строка)
Исходная строка:
«101»
Выполнение:
«0|01»
«00||1»
"00||0|"
"00|0|||"
"000|||||"
"00|||||"
"0|||||"
"|||||"
39
Рекурсивный предикат – предикат P типа
для которого вычислима по Тьюрингу соответствующая характеристическая функция
Рекурсивными множествами являются многие обычные множества натуральных чисел: множество четных чисел, множество простых чисел и т.д.
Множество называется рекурсивно перечислимым, если оно является множеством значений некоторой вычислимой функции.
Рекурсивно перечислимый предикат – предикат P рекурсивно перечислим, если существует процедура, позволяющая устанавливать истинность P(x1,…xk); если же P(x1,…xk) ложно, то эта процедура иногда будет это устанавливать, а иногда будет продолжаться неограниченно долго.
Теорема.2. Применение логических связок , , ¬ к рекурсив-
ным предикатам дает рекурсивные же предикаты.
Теорема.2. Применение квантора к рекурсивному предикату приводит к рекурсивному же предикату.
Интуитивно предикат Р рекурсивен, если существует алгоритм, позволяющий выяснить для каждого набора {x1,…xk} слов истинно P(x1,…xk) или нет.
Обычно арифметические предикаты x y, x + y = z, “x – простое число”, “х делит у” являются рекурсивными.
Здесь и далее под вычислимыми функциями будут подразумеваться одноместные вычислимые функции.
Рассмотрим свойства рекурсивных и перечислимых множеств.
Теорема.3. Объединение и пересечение рекурсивных множеств рекурсивны; дополнение к рекурсивному множеству рекурсивно.
Ввиду известного соответствия между теоретикомножественными операциями и пропозициональными связками эта теорема немедленно вытекает из следующей теоремы.
Теорема.3. Дизъюнкция и конъюнкция вычислимых предикатов вычислимы; отрицание вычислимого предиката вычислимо.
Теорема 3. справедлива для предикатов любой вместимости; мы, однако, докажем ее только для одноместных предикатов – этого достаточно, чтобы получить теорему 3. Для общего случая теорема
доказывается аналогично.
Теорема 4. Объединение и перечисление перечислимых множеств перечислимы.
Теорема 5. Множество тогда и только тогда перечислимо, когда оно является областью определения некоторой вычислимой функции.
Теорема.6. Множество A является рекурсивно перечислимым тогда и только тогда, когда существует разрешимый предикат R x y ( , )
такой, что x A тогда и только тогда, когда
yR x y ( , ).
Теорема.7. Всякое разрешимое множество рекурсивно перечислимо.
Теорема8 (теорема Поста). Множество тогда и только тогда разрешимо, когда оно само и его дополнение рекурсивно перечислимы.
Теорема 9. Множество номеров самоприменимых машин Тьюринга рекурсивно перечислимо, но не азрешимо. Поскольку мы обычно отождествляем слово с его номером, вместо множества номеров мы можем говорить здесь о множестве кодов.
Теорема 10. Существуют непересекающиеся рекурсивно перечислимые множества E1 и E2 такие, что никакое разрешимое множество не может содержать E1, не имея при этом общих точек с E2. (Как иногда говорят, E1 и E2 не отделимы разрешимыми множествами.)
38
Помимо двух основных операций (подстановки и примитивной рекурсии), используются и другие операции, сохраняющие примитивную рекурсивность функций. Эти операции являются производными от основных, т.е. могут быть получены из них и элементарных функций.
Пусть имеются функции y1,y2,...,yk, и в результате некоторой операции Á над этими функциями получена функция j, т.е. j=Á(y1,...,yk).
Определение [Матросов,1989,с.23].
Операция Á называется примитивно-рекурсивной операцией, если из равенства j=Á(y1,y2,...,yk) следует, что j является примитивно-рекурсивной функцией относительно совокупности {y1,y2,...,yk}.
Рассмотрим примеры часто применяемых примитивно-рекурсивных операций, следуя В.Л.Матросову [1989,с.23-24].
1. Операция введения фиктивных переменных Пусть задана функция g(x,y) и пусть j(x,y,z)=g(x,y). В этом случае говорят, что функция j получена из функции g операцией введения фиктивной переменной z.
Предложение.
Функция j является примитивно-рекурсивной функцией относительно совокупности {g}.
Доказательство.
j(x,y,z)=g(I13(x,y,z),I23(x,y,z))=Sub23(g;I13,I23).
Предложение доказано.
2. Операция подстановки констант Пусть задана функция g(x,y,z) и пусть j(x,y)=g(x,y,a). В этом
случае говорят, что функция j получается из функции g операцией подстановки констант.
Предложение.
Функция j(x,y) является примитивно-рекурсивной функцией относительно совокупности {g}.
Доказательство.
j(x,y)=g(I12(x,y),I22(x,y),Ca2(x,y))=Sub32(g;I12,I22,Ca2).
Предложение доказано.
3. Операция произвольной подстановки Пусть функции h1,h2 и h3 являются функциями, зависящими лишь от некоторых переменных x,y,z. Говорят, что функция j(x,y,z) получена из функций g,h1,h2,h3 операцией произвольной подстановки (суперпозиции), если j=g(h1,h2,h3).
Пример.
Пусть даны функции, определённые термами g(x1,x2,x3), h1(x), h2(x,y), h3(x,y,z), а j(x,y,z)=g(h1(x),h2(x,y),h3(x,y,z)).
Покажем, что j(x,y,z) - примитивно-рекурсивная функция относительно совокупности {g,h1,h2,h3}. Функцию j можно представить так:
j(x,y,z)=g(h1(I13(x,y,z)),h2(I13(x,y,z),I23(x,y,z)), h3(I13(x,y,z),I23(x,y,z),I33(x,y,z))).
Обозначим:
h1*(x,y,z)«h1(I13(x,y,z)), h2*(x,y,z)«h2(I13(x,y,z),I23(x,y,z)), h3*(x,y,z)«h3(I13(x,y,z),I23(x,y,z),I33(x,y,z)).
Функции h1* и h2* получены из функций h1 и h2 соответственно операцией введения фиктивных переменных, поэтому h1* - примитивно-рекурсивная функция относительно {h1}, h2* - примитивно-рекурсивная функция относительно {h2}. Очевидно, h3* - примитивно-рекурсивная функция относительно совокупности {h3}. А т.к. выполняется равенство j=Sub33(g;h1*,h2*,h3*), то j является примитивно-рекурсивной функцией относительно совокупности {g,h1*,h2*,h3*}. Применяя первое свойство относительной примитивной рекурсивности, получаем, что j является примитивно-рекурсивной функцией относительно совокупности функций {g,h1,h2,h3}.
4. Операции конечного суммирования и конечного произведения
Определение [Матросов,1989,с.25].
(1) Говорят, что функция f(x1,...,xn,y) получена из функции g(x1,...,xn,z) в результате операции конечного суммирования, если для любого набора значений переменных (x1,...,xn,y)
f(x1,...,xn,y)=g(x1,...,xn,0)+g(x1,...,xn,1)+...+g(x1,...,xn,y).
В дальнейшем будем применять следующее обозначение:
(2) Говорят, что функция f(x1,...,xn,y) получена из функции g(x1,...,xn,z) в результате операции конечного произведения, если для любого набора переменных (x1,...,xn,y)
f(x1,...,xn,y)=g(x1,...,xn,0)×g(x1,...,xn,1)×...×g(x1,...,xn,y).
В дальнейшем будем использовать следующее обозначение:
Предложение [Матросов,1989,с.25-26].
Операции конечного суммирования и конечного произведения примитивно-рекурсивны относительно совокупности {g}
Доказательство.
Рассмотрим операцию конечного суммирования. Пусть
Тогда имеет место следующая система равенств:
Тогда функцию f можно представить как результат примитивной рекурсии, т.е. f=Rec(g1,h), где:
g1«g(I1n(x1,...,xn),...,Inn(x1,...,xn),0), h(x1,...,xn,y,z)«gïI1 n+2 (x1,...,xn,y,z),...,Inn+2 (x1,...,xn,y,z),
In+1 n+2 (x1,...,xn,y,z)+1ï+In+2 n+2 (x1,...,xn,y,z).
Действительно, легко проверить, что имеют место равенства:
Из способа задания функций g1 и h следует, что g1 и h являются примитивно-рекурсивными функциями относительно совокупности {g}. Очевидно функция f, представляющая результат примитивной рекурсии над функциями g1 и h, также примитивно-рекурсивна относительно совокупности, состоящей из одной функции g.
Аналогично можно провести доказательство и для операции конечного произведения.
Предложение доказано (для операции конечного суммирования).
Следствие [Матросов,1989,с.26].
Операции конечного суммирования и конечного произведения сохраняют примитивную рекурсивность функций.
36 Определение. Говорят, что функция y получена из функций j и f1,...,fm операцией постановки (суперпозицией) и обозначают этот факт: y=Submn(j;f1,...,fm) или просто y=Sub(j;f1,...,fm), если y(x1,x2,...,xn)=j(f1(x1,x2,...,xn),...,fm(x1,x2,...,xn)). Остановимся на важном применении функций проецирования, предложенном К.Гёделем (1934). Заметим, что все функции, определяемые термами fi, зависят от n переменных, а функция, определяемая термом j, имеет столько переменных, каково количество термов fi. Однако иногда требуется найти результат суперпозиции некоторых функций, но какое-то из указанных выше условий (все функции fi зависят от n переменных, а у функции j имеется столько переменных, каково количество функций fi) не выполнены. Тем не менее, за счет введения фиктивных аргументов и функций Imn это можно сделать. Примеры. 1. Функция y(x,y,z)=j(f1(x),f2(x,y,z),y,z) получена суперпозицией из функции j(x1,x2,x3,x4) и функций F1(x,y,z)«I13(x,y,z), F2(x,y,z)«f2(x,y,z), F3(x,y,z)«I23(x,y,z), F4(x,y,z)«I33(x,y,z). 2. Пусть j(x,y,z)«z(x,h(y,q(x)),2). Определение функции j через функции z,h,q может быть символически выражено так: j=Sub33(z;I13,Sub23(h;I23,Sub13(q;I13)),C23). "Вывод" можно записывать и следующим образом: Мы будем строить класс вычислимых функций, который будет замкнутым относительно суперпозиции функций, т.е. если он содержит некоторые функции, то он содержит и их суперпозицию. Ответ на вопрос, почему это так, даёт следующее Предложение (свойства суперпозиции). Операция подстановки сохраняет: (1) интуитивную вычислимость функций; (2) всюду определённость функций. Доказательство. (1) Если мы каким-либо образом умеем вычислять значения функций f1,...,fm и j, то ясно, как надо вычислять значение функции y. Придадим переменным x1,...,xn некоторые значения a1,...,an. Вычислим все fi(a1,...,an). Получим b1=f1(a1,...,an),...,bm=fm(a1,...,an). Вычисляя теперь c=j(b1,...,bm), получим: y(a1,...,an)=c. Итак, если функции f1,...,fm,j интуитивно вычислимы, то и функция y интуитивно вычислима. (2) Если все функции f1,...,fm и j - всюду определённые, то функция y всюду определена. Функция y будет не всюду определённой, если одна из функций f1,...,fm не всюду определена или если можно найти такие a1,...,an, что b1=f1(a1,...,an),...,bm=fm(a1,...,an), но значение j(b1,...,bm) неопределено. Предложение доказано.
Определение. Будем говорить, что функция f(x1,...,xn,y) получена из функций g и h в результате применения операции примитивной рекурсии, если: (а) для n¹0 имеют место равенства Эта система равенств называется схемой примитивной рекурсии с параметрами x1,...,xn (первое равенство называется начальным условием, а второе - рекурсивным шагом); (б) для n=0 имеют место равенства (qÎN) Эта система равенств называется схемой примитивной рекурсии без параметров. Функцию, полученную операцией примитивной рекурсии, обозначим: (а) для n=0: f(x)=Rec(q,h(x,y)) или f=Rec(q,h); (б) для n¹0: f(x1,...,xn,y)=Rec(g(x1,...,xn),h(x1,...,xn,y,z)) или f(x1,...,xn,y)=Recn(g(x1,...,xn),h(x1,...,xn,y,z)), или f=Rec(g,h), или f=Recn(g,h). Примеры (схем примитивной рекурсии). 1. g(x)«0, 2. g(x)«1, 3. g(x)«x, h(x,y,z)«z+x, h(x,y,z)«z×x, h(x,y,z)«xz, Оказывается (это можно доказать методом математической индукции), что приведённые схемы описывают соответственно функции: x x f(x,y)=x×y; f(x,y)=xy; f(x,2)=x ,... Мы будем строить класс вычислимых функций, который будет замкнутым относительно операции примитивной рекурсии, т.е. если он содержит некоторые функции из строящегося класса, то он содержит и результат применения к ним операции примитивной рекурсии. Ответ на вопрос, почему это так, даёт следующее Предложение (свойства операции примитивной рекурсии). Операция примитивной рекурсии сохраняет: (1) всюду определённость функций; (2) интуитивную вычислимость функций. Доказательство. (1) Действительно, пусть f=Rec(g,h), и функции g(x1,...,xn) и h(x1,...,xn,y,z) всюду определены. Докажем, что функция f определена на любом наборе (x1,...,xn,y). Проведём доказательство индукцией по y. (а) y=0, тогда f(x1,...,xn,0)=g(x1,...,xn), а т.к. функция g всюду определена, то функция f на наборе (x1,...,xn,0) также определена. (б) Пусть на наборе (x1,...,xn,y) функция f определена. Тогда по определению операции примитивной рекурсии f(x1,...,xn,y+1)=h(x1,...,xn,y,f(x1,...,xn,y)). В силу всюду определённости функции h, получаем, что функция f определена на наборе (x1,...,xn,y+1), а т.к. f:Nn+1®N - арифметическая функция, то метод математической индукции позволяет сделать вывод, что функция f всюду определена. (2) Аналогично тому, как это делалось для операции подстановки, можно показать, что если функции g и h интуитивно вычислимы и f=Rec(g,h), то существует и алгоритм af, вычисляющий функцию f. Этот алгоритм состоит в следующем. Пусть задан некоторый набор (x1,...,xn,y). Применяем алгоритм ag, вычисляющий функцию g, к набору (x1,...,xn). В случае остановки через конечное число шагов получаем значение функции g на наборе (x1,...,xn), равное, по определению, f(x1,...,xn,0). После этого используем алгоритм ah, вычисляющий функцию h, применяя его последовательно к наборам (x1,...,xn,0,f(x1,...,xn,0)), (x1,...,xn,1,f(x1,...,xn,1)),..., (x1,...,xn,y-1,f(x1,...,xn,y-1)). Если каждый раз работа алгоритма ah заканчивается остановкой, в результате мы получим соответственно значения: h(x1,...,xn,1,f(x1,...,xn,1))=f(x1,...,xn,2),..., h(x1,...,xn,y-1,f(x1,...,xn,y-1))=f(x1,...,xn,y). Если же не произошло остановки алгоритма ag при работе на наборе (x1,...,xn) или не закончилась результативно работа алгоритма ah на одном из этапов (при вычислении h(x1,...,xn,yl,f(x1,...,xn,yl-1)) для какого-то ylÎ{0,1,...,y-1}), то перехода к следующему этапу никогда не произойдет, и искомый алгоритм af считаем неприменимым к набору (x1,...,xn,y). Предложение доказано. Таким образом, наш метод описания класса функций состоит в отборе функций, получаемых с помощью рекурсивных определений. МетаОпределение (содержательное). (1) Рекурсивным определением (лат.recurso, recurro) - "бежать назад, возвращаться") называется определение, которое основывается на "возвращении" от неизвестного к известному. (2) Рекурсивное определение функции - это определение, в котором значения функции для данных аргументов непосредственно определяются значениями той же функции для "более простых" аргументов или значениями "более простых" функций. Термин "более простой" следует уточнять выбором формализаций (простейшими, как правило, являются все константы).
45) Маши́на Тью́ринга (МТ) — абстрактный исполнитель (абстрактная вычислительная машина). Была предложена Аланом Тьюрингом в 1936 году для формализации понятия алгоритма.
Машина Тьюринга является расширением конечного автомата и, согласно тезису Чёрча — Тьюринга, способна имитировать все другие исполнители (с помощью задания правил перехода), каким-либо образом реализующие процесс пошагового вычисления, в котором каждый шаг вычисления достаточно элементарен
|