Сложность вычислений

Машина Тьюринга как вычислительная модель. Примеры вычислений на детерминированной одноленточной машине Тьюринга. Проблемы, решаемые за полиномиальное время, сложность арифметических проблем. Применение теории сложности в программировании и криптографии.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 25.01.2015
Размер файла 375,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

МЕТОДИЧЕСКИЕ УКАЗАНИЯ К КУРСУ

«СЛОЖНОСТЬ ВЫЧИСЛЕНИЙ»

Гамова А.Н.

Введение. Определение сложности вычислений. Вычислительные модели. Меры сложности. Сложностные классы P и NP

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

Известны три пути описания сложности вычислений. Первый базируется на поиске оценок сложности, не зависящих от выбора вычислительной модели, т.е. на внутренней сложности алгоритма. На втором пути исследуются параметры вычислительных моделей, например, число лент многоленточных машин Тьюринга или мощности их языков.

Третий путь аксиоматический, здесь Блюмом были предложены две аксиомы меры сложности. Из доказанных в этой теории теорем следует, что существуют вычислимые функции, не имеющие “наилучшей ” программы вычислений.

Наиболее употребимые меры сложности - время работы машины M (число шагов, переходов) на входе до окончания работы, обозначается tM (n), где n - длина слова . Другой, часто применяемой мерой сложноcти, является емкость, обозначается SM (n), т.е. максимальная длина используемого участка ленты на всех рабочих лентах, по всем шагам вычисления. Если вычисление не заканчивается, время и емкость считаются бесконечными.

машина тьюринг вычислительный сложность программирование криптография

Тема 1. Машина Тьюринга как вычислительная модель

§1. Детерминированная машина Тьюринга

§2. Языки, допускаемые машиной Тьюринга

§3. Многоленточная машина Тьюринга

§4. Недетерминированная машина Тьюринга

§5. Имитация машины Тьюринга на компьютере и компьютера на машине Тьюринга

Самостоятельные занятия

Примеры вычислений на детерминированной одноленточной машине Тьюринга.[3], раздел 2, глава1.

[1], глава 8.

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

Машина Тьюринга представляет собой абстрактную вычислительную машину, состоящую из управления с конечным числом состояний и бесконечной ленты, разделенной на ячейки, в каждой из которых хранится один ленточный символ, и одна из ячеек является текущей позицией ленточной головки. Формальная запись машины Тьюринга - это упорядоченный набор

M = (X, Q, q 0, F, I), где

X - внешний алфавит символов (букв на ленте), включающий символ ;

Q - конечный алфавит внутренних состояний;

q0 - инициальное состояние (начало работы), q0 Q;

F- множество заключительных состояний, F Q;

I - множество инструкций, или машинных команд, каждая из которых принадлежит множеству

(Q \ F) X {} Q X {R,L,S}.

Переходы осуществляются на основе текущего состояния и обозреваемого считывающей головкой символа к следующему состоянию, переписыванию символа и сдвигу головки (вправо R, влево L, на месте S).

Можно определить функцию переходов

: (Q \ F) X* Q X* {R,L,S}, где X* -слова в алфавите X.

В случае однозначной функции машина Тьюринга называется детерминированной машиной Тьюринга.

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

Останов (завершение работы) происходит в заключительном состоянии или когда левая часть (до ) ни одной из машинных команд не содержится в полученной конфигурации. Говорят, что машина допускает вход, если она останавливается на нем в заключительном состоянии.

В качестве примера рассмотрим работу детерминированной машины Тьюринга, вычисляющей функцию m - n. Упорядоченную пару натуральных чисел (m,n) представляем как слово 0m10n в алфавите X \ {} = {0,1}, ячейки слева и справа от которого содержат символ .

q00 Rq1 Состояния Символ

q10 0Rq1 0 1

q11 1Rq2 q0 Rq1 1Sq5 0Sq5

q20 1Lq3 q1 0Rq1 1Rq2

q21 1Rq2 q2 1Lq3 1Rq2 Lq4

q31 1Lq3 q3 0Lq3 1Lq3 Rq0

q30 0Lq3 q4 0Lq4 Lq4 0Sq5

q3 Rq0 q5 Rq5

q2 Lq4 *

q41 Lq4

Таблица 1. Программа вычисления функции m - n,

q40 0Lq4 где функция переходов задается таблицей

q4 0Sq5

q01 1Sq5 *

q51 Rq5

Машина Тьюринга M допускает (отвергает) слово X*, если она останавливается на нем, придя в допускающее (заключительное) состояние. Машина допускает язык L X*, если она допускает все слова языка L. Машина M распознает язык L X*, если она допускает все слова из L и останавливается на словах из X* \ L, не находясь в заключитель ном состоянии. Языки, допускаемые машиной Тьюринга, назовем рекурсивно перечислимым.

Язык L допускается (распознается) за полиномиальное время, если существует машина M, которая допускает (распознает) язык L, причем всякое слово L допускается (распознается) за время O(nk), где n - длина слова , а k - не зависящее от число.

Теперь можно определить класс P, как множество языков L {0,1}*, распознаваемых за полиномиальное время.

Теорема. Класс P есть множество языков, допускаемых за полиномиальное время.

Доказательство. В одну сторону тривиально, если машина M распознает язык L, то она и допускает язык L. Обратно, пусть язык L допускается машиной M за время O(nk), т.е. существует константа c, что любое слово из L длины n допускается не более, чем за T = cnk шагов. С другой стороны, слова, не принадлежащие L, не допускаются ни за какое время. Построим машину M , которая на слове моделирует не более Т = cnk шагов машины M и останавливается, выдавая 1, если M()=1, в противном случае - останавливается, сделав Т = cnk шагов, выдавая на выход 0. Таким образом, машина M распознает язык L и сложностной класс P можно рассматривать, как множество языков, допускаемых за полиномиальное время.

