Московский государственный университет имени М.В.Ломоносова
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 613 / 27 | Оценка: 5.00 / 4.50 | Длительность: 19:30:00
Специальности: Программист
Лекция 1:

Что такое алгоритм?

Задачи

  1. Постройте машину Тьюринга, которая записывает входное двоичное слово в обратном порядке.
  2. Постройте машину Тьюринга, которая складывает два числа, записанные в двоичной системе. Для определенности считайте, что записи чисел разделены специальным символом алфавита " + ".
  3. Докажите, что не существует алгоритма, который по машине Тьюринга и входу определяет, остановится ли она на этом входе.
  4. Докажите, что не существует алгоритма, который выписывает одну за другой все машины Тьюринга, которые не останавливаются, будучи запущенными на пустой ленте.
  5. Пусть T(n) — максимальное время, которое может пройти до остановки машины Тьюринга с n состояниями и n символами алфавита, если ее запустить на пустой ленте. Докажите, что функция T(n) растет быстрее любой вычислимой всюду определенной функции b(n), то есть \lim [T(n)/b(n)]=+\infty.

    Набор элементарных инструкций у описанных выше машин Тьюринга крайне беден. Имеются разнообразные их обобщения, например, многоленточные машины Тьюринга. В отличие от описанной выше, такая МТ имеет несколько (конечное множество) лент, каждая со своей головкой, управляющему устройству доступны символы, находящиеся в ячейках, на которых расположены головки лент. Выделены две ленты: входная, с которой разрешается только читать символы, и выходная, на которую разрешается только писать символы. Остальные ленты называются рабочими. Многоленточная машина называется k -ленточной, если у нее k рабочих лент. Действие за такт работы состоит в изменении состояния управляющего устройства, изменении символов в ячейках под головками и изменении положений головок на лентах (каждая головка сдвигается не более, чем на одну позицию). Это действие однозначно определяется состоянием управляющего устройства и набором символов в ячейках под головками. Если действие выполнить нельзя, машина останавливается.

    В начале работы многоленточной машины Тьюринга все ленты пусты, кроме входной, на которой записан вход. Результат работы машины — состояние выходной ленты в конце работы.

    Если интересоваться сложностью алгоритмов с точностью до полиномиально ограниченного множителя, многоленточные машины ничего не добавляют по сравнению с описанными выше машинами с единственной лентой.

  6. Докажите, что двухленточную машину Тьюринга, работающую за время T(n)\ge n на входах длины n, можно моделировать на машине с единственной лентой за время O(T^2(n)).
  7. Докажите, что трехленточную машину Тьюринга, работающую за время T(n)\ge n на входах длины n, можно моделировать на двухленточной за время O(T(n)\log T(n)).
  8. Пусть Mмашина Тьюринга с единственной лентой, которая копирует входное слово (приписывая его копию справа от самого слова). Пусть T(n) — максимальное время ее работы на входах длины n. Докажите, что T(n)\ge \varepsilon n^2 для некоторого \varepsilon и для всех n. Что можно сказать про T'(n), которое есть минимальное время ее работы на входах длины n?
  9. Рассмотрим язык программирования, в котором есть всего 100 натуральных переменных, разрешенные операции — прибавление и вычитание 1, разрешенная проверка — не равна ли переменная нулю. Разрешено использовать if-then-else и while, но рекурсия не разрешена. Докажите, что с помощью программ на таком языке программирования можно вычислять любую вычислимую функцию.
  10. Постройте алгоритм, определяющий, является ли данный базис полным. Базисные функции заданы таблицами значений.
  11. Пусть c_n есть максимум сложности c(f) по всем булевым функциям f от n переменных. Докажите, что 1{,}99^n<c_n<2{,}01^n при достаточно больших n.
  12. Глубиной схемы называется максимальное число элементов на пути от входов к выходу. Покажите, что любую функцию можно вычислить схемой глубины не более 3 из элементов \NOT и из элементов \AND и \OR с произвольным числом входов.
  13. Докажите, что если из схемы глубины O(\log n), вычисляющей функцию f\colon\cb^n\to\cb^m, выбросить все несущественные присваивания, то полученная схема имеет полиномиальный по n+m размер.
  14. Постройте схему, которая сравнивает два n -битовых числа и имеет размер O(n), а глубину O(\log n).
    1. Постройте схему сложения двух n -битовых чисел размера O(n).
    2. Тот же вопрос, если дополнительно потребовать, чтобы глубина схемы была O(\log n).
  15. Функция \MAJ\colon \cb^n\to \cb равна 1 на двоичных словах, в которых число единиц больше числа нулей, и 0 — на остальных словах. Постройте схему, вычисляющую эту функцию, размер схемы должен быть линеен по n, глубина — O(\log n\log\log n).
  16. Постройте схему размера \poly(n) и глубины O(\log^2n), которая проверяет, связаны ли путем две вершины в графе. Граф на m вершинах, которые помечены числами от 1 до m, задается n=m(m-1)/2 булевыми переменными. Переменная x_{ij}, где i<j, определяет, есть ли в графе ребро, соединяющее вершины i и j.
  17. Пусть схема глубины 3 из элементов \NOT и из элементов \AND и \OR с произвольным числом входов вычисляет сложение n битов по модулю 2 (функция \PARITY ). Покажите, что размер схемы не меньше c^n для некоторого c>1.
  18. Пусть f_1,f_2,\dots — последовательность булевых функций от 1,2,\dots аргументов. Покажите, что следующие два свойства равносильны:

    1. существует последовательность вычисляющих эти функции формул, размер которых не превосходит полинома от n ;
    2. существует последовательность вычисляющих эти функции схем глубины O(\log n) из элементов \NOT, \AND и \OR (с двумя входами).
  19. Докажите, что существует разрешимый предикат, который принадлежит P/poly, но не принадлежит P.