Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Семинарские занятия- общие рекомендации.doc
Скачиваний:
14
Добавлен:
18.11.2019
Размер:
231.42 Кб
Скачать

1. Экспонента числа px в числе y

exxy

Введем еще одну важную для дальнейшего функцию. Эту функцию мы будем обозначать через ex(x, y) или, сокращенно, exxy и называть экспонентой числа px в числе y. По определению, при y≠0 exxy полагаем равным показателю наивысшей степени простого числа px, на которую делится y. Для y=0 полагаем, по определению exx0=0 для всех значений x. Например,

ex08=3, ex18=0, ex00=0.

Каждое натуральное число n>1 можно однозначно представить в виде произведения

N=pi0a0 pi1a1… pisas (aj>0, i0<i1<…<is)

положительных степеней различных простых чисел. Отсюда в силу определения функции ex получаем

exi0n=a0, … , exisn=as

и exin=0 для всех значений i, отличных от i0, …,is.

Чтобы доказать примитивную рекурсивность функции ex (x,y), мы снова воспользуемся теоремой о мажорируемой неявной функции. По определению, ex (x,y+1) есть наибольшее значение u, для которого pxu есть делитель y+1. Поэтому можно утверждать также, что ex (x,y+1) есть наименьшее значение u, для которого pxu+1 не делит y+1, то есть

ex (x, y+1)=u(unsg rest(y+1, pxu+1)=0) (1)

Функция pxu+1 примитивно рекурсивна и, кроме того,

ex(x,y+1)<=y+1. (2)

В силу упомянутой теоремы о мажорируемых неявных функциях, из (1) и (2) следует, что функция ex(x,y+1), а с нею и ex(x,y) = ex(x,(y÷1)+1) примитивно рекурсивны.

2. Квадратичный остаток числа X

q(x)

Рассмотрим еще функцию

q(x)=x ÷ [√x]2,

где символом [z] обозначается целая часть вещественного числа z, равная наибольшему целому, не превосходящему z. Число q(x) называется квадратичным остатком числа x. Оно равно расстоянию от x до ближайшего слева точного квадрата.

Равенство n=[√x] Равносильно соотношению

n2<=x<(n+1)2,

где n – натуральное. Таким образом,

[√x]=μt(sg((t+1)2 ÷ x)=1)

и вместе с тем [√x] <=x. По теореме о мажорируемой неявной функции отсюда следует, что функция [√x] примитивно рекурсивная. Вместе с нею примитивно рекурсивной является и функция q(x)=x ÷ [√x]2.

3. Нумерация пар чисел

с (x,y)

x

0

1

2

3

4

0

1

2

3

(x,y)

4

y

Все пары натуральных чисел можно расположить в простую последовательность и притом многими способами. Для определенности рассмотрим следующее расположение этих пар, которое будем называть канторовским.

(0,0); (0,1), (1,0); (0,2), (1,1), (2,0); (0,3), …

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

Обозначим через с (x,y) номер пары (x,y) в последовательности, причем нумерацию начинаем с нуля.

Т.о. с(0,0)=0, с(0,1)=1, с(1,0)=2 и т.д.

с (x,y) = 1/2 * (x+y)(x+y+1) + x = 1/2 * ((x+y)2+3x+y) = div2((x+y)2+3x+y)

Функция div2 примитивно-рекурсивна, а значит и функция с (x,y) – тоже примитивно рекурсивна.

Контрольная работа №3

Плановое время строго не более 30 минут.

СЕМИНАР 14

Сложность машины Тьюринга для вычисления функции f(n)=2n+3.

Вычисления производятся в так называемом «унарном коде». Натуральные числа представляются палочками: 0-одной палочкой ,1-двумя палочками; 2-тремя и т.д. Значение аргумента n записывается на машинной ленте n+1 палочками после начальной метки  ; значение функции f(n)=2n+3 записывается 2n+4 палочками через клетку от значения аргумента. Закончив запись значения функции, машина возвращается в начальную клетку и останавливается. Значения аргумента и функции остаются на ленте.

Машина работает так:

  1. Копирует каждую палочку в значении аргумента дважды, что дает 2n+2 палочек в значении функции .

  2. Прибавляет к ним еще две палочки и возвращается в начальную клетку.

Таблица машины:

Команды

Команды

1

A   R A

12

E Я Я L C

2

A 1 X R B

13

F 1 1 L F

3

B 1 T L C

14

F Я Я L F

4

B Я Я R D

15

F T T L F

5

C 1 1 L C

16

F  1 R E

6

C X X R E

17

F I T R E

7

C T 1 R B

18

F X 1 L F

8

D 1 1 R D

19

F   S F

9

D Я 1 L F

20

G 1 1 R G

10

E 1  R G

21

G T T R G

11

E T I R G

22

G Я Я R D

При построении машины объединялись внутренние состояния, которые допускали объединение, т.е. не участвовали в противоречащих конфигурациях.

Первый этап состоит из n+1 циклов. Палочка, копируемая в данном цикле, заменяется меткой . В следующем цикле эта метка передвигается вправо.

Первый цикл:

копирование

 А 1 1 1 Я,   В 1 1 Я,   1 В 1 Я,   1 1 В Я,   1 1 Я С,   1 1 Я 1 D,

  1 1 Я E 1 1

возвращение

  1 1 Е Я 1 1,   1 Е 1 Я 1 1,    1 1 Я 1 1,    1 1 Я 1 1 .

Второй цикл:

копирование

 1 А 1 1 Я 1 1,  1  В 1 Я 1 1,  1  1 В Я 1 1,  1  1 Я С 1 1,  1  1 Я 1 С,

 1  1 Я 1 1 С,  1  1 Я 1 1 1 D,  1  1 Я 1 1 Е 1 1;

возвращение

 1  1 Я 1 Е 1 1 1,  1  1 Я Е 1 1 1 1,  1  1 Е Я 1 1 1 1,  1  Е 1 Я 1 1 1 1,  1 Е  1 Я 1 1 1 1.

Третий цикл:

копирование

 1 1 А 1 Я 1 1 1 1,  1 1  В Я 1 1 1 1,  1 1  Я С 1 1 1 1,  1 1  Я 1 С 1 1 1,

 1 1  Я 1 1 С 1 1,  1 1  Я 1 1 1 С 1,  1 1  Я 1 1 1 1 С,  1 1  Я 1 1 1 1 1 D

 1 1  Я 1 1 1 1 Е 1 1;

возвращение

 1 1  Я 1 1 1 Е 1 1 1,  1 1  Я 1 1 Е 1 1 1 1,  1 1  Я 1 Е 1 1 1 1 1,

 1 1  Я Е 1 1 1 1 1 1,  1 1  Е Я 1 1 1 1 1 1,  1 1 Е  Я 1 1 1 1 1 1.

Второй этап:

Прибавление двух палочек

 1 1 1 А Я 1 1 1 1 1 1,  1 1 1 Я С 1 1 1 1 1 1,  1 1 1 Я 1 С 1 1 1 1 1,

 1 1 1 Я 1 1 С 1 1 1 1,  1 1 1 Я 1 1 1 С 1 1 1,  1 1 1 Я 1 1 1 1 С 1 1,

 1 1 1 Я 1 1 1 1 1 С 1,  1 1 1 Я 1 1 1 1 1 1 С,  1 1 1 Я 1 1 1 1 1 1 D,

 1 1 1 Я 1 1 1 1 1 1 Е 1 1 ;

Возвращение

 1 1 1 Я 1 1 1 1 1 Е 1 1 1,  1 1 1 Я 1 1 1 1 Е 1 1 1 1,  1 1 1 Я 1 1 1 Е 1 1 1 1 1,

 1 1 1 Я 1 1 Е 1 1 1 1 1 1,  1 1 1 Я 1 Е 1 1 1 1 1 1 1,  1 1 1 Я Е 1 1 1 1 1 1 1 1,

 1 1 1 Е Я 1 1 1 1 1 1 1 1,  1 1 Е 1 Я 1 1 1 1 1 1 1 1,  1 Е 1 1 Я 1 1 1 1 1 1 1 1,

 Е 1 1 1 Я 1 1 1 1 1 1 1 1, Е  1 1 1 Я 1 1 1 1 1 1 1 1.

Машина вернулась в начальную клетку и остановилась. Первый этап занял 1+11+13+15=40 тактов, второй 10+11=21 такт, вся работа 61 такт.

Точный расчет сложности

Размер задачи - значение аргумента n. Копирование i-n палочки занимает n+1-( i -1)+1+2i+1=n+i+4 единиц времени(тактов), возвращение к ней 2i-1+1+n+1-i=n+i+1, а весь i-n цикл 2n+2i+5. Следовательно, n+1 циклов выполняется за время

2n(n+1)+2i+5(n+1)=3n*n+10n+7,

а весь первый этап-за время 3n*n+10n+8.

Прибавление двух палочек на втором этапе требует 2+2(n+1)+2=2n+6 единиц времени, возвращение в начальную клетку

2(n+1)+1+n+1+1=3n+5.

Следовательно, второй этап выполняется за время 5n+11, а все решение задачи - за время 3n*n+15n+19.

В общем случае задача может иметь много входных слов данного размера. Временная сложность Т(n) машины есть наибольшее время её работы при входных словах размера n. В нашем случае существует только одно входное слово данного размера, поэтому T(n)=3n*n+15n+19.

Пространственная, сложность S(n) машины есть наибольший путь (наибольше число клеток), проходимой ею при входных словах размера n. Нетрудно видеть, что в нашем случае S(n)=1+n+1+1+2(n+1)+2=3n+7. При n=2 получим: Т(2)=61, S(2)=13, в согласии с разобранным примером.

Функции Т(n) и S(n) здесь суть многочлены (полиномы). Следовательно, машина имеет полиномиальную сложность и реализует хороший, быстрый алгоритм. Вычисление функции f(n)=2n+3 – легко разрешимая задача, с точки зрения объема вычислений.

Приближенный расчет сложности

i-ый цикл первого этапа требует O(n) единиц времени, а весь первый этап (n+1)O(n)+1=O(n*n). Второй этап требует О(n) единиц, откуда T(n)=O(n*n)+O(n)=O(n*n ). Ясно также, что S(n)=O(n). Функции T(n) и S(n) суть полиномиальные функции. Задача легко разрешима.

СЕМИНАР 15

Тест №3

Темы, затрагиваемые тестом

-рекурсивные, примитивно-рекурсивные, частично-рекурсивные функции

-непримитивно рекурсивные функции

-рекурсивные и рекурсивно-перечислимые множества

-эффективная перечислимость и распознаваемость рекурсивных, примитивно-рекурсивных, частично-рекурсивных функций

СЕМИНАР 16

ЗАЧЕТ