Многоленточная машина Тьюринга

Для имитации работы компьютера используются многоленточные машины Тьюринга. В начальной конфигурации многоленточной машины на первой ленте размещается вход (конечная последовательность символов, куда не входит ), все клетки остальных лент содержат символ , считывающие головки всех лент находятся в начальном состоянии.

За один переход осуществляются следующие действия:

управление переходит в новое состояние,

на каждой ленте записывается новый (или тот же) символ;

считывающие головки каждой из лент независимо сдвигаются на одну ячейку (R,L,S).

Языки, допускаемые одноленточными машинами Тьюринга, рекурсивно перечислимы. Допустимы ли многоленточными машинами не рекурсивно перечислимые языки ? Ответ в следующей теореме.

Теорема. Каждый язык L, допускаемый многоленточной машиной Тьюринга, рекурсивно перечислим.

Доказательство. Одноленточную машину Тьюринга можно представить, как многодорожечную, задавая ее аргументы в виде кортежей. При этом одна дорожка хранит данные, а другая отметку. Смоделируем k - ленточную машину M как многодорожечную машину N, содержащую 2k дорожек, где каждая вторая содержит маркер, указывающий позицию головки соответствующей ленты. Машина N должна посетить каждый из маркеров головок k лент и изменить соответствующим образом символ, представляющий соответствующую ленту, перемещая маркер в том направлении, как это происходило на соответствующей ленте. Наконец, N изменяет состояние М, записанное в конечном управлении N. В качестве допускающих состояний N выбираются все те состояния, в которых запоминалось допускающее состояние M. Таким образом, машина M и N одновременно допускают язык L. Но все языки, допускаемые одноленточной машиной N, рекурсивно перечислимы, поэтому рекурсивно перечислимы все языки, допускаемые многоленточной машиной M.

Теорема. Время, необходимое одноленточной машине N для имитации n переходов k-ленточной машины M, есть O(n2).

Доказательство. После n переходов машины M маркеры головок разделены не более, чем 2n клетками, так что и машине N надо сдвинуться не более, чем на 2n клеток вправо, чтобы найти все маркеры головок. Теперь ей надо совершить проход влево, изменяя содержимое M лент и сдвигая головочные маркеры, что потребует не более 2n сдвигов влево плюс не более 2k переходов для изменения направления движения и записи маркера в клетку. Таким образом, число переходов N для имитации одного из переходов машины M не более 4n+2k, т.е. O(n). Для n переходов требуется времени в n раз больше, т.е. O(n2).

Различие во времени вычисления на машинах с разным числом лент сохраняет полиномиальную сложность и для одноленточной машины ограничено сT(n)2 , а емкость - сS(n) (для входа длины n), где T(n), S(n) - параметры k-ленточных машин. Зависимость между емкостью и временем для k-ленточных машин линейная: S kT; для входа длины n T ks+n.

Недетерминированные машины Тьюринга

По причинам, которые вскоре будут понятны, недетерминированные машины Тьюринга являются ключевым понятием в теории NP-полных задач. Недетерминированная машина Тьюринга отличается от обычной (детерминированной) машины Тьюринга тем, что может иметь более одного перехода от текущей конфигурации к следующей. Недетерминированная машина допускает слово , если существует хотя бы одна цепочка конфигураций, ведущая от начальной конфигурации в заключительную. Существование других последовательностей конфигураций, не ведущих в заключительное (допускающее) состояние не имеет значение. Работу недетерминированной машины на входе можно представить в виде дерева, где каждый путь из корня в лист представляет некоторую последовательность возможных шагов машины. Если кратчайшая последовательность возможных шагов работы машины, которая оканчивается допускающей конфигурацией, то есть время, затраченное машиной на обработку входа . Если на входе никакая последовательность не приводит к допускающей конфигурации, то время, затраченное на обработку не определено. Считается, что недетерминированная машина Тьюринга на входе параллельно выполняет все возможные последовательности шагов, пока не достигнет допускающего состояния или окажется, что ее программа не применима к полученной конфигурации.

Остается открытым вопрос, существуют ли языки, допускаемые недетерминированной машиной Тьюринга с данной временной и емкостной сложностью и не допускаемые никакой детерминированной машиной с той же сложностью.

Недетерминированные машины Тьюринга допускают те же языки, что и детерминированные. Однако, надо заметить, что последним приходится за это расплачиваться сильным увеличением временной сложности.

Обозначим через L(M) множество всех слов X*, допускаемых машиной M, L(M) называют языком машины M.

Теорема. Если M недетерминированная машина с полиномиальной временной сложностью T(n), то существует детерминированная машина M ', с L(M ' ) = L(M) и временной сложностью O(cT(n)).

Доказательство. Доказательство основывается на том, что для любой недетерминированной машины Тьюринга M строится детерминированная машина M ', которая исследует последовательности конфигураций (пути в дереве недетерминированной машины) и если находит хотя бы одну с допускаемым состоянием, то сама переходит в допускаемое состояние. Обследованные конфигурации помещаются в очередь, длины k (k=1,2…) Построим детерминированную многоленточную машину M ', моделирующую недетерминированную машину M. Первая лента машины M ' хранит последовательность конфигураций машины M и метку на текущее состояние последней. Записи слева от метки предполагаются исследованными и их в дальнейшем игнорируют. Конфигурации справа рассматриваются в порядке очереди. Программа машины M хранится в конечном управлении M '. Обработка текущей конфигурации на первой ленте состоит в следующем:

