Смекни!
smekni.com

Информатика и компьютерные науки (стр. 3 из 14)

2.1.3. Детерминистические алгоритмы текстовых замен

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

Примером детерминистических алгоритмов являются так называемые алгоритмы Маркова (по имени русского математика А. А. Маркова). В алгоритмах Маркова правила замен линейно упорядочены (этот порядок определяется последовательностью описания правил). Тогда применение правил устанавливается следующим образом.

Определение (марковская стратегия применения). Если применимо несколько правил, то фактически применяется то из этих правил, которое в описании алгоритма встречается первым. Если правило применимо в нескольких местах обрабатываемого слова, то выбирается самое левое из этих мест.

Таким образом, марковские алгоритмы всегда являются детерминиро­ванными и детерминистическими. В частности, справедливо следующее:

- каждое вычисление по марковской стратегии является также общим вычислением в СТЗ;

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

Пример (алгоритмы Маркова). Пусть задана система текстовых замен R на множестве символов {v, ~, true, false, (, )} для редукции булевских термов, которые построены только из символов данного множества, к нормальной форме. Эта система состоит из следующих правил:

(1) ~ ~ ® е

(2) ~ true ® false

(3) ~.false ® true

(4) (true) ® true

(5) (false) ® false

(6) false v ® e

(7) v false ® e

(8) true v true ® true

Алгоритм, определенный данной системой, работает по марковской стратегии корректно для замкнутых булевских термов (т. е. замкнутые булевские термы переводятся в семантически эквивалентные однознач­ные нормальные формы, состоящие из true и false). Это справедливо лаже для замкнутых термов с неполностью расставленными скобками. Однако в этом случае возможны такие применения, которые не являются эквивалентными преобразованиями. Для терма

-.true v true по марковской стратегии получаются вычисления

-.true v true ® (правило (2) )

false v true ® (правило (6) )

true

В общей недетерминистической стратегии дополнительно получают (в смысле постановки задачи корректное) вычисление

- true v true ® (правило (8) )

- true ® (правило (2))

false

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

2.1.4. Отображения, индуцируемые алгоритмами текстовых замен

Путем сопоставления выходного слова каждому входному слову при конечном вычислении детерминистические алгоритмы вычисляют час­тичные функции. Функции являются частичными, так как иногда при некоторых исходных данных алгоритмы не завершаются и потому результат вычислений не определен. Это имеет место также и для АТЗ. Явного использования частичных функций можно избежать путем введения особого символа -^ ("дно"), который символизирует отсутству­ющий "результат" незавершающегося ("расходящегося") вычисления.

Каждый детерминированный алгоритм R в форме СТЗ на после­довательностях символов V* определяет отображение:

fR: V* ® V* U ^ вследствие следующих правил. Пусть справедливо:

(1) fR (t) = г, если слово г есть результат вычислений по R для входного слова t;

(2) fR (t) = ^, если вычисление по R для входного слова t не заканчи­вается.

Тогда мы говорим: алгоритм R вычисляет функцию fp .

Обратим внимание, что для слов t, для которых выполнение СТЗ не завершается, отображение fR дает результат ^. Символ ^, таким образом, обозначает (псевдо)результат незавершающегося вычисления. С помо­щью введения этого символа обходят явную работу с частичными отображениями.

Если слова t Î V* понимать как представления определенных инфор­мации из множества А, т. е. существует функция интерпретации такая, что (А, V*, I) образует информационную систему, и если функция fR , индуцируемая алгоритмом R, согласована с интерпретацией, то R индуцирует также функцию между информациями, т. е. R индуцирует отображение интерпретаций.

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

I:{<, |,>}* ® N

с 1(<|...|>) = п для слова <|...|> с п штрихами. Тогда алгоритм умножения так представленных чисел со входом

<|...|> * <|...|> —» <|...|>

n m n*m

I¯ I¯ I¯

mult (n, m) = n*m

индуцирует отображение пары чисел на их произведение» т. е. отображе­ние умножения.

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

GR Í V*x(V* U ^), определяемое следующим образом:

