
теория вычислительной сложности / up2
.pdf
Задание 2.1:
Фирма LOOPSOFT продает язык программирования LOOP++. Дополнительно к операторам LOOP -программ язык допускает следующую конструкцию
IF xi = 0 THEN A ELSE B END
При этом A и B произвольные LOOP + +-программы. Семантика естественна.
Цена LOOP + + существенна выше LOOP . Оправдано ли это, или LOOP + +-программы не способны вычислить больше функций, чем LOOP -программы ?
Задание 2.2:
Найти LOOP -программы для следующих функций. Можно использовать LOOP -макросы и результат предыдущей задачи.
1.умножение: n · m,
2.факториал n!,
3.деление нацело DIV : n DIV m = max{a | a · m ≤ n},
√√
4. корень квадратный |
: n = - наименьшее натуральное число m |
такое, что n ≤ m2, |
|
5.возведение в степень n,
6.обратная функция q1, q2 : IN → IN к биекции r2 : IN × IN → IN, то есть для n IN верно: r2(q1(n), q2(n)) = n.
Задание 2.3:
Рассмотрите следующие программы P1, P2 und P3. Программа Pi имеет вложения LOOP -петель глубины i. Определите значение x0, вычисляемое программами при x1 = 3. Какие функции вычисляют программы ?
1

P1: |
P2: |
P3: |
|
|
x0 := x1 ; |
|
x0 := x1 ; |
LOOP x0 DO |
x0 := x1 ; |
LOOP x0 DO |
LOOP x0 DO |
LOOP x0 DO |
LOOP x0 DO |
LOOP x0 DO |
x0 := x0 + 1 |
x0 := x0 + 1 |
x0 := x0 + 1 |
END |
END |
END |
|
END |
END |
|
|
END |
Задание 2.4:
Показать, что функция mm : IN → IN не LOOP -вычислима. Множество Pn состоит из всех LOOP -программ длины не более n.
Для LOOP -программы P функция ей вычислимая обозначается через fP : IN → IN.
Функция mm с аргументом n равна наименьшему натуральному числу, которое невычислимо никакой программой из Pn при входе n:
mm(n) = min(IN − {fP (n) | P Pn}) .
Задание 2.5:
Является ли функция f : N → N, вычислимая следующей программой, LOOP -вычислимой?
x0 := x1 + 1; WHILE x0 6= 1 DO
IF x0-четно THEN x0 := x20
ELSE x0 := 3 · x0 + 1
END END
2