- Машина M ' проверяет состояние и обозреваемый символ и, если состояние допускающее, также переходит в допускающее состояние.

- Если состояние не допускающее и из данной конфигурации есть k переходов, то M ' использует вторую ленту для создания k копий, которые записываются в конце очереди на ленте 1.

- M ' изменяет k конфигураций в соответствии с программой машины M.

- M ' перемещает отметку текущей конфигурации на следующую справа и цикл повторяется с шага 1.

Допустим, что m есть максимальное число выборов машины M в любой конфигурации. Тогда существует одно начальное состояние M, не более m конфигураций, достижимых за 1 шаг, не более m2 конфигураций, достижимых за 2 шага и т.д. Таким образом, после n переходов машина M может достичь не более 1+ m +m2 +…+mn nmn конфигураций. Порядок, в котором машина M ' исследует конфигурации, называется “поиском в ширину”, т.е. M ' исследует все достижимые конфигурации машины M за 0 шагов, достижимые за 1 шаг и т.д.

Допускающая конфигурация машины M будет рассмотрена машиной M ' в числе первых nmn конфигураций. Таким образом, если машина M допускает, то машина M ' также допускает, т.е. L(M) = L(M ' ).

Отметим, что работа построенной детерминированной машины M' может потребовать экспоненциально большего времени, чем время работы недетерминированной машины M, которую она моделирует. Разница между полиномиальным и экспоненциальным временем - это граница того, что можно решить с помощью компьютера, а что практически нерешаемо.

Теорема. Если M недетерминированная машина Тьюринга с емкостной сложностью S(n), то найдется детерминированная машина Тьюринга M' с емкостной сложностью O(S2(n)) и L(M' ) = L(M).

Доказательство. Пусть M недетерминированная машина Тьюринга (возможно k-ленточная) с емкостной сложностью S(n). Тогда число различных конфигураций, в которые машина M может попасть из начальной с входом длины n, не превосходит некоторого числа cS(n), точнее Q(X+1)k S(n) (S(n))k, где k - число лент. Тогда число переходов от конфигурации C1 к конфигурации C2 1+ С2) на любой из лент не превосходит cS(n) . Можно выяснить, существует ли переход С1+ С2 за 2i шагов, проверив для всех C3 существует ли переход С1+ С3 и С 3+ С2 за i шагов. После каждого обращения к процедуре число i уменьшается вдвое.

Идея моделирования машиной M' работы машины M приведена в доказательстве предыдущей теоремы. Стратегия работы машины M' - установить приведет ли начальная конфигурация C0 к какой-нибудь допускающей конфигурации Cf . Чтобы найти верхнюю емкостную границу для машины M', расположим конфигурации (длины O(S(n))) на стеках того же размера. В каждый момент времени число фрагментов стека не превосходит 1+ log cS(n) , т.е. O(S(n)). Для всего стека машины M потребуется O(S2 (n)) ячеек.

Теорема. Если язык L допускается k-ленточной недетерминированной машиной Тьюринга M = (X, Q, q0, F, I) с временной сложностью T(n), то он допускается одноленточной недетерминированной машиной с временной сложностью O(T2(n)).

Доказательство. Пусть M1 одноленточная недетерминированная машина Тьюринга, имеющая на ленте 2k дорожек, т.е. ленточные символы машины M1 представляются 2k-членными кортежами, в которых на нечетных местах стоят символы алфавита X, а на четных - либо символ , либо маркер #. Дорожки с нечетными номерами соответствуют k лентам машины M, а каждая дорожка с четным номером 2j содержит символ во всех ячейках, кроме одной, где стоит маркер #, отмечающий положение головки машины M на ленте j, которой соответствует дорожка 2j-1. Машина M1 моделирует один шаг работы машины M следующим образом. Допустим, что вначале головка машины M1 обозревает клетку, содержащую самую левую головку машины M.

Головка машины M1 движется вправо, пока не минует все k маркеров положений головок на дорожках с четными номерами. При этом M1 запоминает в своем состоянии символы, обозреваемые каждой из головок машины M. Теперь M1 делает недетерминированное развлетвление, исходя из состояния машины M, которое машина M1 запомнила в своем состоянии, и обозреваемых машиной M на лентах символов, которые машина M1 также нашла.

Выбрав для моделирования шаг машины M, машина M1 изменяет в соответствии с ним состояние машины M, которое она помнит в своем состоянии. Затем M1 сдвигает свою головку влево и проходит все маркеры, изменяя ленточный символ на дорожке над маркером и сдвигая маркер не более чем на одну клетку (L,R,S).

Машина M1 промоделировала один шаг работы машины M. Действия машины M1 на этом шаге детерминированы. Ее головка находится правее левого маркера не более чем на две ячейки. Начиная с этого маркера цикл можно повторить.

Если машина M допускает цепочку длины n, то совершает при этом не более T(n) переходов. Очевидно, что в последовательности из T(n) шагов головки мащины M могут разойтись не более чем на T(n) клеток, и, значит, M1 может смоделировать один шаг этой последовательности не более чем за O(T(n)) своих шагов. Таким образом, M1 допускает цепочку , выполняя не более чем O(T2 (n)) переходов.

Следствие 1. Если язык допускается k-ленточной детерминированной машиной Тьюринга с временной сложностью T(n), то он допускается одноленточной детерминированной машиной Тьюринга с временной сложностью O(T2(n)).

Следствие 2. Если язык L допускается k-ленточной недетерминированной машиной Тьюринга с емкостной сложностью S(n), то он допускается одноленточной недетерминированной машиной Тьюринга с емкостной сложностью S(n).