GR = { (t, r) Î V* х V* : г - выходное слово вычисления по R с входным словом t}

U {(t, ^) Î V* х {^} : существует бесконечное вычисление по R для входного слова t}.

Обратим внимание, что в отношении gr для каждого входа t существует выход r Î V*U{^}.

Пример (недетерминистический алгоритм с неоднозначным результатом). Пусть вход имеет форму Ð<|||...|>. Пусть задана система замен R с правилами:

Ð< ® <Ð

Ð| ® |Ð|

Ð| ® ||

Ð> ® |>

Так заданный алгоритм R по любому натуральному числу n (представлен­ному в виде числа штрихов) порождает натуральное число m, большее, чем n, либо не завершается. На рис. 2.2 приведена схема дерева всевозможных вычислений для входа V<| ||>.

Рис. 2.2. Дерево вычислений

Получается следующее отношение (при интерпретации последователь­ности штрихов как натурального числа):

GR = { (n, m): n Î N^((m Î N ^ n<m) v m=^

Детерминистические алгоритмы вычисляют функции. Это ставит вопрос о том, могут ли все математические функции вычисляться с помощью алгоритмов. Один из фундаментальных результатов современной математической логики принадлежат логику Курту Геделю и отвечает на вопрос о вычислимых функциях, представимых через алгоритмы. Упрощая фopмулировку, результат Геделя говорит, что не всякая функция допускает ее вычисление с помощью алгоритма. Те функции, для вычисления которых может быть задан алгоритм, называют вычислимыми.

Имеется много различных формализации понятия "алгоритм" Некоторыми примерами этого являются:

- текстовые и термовые замены (редукция);

- рекурсивные функции;

-(тьюринговые) машины (а также регистровые машины).

Однако все эти формализации ведут к тому же самому понятию "вычис­лимые функции". Каждая вычислимая функция может быть вычислена с помощью АТЗ.

2.2. Вычислительные структуры

Алгоритмы работают над элементами данных, которые могут быть объе­динены в так называемый носитель (множества данных). Для формулиро­вания алгоритмов, наряду с используемыми элементами данных, весьма существенны имеющиеся в распоряжении эффективные функции над этими элементами. Фигурирующие в алгоритмах носители и операции могут трактоваться вместе как вычислительные структуры. Вычислительная структура охватывает тем самым семейство носителей (данные) и семейство отображений между этими носителями. Вычислительные структуры обнаруживаются в самых различных проявлениях. К примеру, карманный калькулятор, так же как и мощная ЭВМ, могут математичес­ки восприниматься и описываться как вычислительные структуры.

2,2.1, Семейства функций и множеств как вычислительные структуры

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

Определение (вычислительная структура). Пусть S и F - множества обо­значений; вычислительная структура А состоит из семейства {sА: s Î S} носителей sА и семейства {fА: f Î F} отображений fА между этими носителями. Мы пишем:

А=({sА: s Î S}, {fА: f Î F}).

Элементы s Î S есть обозначения для носителей и называются типами. Элементы f Î F есть обозначения для отображений и называются символами функции или знаками операций. Для каждого f Î F существует 1 одно n Î N такое, что имеет место: fА есть n-местная функция, и существуют типы s1…. sn+1 Î S такие, что

Может также быть и n = 0, т. e. допускаются и "нульместные" отображе­ния. Это такие отображения, которые (с пустым списком аргументов) получают в точности один элемент из области значений.

Для устранения частичных отображений снова используется специаль­ный элемент ^ ("дно") для представления неопределенного значения функции. Пусть М - множество, не содержащее ^. Множество M1 определяется как

M'=M U {^}.

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

Отображение f:M1 x...x Mn ® Mn+1

называется строгим, когда справедливо: если одним из аргументов функции является ^, то результат функции тоже есть ^. Это соответствует простому предположению, что результат применения функции к списку аргументов определен только в том случае, когда определены все аргументы. Распространение частичных отображений на все отображения путем добавления ^ к носителям приводит к строгим отображениям.