Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Нормальные алгорифмы Маркова (НАМ).




Они были предложены в качестве формального подхода к понятию алгоритма выдающимся русским математиком А.А.Марковым в 1950-х годах.

Рассматривается некоторый алфавит A и слова в этом алфавите.

Конкатенацией двух слов Q и R назовем слово QR, то есть в конкатенации сначала идут последовательно все символы слова Q, а затем все символы слова R. (Не зная слов Q и R, мы воспринимаем слово QR как единое целое).

Любую подпоследовательность идущих друг за другом символов слова назовем подсловом.

Слово, не имеющее букв, называется пустым словом и обозначается через L.

Слова, состоящие из одинаковых последовательностей символов, считаются эквивалентными. Заметим, что слова PQ, LPQ, PLQ, PQL эквивалентны в рамках формализма НАМ.

НАМ состоит из последовательности шагов работы. При определении шагов работы НАМ используются понятия преобразования, обычного и завершающего.

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

Преобразование pi обозначается или в виде Pi®Si (обычное), или в виде Pi®·Si (завершающее).

Формально НАМ - это четверка {A,B,D, P}, где A - входной алфавит,B - надалфавит А, D - пустое слово, P - конечный упорядоченный набор преобразований P={p1,…,pn}. В каждом таком преобразовании присутствуют слова над алфавитом A (в алфавите B). Входное и выходное слова - это слова в алфавите A.

Если для слова P не существует ни одного преобразования такого, что Pi является его подсловом, то эту ситуацию обозначим следующим образом: PÜ. Если в результате применения НАМ к слову P образовалось слово R, то обозначим это через PÞR.

НАМ преобразует входное слово P в выходное Q. Работа НАМ осуществляется шаг за шагом. На первом шаге в качестве входного слова используется слово P. На каждом следующем шаге в качестве входного слова используется результат предыдущего шага. На каждом шаге во входном слове поочередно для i=1,…,n ищутся крайние левые подслова, эквивалентные Pi. Если такое подслово найдено, то выполняется преобразование pi. Если это преобразование завершающее, то работа НАМ заканчивается. В противном случае переход к следующему шагу. И так для всех i=1,…,n. Если ни для какого из этих i упомянутое выше подслово не найдено, то работа НАМ заканчивается.

Задача для НАМ выглядит в виде требования построить НАМ, который преобразует данное входное слово (условие любой индивидуальной задачи данной массовой задачи) в выходное слово (решение индивидуальной задачи данной массовой задачи). Естественно, что может быть много различных НАМ, решающих каждую конкретную задачу.

Входной алфавит - это алфавит, в котором написано входное слово. Составление НАМ - это нахождение B и P={p1,…,pn}. Предполагается, что пустое слово не входит ни в один из рабочих алфавитов НАМ.

Перейдем теперь к рассмотрению конкретных примеров. Договоримся о некоторых обозначениях. Целые числа задаются в алфавите {1, *}. Целое число n кодируется последовательностью из n+1 единицы. Несколько аргументов функции разделяются символом *. Например, при вычислении значения функции F(x,y,z) от трех переменных x=2, y=5, z=1 входное слово НАМ имеет вид 111*111111*11.

Для сокращения записи схемы алгоритма буквами h, x, z будем обозначать любые буквы входного алфавита A, а буквами a, b, g обозначаются конкретные буквы, не входящие в A. Например, имеем алфавит из 10 букв, а в схеме алгоритма идут подряд 10 преобразований стирания каждой одной буквы, которые могут выполняться в произвольном порядке. Все эти преобразования можно обозначать как h®D.

Рассмотрим несколько примеров.

Пример. Построить НАМ для прибавления 1 к числу X.

То есть задан алфавит A={*,1}.

Число k представляется в виде .

Алгоритм осуществляет преобразование B(X)=X+1.

В этом случае весь набор преобразований состоит из единственного преобразования:

.

Пример. Построить НАМ для стирания слова.

A={a1…an}

B(X)=

Этот набор преобразований, как выше было сказано, можно кратко обозначить следующим образом:

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

Алфавит A={a1…an}.

Требуется осуществить преобразование , где