Следствие 3. Если язык допускается k-ленточной детерминированной машиной Тьюринга с емкостной сложностью S(n), то он допускается одноленточной детерминированной машиной Тьюринга с емкостной сложностью S(n).

Имитация машины Тьюринга на компьютере и компьютера на машине Тьюринга

К основным компонентам вычислительной машины относятся оперативная память и процессор. Программы и данные, представленные в двоичном алфавите, помещаются в память. При выполнении программы отдельные ее команды и нужные данные извлекаются из памяти в процессор и наоборот - значения, получаемые при выполнении команд, записываются в ячейки памяти.

Память состоит из некоторого числа запоминающих ячеек (регистров), предназначенных для промежуточного хранения значений операндов и для хранения другой информации, необходимой для выполнения команд, регистров для управления запоминающими ячейками, адресов ячеек и полей самих ячеек.

Процессор состоит из устройства управления (УУ) и арифметического устройство (АУ). Устройство управления содержит счетчик тактов, команд и т.д., вырабатывает управляющие сигналы для выполнения команд, передачи данных и т.д. Процессор содержит регистры операндов, линии связи и линии задержки для непосредственной реализации процессов вычислений.

Наряду с процессором и памятью компьютеру необходимы еще устройства ввода/вывода.

Имитация машины Тьюринга на компьютере. Пусть M - машина Тьюринга, одним из составляющих которой является ее конечное управление. Поскольку M имеет конечное число состояний и конечное число правил перехода, программа компьютера может закодировать состояния в виде цепочек символов, как и символы ее внешнего алфавита, и использовать таблицу переходов машины M для преобразования цепочек. Бесконечную ленту машины Тьюринга можно имитировать сменными дисками, размещаемыми в двух магазинах, соответственно для данных, расположенных слева и справа от считывающей головки на ленте. Чем дальше в магазине расположены данные, тем дальше они от головки на ленте.

Для имитации компьютера на машине Тьюринга существенны две вещи:

существуют ли инструкции, выполняемые компьютером, и недоступные для машины Тьюринга;

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

Неформальная модель реального компьютера:

- память, состоящая из последовательности слов и их адресов. В качестве адресов будут использоваться натуральные числа 0,1, …;

- программа компьютера, записанная в слова памяти, каждое из которых представляет простую инструкцию. Допускается “непрямая адресация” по указателям;

- каждая инструкция использует конечное число слов и изменяет значение не более одного слова;

- имеются слова памяти с быстрым доступом (регистры), но скорость доступа к различным словам влияет лишь на константный сомножитель, что не искажает полиномиальную зависимость.

Возможная конструкция машины Тьюринга для имитации компьютера представлена на рис.

Рис

Машина имеет несколько лент. Первая лента представляет всю память компьютера - адреса и значения (в двоичной системе). Адреса заканчиваются маркером *, значения - маркером #. Начало и конец записей 1-й ленты обозначаются маркером $. Вторая лента - “счетчик инструкций”, содержит одно двоичное целое, представляющее одну из позиций считываюшей головки на первой ленте, адрес инструкции, которая должна быть выполнена следующей. Третья лента содержит адрес и значение по нему после того, как этот адрес устанавливается на первой ленте. Для выполнения инструкции машина Тьюринга должна найти значение по одному или нескольким адресам памяти, где хранятся данные, участвующие в вычислении. Нужный адрес копируется на ленту 3 и сравнивается с адресами на ленте 1 до совпадения. Значение по этому адресу копируется на третью ленту и перемещается на нужное место, как правило, по одному из начальных адресов, представляющих регистры компьютера. Четвертая лента имитирует входной файл. Пятая лента - рабочая память, служит для выполнения вычислений. Допускающая инструкция машины Тьюринга соответствует выводу на печать в выходном файле.

Функционирование такой имитирующей машины:

1.Найдя на 1-й ленте адрес, совпадающий с номером инструкции на 2-й ленте, исследуем значение по нему и копируем на 3-ю ленту. Первые биты инструкции задают действие (копировать, вставить, ветвиться и т.д.), оставщиеся биты - адрес или адреса, используемые в этом действии.

2. Если в инструкции содержится значение по некоторому адресу, то этот адрес копируется на 3-ю ленту, а позиция инструкции на 2-ю дорожку 1-й ленты.

3. Далее инструкция выполняется. С новым значением можно сделать следующее:

скопировать по другому адресу;

Второй адрес извлекается из инструкции, помещается на 3-ю ленту, находится на 1-й ленте и значение по нему копируется в зарезервированное для него пространство. Если для нового значения надо больше (меньше) памяти, чем для старого, пространство изменяется путем сдвига, а именно,

на рабочую ленту копируется часть ленты справа от того места, куда надо поместить новое значение;

новое значение записывается на 1-ю ленту;

рабочая часть копируется обратно на 1-ю ленту справа от нового значения.

прибавить найденное значение по другому адресу;

Ищем второй адрес на первой ленте, выполняем сложение значения по этому адресу и записанному на 3-й ленте.

перейти к выполнению инструкции по адресу, записанному на 3-й ленте, для чего лента 3 копируется на ленту 2, и цикл инструкций начинается снова.

4. Выполнив инструкцию (не являющуюся переходом), прибавляем 1 к счетчику на ленте 2 и вновь начинаем цикл инструкции.

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

Время работы машины Тьюринга, имитирующей компьютер

Введем следующие ограничения на модель компьютера:

- Ни одна компьютерная инструкция не должна порождать слово, длиннее, чем на 1 бит, своих операндов.

Инструкция, применяемая к словам длины m должна выполняться не более, чем за 0(m2) шагов на многоленточной машине Тьюринга.

Назовем такие операции допустимыми.

