Автор работы: Пользователь скрыл имя, 27 Января 2012 в 00:57, шпаргалка
Работа содержит ответы на вопросы по дисциплине "Программирование и компьютеры"
3) Перестановка одноимённых кванторов: "x"y A(x, y) º "y"x A(x, y); $x$y A(x, y) º $y$x A(x, y);
4) Переименование связанной переменной: "x P(x) º "y P(y);
5) А также
основные равносильности
Приведённая формула – формула, в которой из логических связок используются только отрицание ( Ø ), конъюнкция ( & ) и дизъюнкция ( Ú ), причём отрицание стоит только над предикатными символами.
Для любой формулы алгебры предикатов можно построить равносильную ей приведённую формулу, причём множества свободных и связанных переменных этих формул будут совпадать.
Алгоритм получения приведённой формы формулы:
Шаг 1. С помощью основных равносильностей избавиться от импликации ( ® ) и эквиваленции ( « );
Шаг 2. С помощью законов де Моргана, снятия двойного отрицания и переноса квантора через отрицание получить приведённую формулу.
Пример: "x$y P(x, y) ® $x"y Q(x, y) º Ø("x$y P(x, y)) Ú $x"y Q(x, y) º $x"y ØP(x, y) Ú $x"y Q(x, y).
Нормальная формула – формула, которая не содержит кванторов, или все кванторы вынесены в начало формулы.
Для любой формулы алгебры предикатов можно построить равносильную ей нормальную формулу, имеющую ту же самую длину, что и исходная формула.
Алгоритм получения нормальной формы формулы(Привожу свою реализацию (она неоптимальная, но очень простая)):
Шаг 1: Построить приведённую форму формулы;
Шаг 2: Для каждой подформулы, содержащей связанные переменные, осуществить переименование этих переменных, добившить их уникальности в пределах всей формулы;
Шаг 3: Вынести все кванторы в начало формулы.
Пример: $x"y ØP(x,
y) Ú $x"y
Q(x, y) º $a"b ØP(a,
b) Ú $c"d
Q(c, d) º $a"b$c"d
(ØP(a,
b) Ú
Q(c, d)).
3. Вычислимые функции. Простейшие функции. Операции над функциями: суперпозиция функций, схема примитивной рекурсии, оператор минимизации. Примитивно-рекурсивные функции. Частично-рекурсивные и общерекурсивные функции.
Функция f (x1, …, xn) является эффективно-вычислимой, если существует алгоритм, т.е. некоторая механическая процедура, которая позволяет найти значение функции f, если известны значения её аргументов.
Их 3:
1) оператор сдвига: l (x) = x + 1;
2) оператор аннулирования (0-функция): 0 (x) = 0;
3) оператор проецирования (функция тождества): Inm (x1, …, xn) = xm (служит для введения фиктивных переменных) (Например, I32 (x, y, z) = y).
Простейшие функции определены для любого натурального x и являются интуитивно вычислимыми.
Пусть даны функции f1 (x1, …, xn), …, fm (x1, …, xn) и j (x1, …, xm). Тогда функция y (x1, …, xn) = j (f1 (x1, …, xn), …, fm (x1, …, xn)) является суперпозицией функции j (f1, …, fm). Операцию суперпозиции можно записать в виде оператора: y (x1, …, xn) = Smn (j, f1, …, fm). Если функции fi и j интуитивно вычислимы, то их суперпозиции также интуитивно вычислимы.
Пример: Необходимо получить y (x, y) = j (f1 (x1, x2), f2 (x), y). Используя операторы аннулирования, проецирования и суперпозиции, получаем: y (x, y) = S32 (j (x, y, z), f1 (x, y), S21 (I21 (x, y), f2 (x), 0 (x)), I22 (x, y)).
Пусть даны n-местная функция j (x1, …, xn), n+2-местная функция y (x1, …, xn, y, z) и n+1-местная функция f (x1, …, xn, y). Тогда функция f получена из функций j и y по схеме примитивной рекурсии, если f (x1, …, xn, 0) = j (x1, …, xn) [т.е. базис рекурсии] и f (x1, …, xn, y+1) = y (x1, …, xn, y, f (x1, …, xn, y)). Если функции j и y интуитивно вычислимы, то функция f также интуитивно вычислима.
Пример: Записать по схеме примитивной рекурсии функцию f (x, y) = x + y. Получаем: f (x, 0) = x и f (x, y+1) = f (x, y) + 1 [т.е. y (x, y, y, f(x, y)) = f (x, y) +1].
Для функции f (x1, …, xn, y) зафиксируем значения x1, …, xn и найдём минимальное значение y, для которого f (x1, …, xn, y) = 0. Для этого служит оператор минимизации (m-оператор): j (x1, …, xn) = my [f (x1, …, xn, y) = 0]. Процедура работы оператора заключается в последовательном вычислении значений f (x1, …, xn, i) для i от 0 до ¥, а именно, до тех пор, пока f (x1, …, xn, i) не обратится в 0.
Функция называется примитивно-рекурсивной, если она получена из простейших функций с помощью конечного числа операций суперпозиции и примитивной рекурсии.
Функция f (x1,
…, xn) называется частично-рекурсивной,
если она может быть получена из множества
простейших функций с помощью конечного
числа операций суперпозиции, примитивной
рекурсии и m-оператора. Функция
f (x1, …, xn) называется общерекурсивной,
если она частично-рекурсивная и определена
при всех значениях аргумента из множества
натуральных чисел.
4. Функционирование машины Тьюринга. Конструирование машин Тьюринга. Композиция машин. Вычислимые по Тьюрингу функции.
Машина Тьюринга состоит из ленты, управляющего устройства и головки. Лента представляет собой потенциально бесконечный в обе стороны массив, в ячейках которого содержатся символы внешнего алфавита A с выделенным пустым символом a0 [т.е. символом, находящимся внутри каждой пустой ячейки]. Управляющее устройство управляет работой машины Тьюринга и может находиться в одном из состояний, определённых внутренним алфавитом Q с выделенными начальным состоянием q1 и конечным состоянием q0 (попав в q0, машина останавливается). Головка в каждый момент времени указывает на одну из ячеек ленты и может изменить её содержимое на другой символ алфавита A, переместиться по ленте на одну ячейку влево ( < ) или вправо ( > ), либо остаться на месте ( = ). На каждом шаге работы машина Тьюринга, находясь в некотором состоянии qs, считывает содержимое текущей ячейки ai, записывает туда символ aj, осуществляет сдвиг s и переходит в состояние qr. В таком случае говорят, что была выполнена команда ai qs ® aj s qr.
Сконструировать машину Тьюринга – значит задать внешний алфавит A, внутренний алфавит Q и составить для неё программу П. Программа машины Тьюринга – совокупность всех её команд, причём у каждой команды пара ai qs должна быть уникальна(Для детерминированной машины Тьюринга). Программа может быть представлена в виде таблицы.
Пример: На ленте записано натуральное десятичное число. Необходимо сконструировать машину Тьюринга, увеличивающую это число на 1. Изначально головка указывает на первую цифру числа. Получаем: A = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a0}, Q = {q1, q2, q0}. П – см. таблицу.
0 | 1 | 2 | 3 | 4 | |
q1 | 0>q1 | 1>q1 | 2>q1 | 3>q1 | 4>q1 |
q2 | 1=q0 | 2=q0 | 3=q0 | 4=q0 | 5=q0 |
5 | 6 | 7 | 8 | 9 | a0 |
5>q1 | 6>q1 | 7>q1 | 8>q1 | 9>q1 | a0<q2 |
6=q0 | 7=q0 | 8=q0 | 9=q0 | 0<q2 | 1=q0 |
Общая идея – переместить головку на последнюю цифру числа, и если эта цифра не 9, то увеличить её на единицу, иначе обратить в ноль и перейти к предыдущей ячейке.
Композицией машин Тьюринга M1 = <A1, Q1, П1> и M2 = <A2, Q2, П2> при условии, что Q1 Ç Q2 = Æ, называется машина Тьюринга M = M1 · M2 = <A1 È A2, Q1 È Q2 \ {q10}(q10 – заключительно состояние M1), П1 + П2>, реализующая последовательное выполнение M1 и M2. Все вхождения q10 в П1 заменяются на q21 (q21 – начальное состояние M2)[т.е. программа второй машины Тьюринга начинает работу в момент окончания работы первой, происходит передача управления].
Информация о работе Шпаргалка по "Программированию и компьютерам"