ai1…aik, aik…ai1.

Алфавит А расширяем до алфавита В=А { }

Пусть - любые буквы алфавита A.

Пример. Для входного алфавита {b, c} построить НАМ, "различающий" слова, содержащие b от остальных.

Входной алфавит А={b,c}

Выходной алфавит состоит из 0 и 1. Результатом задачи будет: 0 - нет во входном слове буквы b, 1 - b присутствует.

Пример. Построить НАМ, который для любой пары слов определяет, содержат ли они равное количество букв.

Разделение слов L*R.

Выходной алфавит состоит из трех букв: a, b, c. На выходе буква появляется а, если длина слова L больше длины слова R, буква b, если длина слова L меньше длины слова R, и буква c, длина слова L равна длине слова R.

Машины Тьюринга

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

Здесь мы рассмотрим еще одну, пожалую самую популярную из таких схем - машину Тьюринга. Подобно предыдущему формализму она предназначается для преобразования некоторого одного слова P в заданном алфавите в другое слово Q.

Заметим, что существует несколько разновидностей МТ. Более того, даже для одного и того же типа МТ определения могут варьироваться. Это может быть связано с мелкими техническими удобствами, а также с попытками не загромождать формализма "очевидными" тонкостями.

Рассмотрим самый простой объекта - одноленточную детерминированную МТ. Она представляет собой пятерку {S, A, F, q0, d}, где S={q1,…qk} - конечное множество, элементы которого называются состояниями, A={a1,…,an} - алфавит, FÍS. Элементы F называются конечными состояниями, выделено начальное состояние q0 и схема переходов машины Тьюринга d. Каждый такой переход еще называется командой, а вся схема (список команд) представляет собой частично определенное отображение из S´A®S´A´{L, R, St}. Здесь {L, R, St } - множество из трех элементов, смысл которых ниже поясняется.

Опишем теперь механизм работы МТ. На двусторонней бесконечной ленте, разбитой на ячейке, начиная с некоторой ячейки, записано входное слово P (по одному символу в каждой ячейке). Имеется еще один объект - "головка" МТ, который характеризуется наличием определенного приписанного ей состояния и умением читать и писать.

Работа МТ состоит из последовательности тактов.

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

Вообще, положение головки, ее состояние и запись на ленте полностью описывают конфигурацию МТ в данный момент времени. Поэтому конфигурацией МТ и называется слово v1…vkqjvk+1…vm. Эта запись свидетельствует о том, что в данный момент времени головка МТ находится в состоянии qj и обозревает ячейку ленты, в которой записан символ vk+1. Все же слово, записанное к этому моменту на ленте, имеет вид v1…vkvk+1…vm.

Каждой конфигурации K=v1…vkqjvk+1…vm однозначно сопоставляется пара конфигураци и qjvk+1и слово конфигурации v1…vkvk+1…vm.

Такт работы представляет собой переход из одной конфигурации к другой. Этот переход осуществляется путем выполнения некоторой команды qiaj ®qrat{Z}. (Пару qiaj назовем левой частью команды qiaj®qrat{Z}, а тройку qrat{Z} - правой частью этой команды.) Если пара конфигурации не является левой частью ни одной из команд, то МТ останавливается и процесс ее работы заканчивается.

Если же такая команда qiaj ®qrat{Z} найдена, то это означает, что перед выполнением данного такта МТ находилась в состоянии qi, обозревала ячейку с символом aj, а после выполнения данного такта она перешла в состояние qr, в ранее обозреваемой ячейке появился символ at.Z имеет одно из трех значений L, R, St. В первом случае головка сдвинулась на данном такте на одну ячейку влево, во втором - вправо, в третьем - осталась на месте. Если qr является конечным состоянием, то процесс работы МТ заканчивается и МТ останавливается. В противном случае для вновь полученной конфигурации ищется команда, правая часть которой совпадает с парой конфигурации, и процесс продолжается.

Так как каждая команда определяется однозначно, то, в отличие от НАМ, порядок команд в списке не имеет значения.