Этим условиям удовлетворяют сложение, сдвиг на 1 бит, сравнение значений, которые выполняются на многоленточной машине Тьюринга за 0(m) шагов. А также умножение m-битовых целых, если его имитировать с помощью m последовательных сложений со сдвигами на 1 бит влево. Время выполнения операции умножения будет пропорционально квадрату длины сомножителей.

Теорема. Для компьютера, обладающего указанными свойствами, описанная выше модель машины Тьюринга может имитировать m шагов компьютера не более, чем за 0(m3) шагов.

Доказательство. Вначале первая лента содержит только программу компьютера, длина которой не зависит от n (числа шагов выполнения инструкций). Наибольшее из компьютерных слов или адресов, встречающихся в программе, обозначим через c, а через d - число слов программы.

После выполнения n шагов компьютер не может породить слово, длиннее c+n, и не может создать или использовать адрес, занимающий больше c+n битов. Каждая инструкция порождает не более одного нового адреса, получающего значение, поэтому после выполнения n инструкций имеем d+n адресов. Каждый адрес-значение занимает не более 2(c+n) +2 разрядов, а после выполнения n инструкций не больше 2(d+n)(c+n+1), или 0(n2)

Для просмотра адресов одной инструкции компьютера требуется времени 0(n2), слова имеют длину 0(n), а инструкции выполняются машиной Тьюринга за время 0(n2), сдвиг для создания пространства для нового слова включает копирование данных объемом 0(n2) с ленты 1 на рабочую ленту и обратно. Таким образом, машина Тьюринга имитирует один шаг компьютера за 0(n2) своих шагов, а n шагов можно проимитировать за 0(n3) шагов машины Тьюринга.

Теорема. Выполнение n шагов работы компьютера можно проимитировать на одноленточной машине Тьюринга не более чем за 0(n6) шагов.

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

Тема 2. Неразрешимость

§1. Неперечислимый язык

§2. Коды машины Тьюринга

§3. Язык диагонализации Ld

§4. Рекурсивные языки

§5. Универсальный язык Lu

§6. Языки Le и Lne

§7. Проблема соответствий Поста

Самостоятельные занятия:

[1], глава 9.

Вопросы неразрешимости языков и проблем, решаемые с помощью машин Тьюринга, не подвержены тем ограничениям, которые возникают при реализации языка на реальном компьютере, связанные с конечным объемом адресного пространства, оперативной памяти и т.п. Далее будут предложены некоторые (неразрешимые) языки, используемые в дальнейшем для доказательства неразрешимости других языков (проблем).

Допускает ли машина Тьюринга сама себя (свой код) в качестве входа ?

Допускает ли данная машина данный вход ?

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

Как уже было сказано, допустимые машинами Тьюринга языки называются рекурсивно перечислимыми. Допускающие язык L машины M останавливаются на словах (цепочках) L=L(M), а на словах L могут также останавливаться, не допуская, такие языки L будем называть рекурсивными (разрешимыми), или - работать бесконечно, назовем такие языки нерекурсивными (неразрешимыми). К неразрешимым языкам отнесем и не рекурсивно перечислимые (неперечислимые) языки, существование которых нам предстоит доказать.

Неперечислимый язык

Перечислим машины Тьюринга и входы, перечисляя их коды в алфавите {0,1}. Пустой цепочке припишем номер 1, цепочке “0” - номер 2, цепочке “1” - номер 3, цепочке “00” - номер 4, цепочке “01” - номер 5, остальное перечисление цепочек становится очевидным. В дальнейшем цепочку с номером i будем обозначать через i .

Представим код машины Тьюринга M как двоичную цепочку. Состояние qi и ленточный символ Xi кодируются в виде i нулей, отделяемых 1, пустой символ кодируется цепочкой 1. Направления R,L,S представим как некоторые цепочки Dm из 0. Переход qi Xj Xl R q k закодируется естественным образом цепочкой 0i10j10l10m10k (где i,j,l,m,k 1). Если C1,…,Cк - коды всех переходов машины Тьюринга, то C111С211…11Cк - код самой машины M.

Коды машин Тьюринга представлены двоичными цепочками, которые в свою очередь являются представлениями натуральных чисел в двоичной системе. Такое натуральное число будем считать номером машины в перечисление машин Тьюринга. Иначе машина Mi , или i-ая машина, Тьюринга имеет своим кодом цепочку i , и номер i. Очевидно, что не все двоичные цепочки i являются правильными кодами машин Тьюринга, в этом случае будем считать, что машина Mi имеет одно состояние и у нее нет переходов, т.е. такая машина Mi останавливается сразу на любом входе. Также для нее L(Mi) = .

Теперь можно представить таблицу, у которой по горизонтали стоят номера всех цепочек, а по вертикали номера всех машин Тьюринга (все натуральные числа), а на пересечении i-й строки и j-го столбца стоит 1, если машина Mi допускает цепочку j , и 0 - если не допускает.

Числа по главной диагонали показывают, допускает ли машина Mi цепочку i. Построим язык Ld такой, что i Ld i Mi .

Ld называют языком диагонализации. Очевидно, что он не попадает в перечисление языков машин Тьюринга, т.е. нет допускающей его машины Тьюринга.

Теорема. Язык Ld не является рекурсивно перечислимым, т.е. не существует допускающей его машины Тьюринга.

Доказательство. Допустим противное, что существует машина Mi , допускающая язык Ld , так что Ld = L(Mi). Теперь, если Mi допускает i ,

то i L(Mi) = Ld , однако согласно определению языка Ld , i Ld ; если Mi не допускает i , т.е. i L(Mi) = Ld, но по определению языка Ld, i Ld . Откуда i Ld i Ld , что образует противоречие. Таким образом, не существует машины, допускающей язык Ld , а следовательно, язык диагонализации Ld не является рекурсивно перечислимым языком.

