- •§ 8. Диафантовы множества.
- •Теорема Лагранжа.
- •8.1. Разрешимость в натуральных числах.
- •Определение.
- •Определение.
- •Теорема 8.1.
- •Теорема 8.2.
- •Необходимость.
- •Достаточность.
- •8.2. Нумерация кортежей.
- •Канторова нумерация.
- •Геделево кодирование.
- •Определение.
- •Теорема 8.3.
- •Теорема 8.4.
- •Определение.
- •0.2. Машина с неограниченными регистрами (мнр) [Ктл, c.16]
- •0.3. Равнодоступные адресные машины (рам) [Ахо, с.22]
- •Типы операндов.
- •Команды.
- •0.4. Интерпретация программы как функции.
- •0.6. Вычислительная сложность рам-программ.
- •Определение.
- •Определение.
- •Определение.
- •Логарифмический критерий.
- •0.7. Модификации рам.
- •0.8. Неветвящиеся программы и равномерный весовой критерий.
- •Определение.
- •0.9. Неветвящиеся программы и логарифмический весовой критерий.
- •0.10. Ветвления.
- •0.11. Операции с двоичными векторами фиксированной длины. Определение.
- •Определение.
- •0.12. Машина Тьюринга (k-ленточная).
- •Определение.
- •Определение.
- •0.13. Связь мт и рам.
- •Теорема 0.1.
- •Утверждение 1.
- •Утверждение 2.
- •§ 1. Структуры данных. Определение.
- •1) Вставка.
- •2) Удаление.
- •1.1. Очередь и стек. Определение.
- •Определение.
- •1.2. Множества. Представление множеств.
- •1) Применение списков.
- •3) Представление в виде массивов.
- •4) Представление в виде графа.
- •Определение.
- •Определение.
- •§ 2. “Разделяй и властвуй”.
- •Теорема 2.1
- •§ 3. Динамическое программирование
- •Алгоритм 3.1.
- •§ 4. Редактирующее расстояние
- •Алгоритм 4.1.
- •Алгоритм 4.2.
- •§ 5. Порядковые статистики Определение.
- •Алгоритм 5.1
- •Теорема 5.2.
- •§ 6. Вхождение образца
- •Определение.
- •Алгоритм 6.1a.
- •Алгоритм 6.1б. Вычисление функции отказов.
- •Теорема 6.2.
- •Алгоритм 6.1.Б вычисляет f за o(n) шагов.
- •Конец пока
- •Алгоритм lz
- •Дельта – алгоритм
- •Арифметическое кодирование
0.13. Связь мт и рам.
РАМ может моделировать работу k-ленточной МТ, помещая по одной клетке МТ в регистр. В частности i-ую клетку j-ой ленты можно хранить в регистре ki+j+c, где c- постоянная, назначение которой - дать РАМ некоторое “оперативное пространство”. В него включаются k регистров для запоминания положения k головок МТ. РАМ может считывать клетки МТ, используя косвенную адресацию с помощью регистров, содержащих положение головок на лентах.
Предположим, что данная МТ имеет временную сложность T(n)n. Тогда РАМ может прочитать ее вход, запомнить его в регистрах, представляющих первую ленту, и смоделировать эту МТ за время O(T(n)) при равномерном весовом критерии и O(T(n) log T(n)) при логарифмическом.
В любом случае время на РАМ ограничено сверху полиномом от времени МТ, т.к. любая функция типа O(T(n) log T(n)) есть O((T(n))2).
Обратное утверждение верно только при логарифмическом весовом критерии для РАМ. При равномерном весе n-шаговая программа для РАМ без входа может вычислять числа порядка 2^(2n), что требует порядка 2n клеток МТ только для запоминания и считывания. Поэтому при равномерном весе нет полиномиальной связи между РАМ и МТ.
Теорема 0.1.
РАМ с логарифмическим весом и kленточные машины Тьюринга полиномиально связаны.
Утверждение 1.
Пусть L- язык, допускаемый некоторой РАМ за время Т(n) при логарифмическом критерии.
Если в РАМ -программе нет умножений и делений, то на многоленточных МТ L имеет временную сложность не более O(T2 (n)).
Построим по РАМ МТ.
Представим все не содержащие нуля регистры рассматриваемой РАМ, как показано на рис.3.
На первой ленте МТ помещена последовательность пар чисел (ij, cj), записанных в двоичной форме без нулей в начале слова и разделенных маркерами.
Для каждого j число сj содержимое регистра ij РАМ.
Содержимое сумматора хранится на второй ленте, а третья играет роль рабочей памяти. Еще две ленты служат для записи входа и выхода РАМ. Каждый шаг программы РАМ представлен конечным числом состояний МТ.
Рассмотрим команду ADD*20. Для нее можно устроить МТ так, чтобы она работала следующим образом.
-
На ленте 1 отыскивается место, соответствующее регистру 20 в РАМ, т.е. последовательность ##10100#. Если оно находится,на ленту 3 помещается следующее за ним число, которое будет содержимым регистра 20. Если такое место не найдено, машина останавливается содержимое регистра 20 равно нулю, и поэтому косвенную адресацию прооизвести нельзя.
-
На ленте 1 отыскивается место, где хранится регистр РАМ, номер которого записан на ленте 3. Если оно находится, то содержимое этого регистра записывается на ленте 3. Если нет, туда помещается 0.
-
Число, записанное на ленту 3 на шаге 2, прибавляется к содержимому сумматора, которое хранится на ленте 2.
Для моделирования STORE 30 можно так построить МТ, чтобы она работала следующим образом.
-
Разыскивается место расположения регистра 30 в РАМ, т.е. ##11110#.
-
Если оно находится, то на ленту 3 записывается все, что расположено справа от ##11110#, кроме числа, стоящего непосредственно справа ( т.е. старого содержимого регистра 30). Затем содержимое сумматора ( на ленте 2 ) записывается непосредственно справа от ##11110#, а за ним помещается слово, скопированное на ленту 3.
-
Если на ленте 1 не нашлось места, соответствующего регистру 30, то, дойдя до самого левого пустого символа, машина печатает 11110#, затем содержимое сумматора и, наконец, ##.
Таким образом можно указать МТ, которая правильно смоделирует РАМ. Надо показать, что вычисление на РАМ с логарифмическим весом k потребует не более O (k2) шагов на МТ. Учтем, что регистр может появиться на ленте 1, только если его текущее значение когда-то раньше было помещено в этот регистр. Вес записи cj в регистр ij равен l(cj) + l(ij), что с точностьюдо постоянной равно длине нашего представления ## ij# cj##. Отсюда заключаем, что длина непустой части ленты 1 есть O(k).
Моделирование любой команды, отличной от STORE, имеет порядок длины ленты 1, т.е. O(k), так как основное вреия уходит на поиск на ленте. Аналогично время моделирования STORE не больше суммы времен поиска на ленте 1 и копирования ее все вместе O(k). Следовательно, одну команду РАМ ( кроме умножения и деления ) можно пормоделировать не более чем за O(k) шагов МТ. Так как одна команда РАМ занимает при логарифмическом весе по крайней мере одну единицу времени, общее время, затрачиваемое соответствующей МТ, есть O(k2).