Л.С. Корухова, М.Р. Шура-Бура - Введение в алгоритрмы, страница 7
Описание файла
PDF-файл из архива "Л.С. Корухова, М.Р. Шура-Бура - Введение в алгоритрмы", который расположен в категории "". Всё это находится в предмете "практика расчётов на пэвм" из 1 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 7 страницы из PDF
[ q(i,j), a(i,j) ] : [ a(i,j), R, q(i,j+1) ]Осуществляется поиск вхождения левой цепочки i-ой подстановки, j-ая и всепредыдущие буквы цепочки v i найдены - отождествляем j+1 - ю букву2. [ q(i,1), a ] : [ a, R, q(i,1) ], где a- буква, а ≠ Λ и а ≠ a(i,1)Поиск вхождения первой буквы цепочки v i, идем вправо, пока не встретимпервую букву3. [ q(i,j), a ] : [ a, L, q(i,j-1)' ], где j>1 и а ≠ Λ и а ≠ a(i,1)При поиске встретили букву, отличную от нужной а(i,j), - возвращаемся влево4.
[ q(i,j), Λ] : [Λ, L, q(i)' ]Если дошли до конца слова и не нашли вхождение левой цепочки i-ойподстановки, то идем влево по слову5. [ q(i,1)', a ] : [ a, R, q(i,1) ]Ищем начало вхождения v i, начиная со следующей буквы слова6. [ q(i,j)', a ] : [ a, L, q(i,j-1)' ]Возврат влево при неудачном поиске7.
[ q(i)', a ] : [ a, L, q(i)' ]Дойдя до конца слова, не нашли v i - идем влево к первой букве слова8. [ q(i)', Λ ] : [Λ, R, q(i+1,1) ]Ищем вхождение следующей ( i+1 )- ой подстановки.21После того, как найдено вхождение в заданное слово левой цепочки (.v i.)подстановки ( v i v i' ) из формул подстановок, задающих нормальный алгоритм, нужнореализовать соответствующую подстановку, т.е. заменить в исходном слове цепочку v i нацепочку v i'. Реализация такой замены происходит после того, как машина оказывается всостоянии q(i,m i+1) = p(i, d i), и ее последующая работа осуществляется в соответствии соследующими действиями, записанными в соответствующие клетки таблицы переходовмашины :9. [ p(i,j), a ] : [ Λ, R, p(i,j,a) ] для всех i10.
[ p(i,j,a), b ] : [ a, R, p(i,j,b) ] для символов b ≠ Λ11. [ p(i,j,a), Λ ] : [ a, L, p(i,j-1)' ]12. [ p(i,j)', a ] : [ a, L, p(i,j)' ]13. [ p(i,j)', Λ ] : [ Λ, R, p(i,j)' ]14. [ p(i,0), a ] :[ a, L, r(i,n i) ]15. [ r(i,j), a ] : [ b(i,j), L, r(i,j-1) ] для j > 0При этом r(i,0) = q Z, если i ∈ I Z иr(i,0) = q , если i ∉ I Z16. [ r(q Z), a ] : [ a, L, r(q Z) ]17.
[ r(q Z), Λ ] : [ Λ, R, q s ]18. [ q, a ] : [ a, L, q ]19. [ q, Λ ] : [ Λ, R, q 0 ] , где q 0 = q(1,1)6. САМОПРИМЕНИМОСТЬ И ПРОБЛЕМА ПРИМЕНИМОСТИТаблицы переходов машин Тьюринга кроме символов внешнего алфавита содержаттакже символы протяжки ленты и символы состояний управляющей головки. Однако, несоставляет большого труда представить таблицу переходов каждой машины некоторымсловом внешнего алфавита этой машины, если алфавит содержит по крайней мере двасимвола. Тот или иной способ такого представления не имеет принципиального значения.Но, учитывая дальнейшее изложение, касающееся универсальной машины Тьюринга, мырассмотрим конкретный способ изображения таблиц переходов.
При этом двухмернуютаблицу переходов представим в виде линейного слова, которое можно записать на лентумашины Тьюринга.Расширим внешний алфавит двумя символами, при помощи которых будем разделятьцепочки символов, задающие строки и клетки таблиц переходов, и изображать заданные вклетках состояния управляющей головки.
Обозначим эти два символа через & и @.Занумеруем символы состояний управляющей головки данной машины Тьюринга так,чтобы номером 1 оказался символ начального состояния, а последним - символзаключительного. Последовательностью @@...@ будем изображать символ состояния сномером, равным длине такой последовательности. Включив в изображение клеткитаблицы переходов указание на столбец, которому принадлежит клетка, и признак,позволяющий легко обнаружить, является или нет состояние, к которому предписываетперейти клетка, заключительным, представим каждую клетку цепочкой@@...@ & S Z a ja i&,где @@...@ - изображение состояния, в которое переходит управляющая головка в такте,соответствующем изображаемой клетке;S - & или @ - символы, кодирующие сигналы R и L протяжки ленты;Z - & или @ - символы, кодирующие признак заключительного состояния;a j - символ, записываемый на ленту в соответствующем такте работы машины;a i - символ столбца таблицы переходов, которому принадлежит изображаемая клетка.22Изображение клетки завершается символом &, отмечающим конец "содержимого"клетки.Каждую строку таблицы переходов представим конкатенацией символа & ипоследовательности цепочек, изображающих составляющие строку клетки.
И, наконец,всю таблицу переходов представим конкатенацией всех цепочек, изображающих строки, ицепочки &&, отмечающей конец изображения. В этой конкатенации цепочки,изображающие строки, берутся в порядке возрастания номеров соответствующихсостояний. Введенное представление (изображение) таблицы переходов машиныТьюринга можно использовать для решения следующей задачи.Если машина Тьюринга применима к полученному таким образом слову,изображающему ее таблицу переходов, то мы будем говорить, что эта машинасамоприменима или что самоприменим алгоритм, реализуемый этой машиной. Если жеконкретная машина не применима к рассматриваемому слову, то мы будем говорить онесамоприменимости машины или о несамоприменимости алгоритма.
Само по себепонятие самоприменимости выглядит весьма экзотически. Однако оно оказываетсяпростым средством для строгого доказательства интересных и важных утверждений обалгоритмической неразрешимости некоторых проблем, касающихся алгоритмов.Докажем прежде всего следующую теорему:Теорема 1:Не существует алгоритма, определяющего по изображению произвольного алгоритма,самоприменим он или несамоприменим.ДоказательствоПредположим, что такой алгоритм существует. Без потери общности можно считатьего алгоритмом вычисления предиката, который по изображению любого алгоритма Авычисляет значение истина (да), если А самоприменим и ложь (нет), если А несамоприменим.Рассмотрим алгоритм В, реализующий альтернативу :если "алгоритм А самоприменим" то "бесконечный цикл" иначе СТОП. Здесь А произвольный алгоритм.
Вспомним, что выше было показано существование машиныТьюринга, реализующей альтернативу, при условии существования машины Тьюринга,вычисляющей значение предиката истинности условия.Алгоритм В должен быть либо самоприменим, либо не самоприменим. Однако каждоеиз этих предположений оказывается ложным. Действительно, применение алгоритма В ксвоему собственному изображению завершается только в том случае, когдаалгоритм В несамоприменим, что противоречит определению самоприменимости. Если жеалгоритм В самоприменим, то применение его к собственному изображению приводит кбесконечному циклу, что противоречит предположению о самоприменимости.Полученное противоречие доказывает теорему, из которой следует Теорема 2.Теорема 2:Не существует алгоритма, определяющего применимость произвольного алгоритма кпроизвольному слову.ДоказательствоСуществование такого алгоритма противоречило бы теореме 1, посколькуизображение алгоритма можно считать одним из возможных слов.
И в соответствии стеоремой 1 не существует алгоритма, определяющего применимость любого алгоритма кего изображению в виде слова. Теорема 2 подтверждает невозможность в общем видезаменить зацикливание алгоритмов аварийными завершениями.237. УНИВЕРСАЛЬНАЯ МАШИНА ТЬЮРИНГАКак уже было отмечено выше, работа каждой машины Тьюринга сводится к процессувыполнения весьма простого алгоритма U, использующего исходное слово w исоответствующую таблицу переходов.Рассматривая понятие самоприменимости, мы познакомились с конкретным способомпредставления таблицы переходов машины Тьюринга словом внешнего алфавита.Используя такое представление, мы можем свести исходные данные алгоритма U к пареслов - слову m, представляющему таблицу переходов соответствующей машиныТьюринга, и слову w - исходному слову для работы этой машины. Дополнив внешнийалфавит специальным разделяющим символом, например, *, мы можем считать, чтоисходным словом алгоритма U является слово m*w, а словом - результатом : m*T(w), еслимашина Т применима к слову w.
Если же машина Т не применима к слову w, то алгоритмU не завершается при исходном слове m*w.В силу гипотезы Тьюринга существует машина Тьюринга Т U, эквивалентная алгоритмуU, т.е. машина, способная выполнить работу любой машины Тьюринга над любымзаданным словом или, как говорят, способная моделировать любую машину Тьюринга.Машина ТU называется универсальной машиной Тьюринга. Существование такой машинывытекает из гипотезы Тьюринга. Конкретное же построение такой машины можетрассматриваться как дополнительный аргумент в пользу принятия гипотезы Тьюринга.Вместо полного описания таблицы переходов универсальной машины Тьюринга мыограничимся здесь общей схемой работы такой машины.Пусть на ленте машины записано слово @m*w, а управляющая головка обозреваетпервый символ этого слова, находясь в начальном состоянии.
Далее выполняютсяследующие этапы:1. Управляющая головка просматривает слово @ m*w и обнаруживает символ *,переходя в новое состояние к первому символу слова w.2. Обозрев ячейку, управляющая головка "запоминает" записанный в ячейке символ,переходя в соответствующее состояние, записывает в ячейку ленты символ * и"отправляется" налево до пустой ячейки, где переходит затем к правой соседней ячейке.Возникшая ситуация будет повторяться в процессе работы универсальной машиныТьюринга и соответствует началу поиска алгоритмом U клетки в таблице переходов,соответствующей состоянию и обнаруженному символу. Напомним, что обнаруженныйсимвол отражен в состоянии управляющей головки универсальной машины, а состояниеуправляющей головки моделируемой машины отражено цепочкой из символов @,предшествующей слову m.
На первый раз эта цепочка состоит из одного символа @, чтосоответствует начальному состоянию. В дальнейшем эта цепочка оказывается такой,какая возникает в результате выполнения этапа 4.3. В слове m ищется соответствующая строка.4. В найденной строке ищется клетка, помеченная запомненным на шаге 2 символом.Запоминаются символ, сигнал протяжки и признак заключительного состояния, указанныев этой клетке. А также переносится цепочка @@...@, изображающая новое состояние, такчтобы ее копия оказалась на ленте непосредственно перед словом m .5. Управляющая головка отправляется к символу *, стоящему следом за словом m , азатем ищет следующую звездочку, на место которой записывает символ, запомненный изнайденной на этапе 4 клетки таблицы переходов m.