Рекурсивные языки. Неразрешимая РП - проблема

Язык L называется рекурсивным, если он допускается некоторой машиной Тьюринга M, т.е. L=L(M) и :

1) если L, то M допускает вход , следовательно, останавливается;

2) если L, то M в конце концов остановится, не допуская.

Если мы рассматриваем язык L как проблему, то проблема называется разрешимой, если язык L рекурсивный. В противном случае проблема называется неразрешимой.

Можно ввести разделение языков и проблем на следующие три класса:

Рекурсивные языки.

Рекурсивно перечислимые (РП), не являющиеся рекурсивными.

Неперечислимые (не - РП) языки.

Теорема. Если L - рекурсивный язык, то язык L , дополнение языка L , также рекурсивный.

Доказательство. Пусть L=L(M), где машина M останавливается на всех входах. Построим машину Тьюринга M , у которой L = L(M). Для чего надо переделать заключительные состояния машины M в недопускающие, не имеющие переходов, и добавив новое допускающее состояние r, передать управление из каждого недопускающего состояния в r.

Теорема (Поста). Если язык L и его дополнение рекурсивно перечислимы, то L рекурсивен.

Доказательство. Пусть L=L(M1) и L =L(M2). Возьмем машину Тьюринга M с двумя лентами, имитирующими соответственно машины M1 и M2.

Пусть вход L, тогда M1 допускает , а машина M допускает и останавливается; в противном случае машина M останавливается, не допуская. Таким образом, машина M останавливается на любом входе и L= L(M), т.е. L рекурсивный язык.

Следствие. Из девяти способов соотношений языков L и L' возможны следующие четыре:

1. Оба языка L и L' рекурсивны.

2. Ни L, ни L' не являются рекурсивно перечислимыми.

L является рекурсивно перечислимым, а L' не рекурсивно перечислим.

L' является рекурсивно перечислимым, а L не рекурсивно перечислим.

Универсальный язык Lu определяется как множество цепочек в алфавите {0,1}, являющихся кодами упорядоченных пар (M, ), где M - машина Тьюринга с входным алфавитом {0,1} и - цепочка из {0,1}*, принадлежащая L(M). Код упорядоченной пары (M,) представляется кодом машины M, отделенным 111 от кода цепочки . Другими словами, язык Lu - это множество цепочек, кодов упорядоченных пар (M,), представляющих машину Тьюринга и допускаемый ею вход. Покажем, что существует машина Тьюринга U, называемая универсальной машиной, для которой Lu = L(U).

Опишем машину U в виде многоленточной машины Тьюринга, имитирующей работу машины M на входе , когда сама она получает на вход цепочку, представляющую код упорядоченной пары (M,).

Пусть на 1-й ленте машины U хранятся переходы машины M вместе с входом ; на 2-й ленте - двоичный код машины M; на 3-й - состояние машины M; 4-ая - рабочая лента.

Машина U производит следующие операции:

1. Исследует вход, и если код M правильный, записывает на 2-ю ленту код входной цепочки . Для неправильных кодов M машина U не допускает никакого входа.

На 2-й ленте все клетки, кроме занятых кодом входа , заполняются символом , представляемым как 1000.

На 3-й ленте записывается 0, т.е. начальное состояние q0 машины M, и считывающая головка обозревает первый символ кода .

Чтобы отобразить переход машины M, машина U отыскивает его на первой ленте, например, 0i 10j 10k 10l 10m (m=1,2,3 - кодирует R,L,S),

и выполняет следующие действия:

изменяет содержимое 3-ей ленты на 0k;

заменяет 0j на второй ленте на 0l ;

перемещает головку на 2-й ленте согласно 0m .

Если M не имеет перехода, то M останавливается, и U останавливается.

Если M попадает в допускающее состояние, то U допускает.

Таким образом, U допускает вход (M,) тогда и только тогда, когда M допускает .

Неразрешимость универсального языка. Проблема останова

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

Теорема. Язык Lu рекурсивно перечислим, но не рекурсивен.

Доказательство. Была доказана рекурсивная перечислимость языка Lu. Допустим, что Lu рекурсивен, тогда по теореме язык Lu рекурсивен и существует допускающая его машина M, т.е. Lu = L(M). Преобразуем M в машину M ', допускающую Lu : если вход есть i , т.е. код машины Mi , то M ' определяет, допускает ли Mi вход i . Поскольку M допускает Lu, то M допускает i , если Mi не допускает i , т.е. когда i Ld.

Таким образом, M ' допускает тогда и только тогда, когда Ld.

Поскольку по теореме машины M ' не существует, получено противоречие, следовательно, язык Lu не является рекурсивным.

Неразрешимые проблемы, связанные с машинами Тьюринга

В математической логике рассматриваются разные типы сведений, образующие целую ветвь математической логики, теорию степеней неразрешимости. В общем виде, проблема P1 сводима к проблеме P2 (P1 < f P2), если существует вычислимая функция f такая, что

xP1 f(x)P2 (xP1 f(x)P2).

В этом случае говорят, что проблема P2 не менее трудна, чем проблема P1.

Теорема. Если P1 < f P2 , то

если P1 не является рекурсивной, то P2 также не рекурсивна (не-Р);

если P1 не является рекурсивно перечислимой, то P2 не рекурсивно перечислима (не-РП).

Доказательство. a) Допустим, что P1 не рекурсивно, а P2 рекурсивно.

На входе P1 , так как P1 < f P2 , то f()P2. Так как P2 рекурсивно, существует алгоритм A:

A(x)=0, если x P2, где x = f(), тогда и только тогда, когда P1;

A(x)=1, если x P2, где x = f(), тогда и только тогда, когда P1.

Откуда следует, что P1 рекурсивно, по противоречию P2 - не рекурсивно.

Пусть P1 не-РП, а P2 - рекурсивно перечислимо. Тогда P2 имеет допускающую ее машину M2. Если на входе x P2 машина M2 допускает, тогда P1 , где x=f(); в противном случае машина M2 работает бесконечно, следовательно, и P1 . Таким образом, машина, языком котором является P1, допускает или не допускает свой вход одновременно с машиной M2 , и, следовательно, допускает язык P1, что противоречит условию.

Наряду с введенными выше языками Ld и Lu в теории сложности представляют интерес взаимо дополняющие друг друга в {0,1}* языки:

Le = {M: L(M) = } (кодов мащин, допускающих пустой язык) и

Lne = {M: L(M) }, над алфавитом {0,1}, представленные кодами машин Тьюринга.

Теорема. Язык Lne рекурсивно перечислим.

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

Рис. 9.8. Конструкция НМТ, допускающей язык Lne

Работа машины M состоит в следующем:

1) получив на вход код машины Mi , используя способность недетерминированной машины угадывать вход , на котором машина Mi, воможно, допускает,

2) машина M проверяет, допускает ли машина Mi на входе , моделируя работу машины U;

если (Mi, ) Lu , т.е. машина Mi допускает на входе , то машина

M также допускает на своем входе Mi, в противном случае работает бесконечно.

Таким образом, L(M) = Lne .

Теорема. Язык Lne не является рекурсивным.

Доказательство. Построим функцию (алгоритм), сводящий универсальный язык Lu к языку Lne , т.е. вход (M,) машины U преобразуем во вход машины M ', допускающей язык Lne. Машина M ' моделирует машину M на входе и если (M, ) Lu , то (M ', x) Lu , где x произвольный вход машины M '. В этом случае машина M' допускает хотя бы одну цепочку, т.е. L(M') и M ' Lne . Аналогично, в случае, если (M,) Lu , L(M ' ) = и M' Lne . Схема машины M ', построенной по (M,) приведена на рис.

Машина M ' по построению выполняет следующие действия:

Машина M ' строится по конкретной паре (M,), имеюшей длину n, тогда q0 ,…,qn состояния M ' (где q0 - начальное состояние).

a) В состоянии qi (i=0,..,n-1) машина M ' записывает (i+1)-й бит кода (M,) и переходит в состояние qi+1 , сдвигаясь вправо.

b) В состоянии q n , в случае необходимости, M ' сдвигается вправо и заполняет все непустые клетки (хвост x, если длина цепочки x боль- ше n) пробелами.

Когда M ' достигает пробела с состоянии qn , она, используя похожий набор состояний, перемещает головку в левый конец ленты.

Используя дополнительные состояния M ' моделирует универсальную машину U.

Если U допускает, то M ' допускает. Если U никогда не допускает, то M ' никогда не допускает.

Из схемы работы машины видно, что если M допускает вход , то M ' допускает свой вход x, который первоначально был записан на ленте, следовательно, M ' Lne . В противном случае, если M не допускает вход , то M ' не допускает любой свой вход x, записанный на ленте, тогда M ' Lne. Таким образом, Lu сводимо к Lne с помощью алгоритма, который строит M' по данным M и . Поскольку, Lu не является рекурсивным, то Lne также не рекурсивен.

Теперь известен и статус языка Le. Если бы Le был бы рекурсивно перечислимым, то по теореме и он, и его дополнение Lne были бы рекурсивными. Однако было доказано, что язык Lne не рекурсивен.

Теорема. Язык Le не является рекусивно перечислимым.

Теорема Райса и свойства РП-языков

Неразрешимость языков Le и Lne есть только частный случай более общей теоремы о неразрешимости любого нетривиального свойства РП-языков.

Свойством РП-языков называют множество РП-языков. Например, свойства “быть контексно-свободным языком” или “быть регулярным языком” представлены соответственно множествами контекстно-свободных и регулярных языков. Тривиальным свойством называют множество из одного пустого языка или из всех РП-языков. В противном случае свойство называют нетривиальным.

Пусть - свойство РП-языков, а L - множество кодов машин Mi таких, что L(Mi) .

Теорема (Райса). Всякое нетривиальное свойство РП-языков неразрешимо.

Доказательство. Пусть - свойство РП-языков и () ().

a) Допустим, что , тогда существует непустой язык L, пусть xL. Построим алгоритм, сводящий Lu к L . По паре (M,) строится машина M ' такая, что (M,) Lu M ' L:

Если (M,) Lu, т.е. M не допускает вход , тогда M ' прекращает работу, не допуская свой вход x. L(M' ) = , следовательно,

