Если мы рассмотрим только проблемы в P, есть ли какие-то большие промежутки между самым быстрым из известных алгоритмов слово-RAM и самым быстрым из известных алгоритмов машины Тьюринга для конкретных задач? Мне особенно интересно, есть ли большие пробелы для естественных проблем, представляющих общий интерес.
9
Ответы:
Известно, что любая проблема, которую вы можете вычислить на компьютере с оперативной памятью вовремяT(n) , вы можете сделать это в машине Тьюринга в самое большее время T(n)2 , Вы должны заметить, что общий объем используемой памяти не может быть больше, чемT(n) , поскольку это будет означать, что вы сделали больше операций записи, чем T(n) Таким образом, каждый раз, когда вы извлекаете что-то из оперативной памяти, машина Тьюринга будет работать в худшем случае. T(n) время, чтобы найти нужный элемент последовательно с ленты. Помимо доступа к памяти, остальные операции должны занимать примерно столько же времени. И таким образом вы получаете ограничение.
источник
Пример ниже доказывает, что алгоритмA это занимает O(nlog(n)) чтобы решить проблему на слове Ram может понадобиться O(n2log(n)3) на 1-лентной машине Тьюринга (ТМ), которая точно выполняет все вычисления, указанныеA , Я понимаю, что этот вопрос относится к 1-магнитной ленте, и я использую только эту в своем ответе. Это редактирование с учетом замечаний Эмиля Йержабека.
Мы найдем следующий более общий вывод . Доказать, что ТМ может решить вO(T(n)2) проблема решена в O(T(n)) по алгоритму A на оперативной памяти не достаточно запуститьA на ТМ. Умный алгоритм может понадобиться. То же самое относится, если кто-то хочет доказатьO(nlog(n)) накладные расходы. Доказательство существования умного алгоритма, когда это необходимо, кажется далеко не немедленным, если не сказать больше. Это не согласуется с другими ответами, которые в основном предлагают имитировать / выполнять на ТМ все вычисления ОЗУ (алгоритмаA ) объявить сложность ТМ, например, O(T(n)2) или O(T(n)nlog(n)) ,
Проблема: нам дают массив / таблицуtab с n=2k целые числа каждый хранится на log(n) биты. Нам дают второй массивd с log(n) позиции, каждая из которых записывает количество log(n) биты. Для любойt∈[0..log(n)−1] мы определяем Xt=1 если tab[i] MOD d[t]=tab[n/2+i] MOD d[t] ∀i∈[0..n/2−1] , В противном случае,Xt=0 , Вывод∑log(n)−1t=0Xt , Я считаю, что вход дан в виде ленты сnlog(n)+log(n)log(n) двоичные цифры, чтобы обратиться к комментариям Эмиля Jeřábek.
АлгоритмA в ОЗУ ОЗУ с размером словаw=log(n) потребности O(nlog(n)+log(n)2) знак равно O(nlog(n)) читать двоичные строки входных данных. Но после прочтения данных, он может работать только со словамиlog(n) размер. АлгоритмA рассчитывает любой Xt в O(n) пройдя через все i∈[0..n/2−1] и тестирование состояния. Основной циклA это дляt=0,1,2,…log(n)−1 : рассчитать Xt , Общая сложностьO(nlog(n)) (чтение данных) + O(nlog(n)) (делая расчеты), так A может сделать все это в O(nlog(n)) в оперативной памяти
АлгоритмA на ТМ с 1 лентой: Я утверждаю, что ТМ с одной лентой нуждается вO(n2log(n)2) время для фиксированного t , С точки зрения ТМ, определяяAt эквивалентно проверке равенства двух двоичных строк длины O(nlog(n)) , Например, операция MODtab[i] MOD d[t] может быть эквивалентно удалению бита 0 из tab[i] , В таких случаях, определяяAt эквивалентно проверке на равенство на битовых строках с длиной n(log(n)−1)/2 , Хорошо известно, что проверка равенства двух строк длиныm требует O(m2) на 1-ленте ТМ, но я не могу найти ссылку прямо сейчас. Тем не менее, я предоставляю доказательство в пс. Если ТМ выполняет основной цикл изA , это должно потратить как минимум O((nlogn)2) для каждого t=0,1,2,…log(n)−1 заканчивая в O(n2log(n)3) ,
пс. Я показываю, что тестирование на равенствоm биты не могут быть быстрее, чем тестирование palyndrome на строках сm биты (как известно, палиндром занимает по крайней мере O(m2) время). Мы можем модифицировать любой алгоритм TM для проверки на равенство, чтобы решить палиндром. Предположим, что TM тестирования на равенство начинается с двух целых чисел: одного слева от головы, другого справа (это самая простая форма ввода для TM). Каждое движение по левым позициям может быть отражено (отражено) по правым позициям. Мы строим зеркальную ТМ: всякий раз, когда начальная ТМ находится в позиции−x<0 (слева) зеркальная ТМ находится в положении x (справа). Если ТМ решила тестирование на равенство менее чем заO (м2) , this modified mirrored TM
would solve palindrome in less than O (м2) ,
Кроме того, существуют некоторые алгоритмы TM для тестирования на равенство, и все они требуют квадратичного времени, потому что им нужно некоторое зигзагообразное движение, см., Например, Пример 2 машины Тьюринга по адресу courses.cs.washington.edu/courses/cse431/14sp/cribes/ lec3.pdf
источник