Переход от конфигурации Ki к конфигурации Kj в результате выполнения некоторого такта работы МТ обозначим через Kiú¾Kj. Если существует такая последовательность команд, что в результате их выполнения МТ перешла из конфигурации Ki к конфигурации Kj, то эту ситуацию обозначим через Ki÷ÞKj.

Заметим, что МТ может зацикливаться. Это довольно тонкий момент в данном формализме, который восходит к тому факту в определении алгоритма, согласно которому алгоритм не обязан сам распознавать слова из своей области действия. Конечно, если мы требуем, чтобы перед началом работы была проведена проверка на соответствие входного слова области действия, то никакого зацикливания не может быть, так как уже на стадии проверки будут отсеяны те слова, на которых алгоритм не может корректно работать (слова, которым он не применим). Если же такой предварительной стадии нет, то она может быть заменена предположением о том, что у нас есть некоторый механизм идентификации зацикливаний. То есть, мы можем различать три ситуации: МТ остановилась и завершила свою работу; МТ находится в процессе работы, совершив некоторой количество переходов, и готовится к очередному такту работы; МТ зациклилась, т.е. будет работать и никогда не остановится.

Если МТ на входном слове P за конечное число тактов останавливается, то говорят, что она применима к этому слову. Последовательность конфигураций от начальной до конечной называется вычислением МТ на слове P.

В отличие от НАМ в данном формализме присутствуют такие понятия как: читающая и пишущая головка, обозреваемая ячейка, сдвиги вправо и влево и пр. Все это с точки зрения формальной схемы интуитивного понятия "алгоритм" также нуждается в формализации. Она более или менее очевидна, особенно с точки зрения людей, знакомых с азами компьютерной техники. (Заметим, что Тьюринг предложил свой формализм в 1935 году, когда о компьютерах еще и речи не было). Предположим, что все эти детали определены, и мы получили некоторый алгоритм ÂT,C. Он работает в алфавите C, C является надалфавитом алфавита A машины Тьюринга Т. А для любых слов P и Q в алфавите С соотношение ÂT,C(P)=Q выполняется тогда и только тогда, когда существует такое вычисление на машине Тьюринга Т такое, что оно начинается с конфигурации q0R и заканчивается конфигурацией R1qiR2, где R1R2=Q.

Вообще же произвольный алгоритм Á в алфавите D называется вычислимым по Тьюрингу тогда и только тогда, когда существует машины Тьюринга T с алфавитом A и алфавит C, являющийся надалфавитом AÈD такие, что алгоритмы ÂT,C и Á вполне эквивалентны относительно D.

Перейдем теперь к рассмотрению примеров.

Пример 1. Построить МТ, вычисляющую функцию T(X)= (машина стирает любой слово).

Входной алфавит: A={a1…an}.

Множество состояний состоит из единственного начального состояния q=q0.

Работа МТ описывается единственной командой: .

Пример 2. Построить МТ, вычисляющую функцию T(x,y)=x+y.

Алфавит A=(*,1).

При этом сохраняем договоренность о том, что через обозначаются любые символы алфавита.

На входе мы имеем . На выходе - * .

 

Теорема: Пусть M – машина Тьюринга, вычисляющая функцию f, тогда существует нормальный алгоритм Маркова, вычисляющий ту же функцию.

Доказательство: A – алфавит МТ, S – множество отношений, B = A S.

a,b A, q, q’ S

Машина Тьюринга Нормальный Алгоритм Маркова
δ (q,a) = (q’, b, S) qa→q’b
δ (q,a) = (q’, b, R) ck: qa ck → bq’ ck qa → bq’_’
δ (q,a) = (q’, b, L) ck: ck qa → q’ckb

 

qi → ∙λ, qi F

λ → q0

Сложность (количество действий):

Снам (n) ≤Смт (n) + 2

Снам (n) =O (Смт (n))

Существует и обратная теорема: Если существует НАМ, вычисляющий функцию f, тогда существует и МТ, вычисляющая ту же функцию.

Тезич Чёрча: Любой алгоритм можно реализовать на МТ (и на НАМ).

f: A* {0, 1} – функция распознавания, она может быть вычислена с помощью машины Тьюринга, она задает язык для алфавита A.

Вопрос: Любая ли такая функция может быть вычислимой?

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...