L(M ' ) , а M' L. Если (M,) Lu, то L(M' ) = L и M' L.

Схема такого алгоритма приведена на рис.

Машина M' имеет две ленты: на первой записан код машины M и входа , на второй - код машины ML , допускающей язык L.

Работа моделируемой машины M' состоит в следующих шагах:

...

Подобные документы

  • Простое вычислительное устройство машина Тьюринга и ее алгоритмические свойства. Тезис Черча–Тьюринга и моделирование машины Тьюринга (операции перезаписи ячеек, сравнения и перехода к другой соседней ячейке с учетом изменения состояния машины).

    контрольная работа [23,3 K], добавлен 24.04.2009

  • Временная и ёмкостная сложность программы. Размер входных данных. Связь сложности в худшем случае и в среднем. Понятие оптимальной программы. Классы вычислительной сложности программ. Эквивалентность по сложности. Примеры классов вычислительной сложности.

    презентация [77,3 K], добавлен 19.10.2014

  • Примеры запросов к одной из поисковых систем Интернет (подбор ключевых слов) и расчетов в табличном процессоре MS Excel (инструменты). Описание машины Тьюринга: составляющие и их функционирование. Основные форматы представления графических данных.

    контрольная работа [24,5 K], добавлен 09.06.2009

  • А.М. Тьюринг как английский математик, логик, криптограф, оказавший существенное влияние на развитие информатики. Понятие и назначение машины Тьюринга, принцип ее работы и сферы практического применения. Этапы реализации парадигмы программирования.

    реферат [8,1 K], добавлен 04.10.2011

  • Изучение методик языка Javascript по формализации и решению поставленной задачи, технологических приемов разработки программ на языке Javascript, HTML, CSS. Формально определение машины Тьюринга, распознающую язык. Ее программная модель, протоколы работы.

    курсовая работа [220,7 K], добавлен 03.03.2015

  • Принципы работы и основы программирования машины Тьюринга, а также перечень правил написания алгоритмов на ее эмуляторе. Особенности решения задачи по сложению нескольких чисел в двоичной системе путем реализации ее алгоритма на эмуляторе машины Тьюринга.

    контрольная работа [82,4 K], добавлен 05.12.2010

  • Нормальный алгоритм Маркова. Тезис Маркова и машина Тьюринга. Гипотеза теории алгоритмов. Алгоритмически неразрешимые проблемы. Задача эквивалентности двух слов в ассоциативном исчислении. Задача распознавания выводимости. Линейная оценка сложности.

    методичка [57,0 K], добавлен 06.07.2009

  • Общее понятие алгоритма и меры его сложности. Временная и емкостная сложность алгоритмов. Основные методы и приемы анализа сложности. Оптимизация, связанная с выбором метода построения алгоритма и с выбором методов представления данных в программе.

    реферат [90,6 K], добавлен 27.11.2012

  • Разложение функций по переменным. Совершенная дизъюнктивная нормальная форма. Разрешимoсть задач в классической теории алгоритмов и их трудоемкость. Память и время как количественная характеристика алгоритма (применительно к машине Тьюринга и ЭВМ).

    дипломная работа [59,9 K], добавлен 17.04.2009

  • Методика разработки программы, предназначенной для разбора предложения с помощью многоленточной машины Тьюринга. Цели и назначение данной системы, основные требования, предъявляемые к ней. Организационно-исполнительные работы по содержанию системы.

    курсовая работа [386,8 K], добавлен 16.12.2010

  • История и факторы развития облачных вычислений. Роль виртуализации в развитии облачных технологий. Модели обслуживания и принципы работы облачных сервисов. Преимущества облака для Интернет-стартапов. Применение технологии облачных вычислений в бизнесе.

    реферат [56,6 K], добавлен 18.03.2015

  • Положения машины Тьюринга. Алгоритмически неразрешимые проблемы: "остановка", эквивалентность алгоритмов, тотальность. Свойства алгоритма: дискретность, детерминированность, результативность, массовость. Выбор структуры данных. Решение на языке Haskell.

    курсовая работа [957,6 K], добавлен 16.11.2013

  • Параллельная машина как процессоров, памяти и некоторые методы коммуникации между ними, сферы применения. Рассмотрение особенностей организации параллельности вычислений. Анализ типовых схем коммуникации в многопроцессорных вычислительных системах.

    курсовая работа [669,3 K], добавлен 07.09.2015

  • Временная, пространственная и асимптотическая сложности. Основные классы сложности в теории алгоритмов. Сведение как преобразование одной задачи к другой. Проблема равенства классов P и NP. Характеристика основных иерархических отношений между классами.

    реферат [16,9 K], добавлен 09.04.2012

  • Сравнение центрального и графического процессора компьютера в параллельных расчётах. Пример применения технологии CUDA для неграфических вычислений. Вычисление интеграла и сложение векторов. Технические характеристики ПК, применяемого для вычислений.

    курсовая работа [735,9 K], добавлен 12.07.2015

  • Происхождение и сущность понятия "алгоритм". Основные требования к алгоритмам. Роль абстрактных алгоритмических систем. Алгоритм как абстрактная машина. Алгоритмическая машина Поста. Схема логического устройства и функционирования машины Тьюринга.

    реферат [62,2 K], добавлен 16.03.2011

  • Любая вычислительная машина как сложная система, состоящая из множества компонентов на каждом уровне иерархии. Основные особенности внедрения модели виртуального стенда. MATLAB как высокоэффективный язык инженерных и научных вычислений, анализ функций.

    дипломная работа [1,6 M], добавлен 24.06.2013

  • Темы исследований в информатике. Основные идеи, которые лежат в основе работы компьютеров. Первая отечественная ЭВМ. Вычислительная сложность алгоритма. Протокол передачи данных. Понятие компьютерной программы. Вычислительная мощность компьютера.

    презентация [271,0 K], добавлен 01.11.2014

  • Механические средства вычислений. Электромеханические вычислительные машины, электронные лампы. Четыре поколения развития ЭВМ, характеристика их особенностей. Сверхбольшие интегральные схемы (СБИС). ЭВМ четвертого поколения. Проект ЭВМ пятого поколения.

    реферат [56,6 K], добавлен 13.03.2011

  • Сущность и задачи системы грид их практическое применение. Основные идеи, заложенные в концепции грид-вычислений. Уровни архитектуры грид, их характеристика. Технология облачных вычислений. Промежуточное программное обеспечение в распределенных системах.

    контрольная работа [736,9 K], добавлен 06.01.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.