КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Системы продукций Поста (канонические системы)
Каноническая система определяется собственным алфавитом А = { ,..., } (алфавитом констант), алфавитом X = {х1,..., хn} переменных, конечным множеством аксиом и конечным множеством правил вывода, имеющих вид , …, и называемых продукциями (, …, ), как обычно, называются посылками, — следствием). Аксиомы, а также посылки и следствия продукций — это слова в алфавите А U X; иначе говоря, они содержат кроме собственных букв системы еще и переменные. В дальнейшем слова в алфавите A U X будем называть термами, а слова в A — просто словами. Переменные канонической системы аналогичны метапеременным в логических исчислениях; аксиомы канонической системы — это, по существу, схемы аксиом логических исчислений. Говоря о подстановке в термы слов вместо переменных, мы всегда будем иметь в виду, что сохраняется обычное ограничение: вместо всех вхождений одной и той же переменной подставляется одно и то же слово (быть может, пустое). Слово называется применением аксиомы , если получается подстановкой в слов вместо переменных. Слово непосредственно выводимо из слова ,..., применением продукции Р с n посылками, если найдется такая подстановка слов вместо переменных Р, которая посылки Р превратит в слова ,..., а заключение Р — в слово . Например, слово bb непосредственно выводимо из слов acab, cabb применением продукции ах1b, х1bх2 bх2 при подстановке х1 = са, х2 = b. Последовательность слов называется доказательством в канонической системе, если каждое слово этой последовательности — либо применение аксиомы, либо непосредственно выводимо из предыдущих слов последовательности применением некоторой продукции системы. Слово называется доказуемым (или теоремой), если оно является последним словом некоторого доказательства. Пример 6-7. а. Множество всех нечетных чисел в унарном представлении — это множество всех теорем канонической системы с алфавитами {|}, {х}, аксиомой | и продукцией х х ||. Если эту продукцию заменить продукцией х хх, то получим каноническую систему, порождающую степени двойки (в унарном представлении): |, ||, |,... б. Множество всех формул исчисления высказываний порождается канонической системой с алфавитами {al......, аn, V, &, , , (,)}, {x1, x2}, аксиомами а1,..., аn и продукциями x1, x2 (x1 V x2); x1, x2 (x1 & x2); (6-15) x1, x2 (x1 x2); x1 x1. Отметим, что здесь алфавит пропозициональных букв конечен. Для построения исчисления с бесконечным множеством пропозициональных букв сначала нужно построить формальную систему, порождающую это множество из конечного алфавита символов. Именно с этой целью в языках программирования вводится индуктивное определение идентификатора; оно представляет собой формальную систему, порождающую бесконечное множество переменных языка из конечного алфавита букв и цифр. При построении машин Тьюринга часто оказывалось удобным (а иногда необходимым) вводить вспомогательные символы, которые участвуют в процессе вычисления, но не присутствуют ни в исходных данных, ни в результате. Аналогичные средства вводятся и в формальных системах. Пусть дана каноническая система S с собственным алфавитом А', в котором выделен подалфавит А. Если нас интересуют только те теоремы S, которые являются словами в A, то будем говорить, что система S является канонической системой над А, А назовем основным алфавитом, А' — расширением А, а символы из A'\A— вспомогательными. Пример 6-8. а. Последовательность чисел 0, 1, 1, 2, 3, 5, 8..., в которой каждый член, начиная с третьего, равен сумме двух предыдущих, называется последовательностью Фибоначчи, а ее элементы — числами Фибоначчи. Числа Фибоначчи в унарном представлении порождаются канонической системой над {|} со вспомогательным символом *, аксиомой * l и двумя продукциями: x1* x2 x2*x1x2; x1x2 x1. В этой системе символ * служит маркером, разделяющим два числа, аксиома задает первые два числа последовательности (0 изображен пустым словом слева от маркера), первая продукция из n-го и (n + 1)-го члена получает (n + + 1)-й и (n + 2)-й члены последовательности, вторая продукция из пары чисел выделяет первое; только применение второй продукции дает слова в алфавите {|}. б. Реализуем изложенный в примере 6-7б план построения формул исчисления высказываний с бесконечным множеством пропозициональных букв. Эти «буквы» будут обозначаться символом а с числовым индексом, т. е. будут представлять собой слова вида a, a01, a523 и т. д., играющие роль идентификаторов (имен веременных). Система содержит основной алфавит А ={а, 0, 1,2,..., 9, V, &, , , (,)}, вспомогательные символы {i, f}, аксиому ai и l6 продукций: х1i x10i; x1i x1li; ………… x1i x19i, x1i x1f; x1f, x2f (x1 Vx2)f; x1f, x2f (x1&x2)f; x1f, x2f (x1 x2)f; x1f x1f; x1f x1. Первые десять продукций порождают идентификаторы; следующие пять продукций формализуют индуктивное определение формулы (из этих пяти четыре последних отличаются от продукций (6-15) только символом f), последняя продукция служит для удаления символа f. Вспомогательные символы играют здесь несколько непривычную роль — они, по существу, являются признаками (или метками) определенного класса слов: i — метка класса идентификаторов, f — метка класса формул. Благодаря этому формальный вид продукции очень близок к тексту соответствующей части индуктивного определения: 11-я продукция означает «всякий идентификатор есть формула», а 12-я: «если x1 и x2 — формулы, то (х1Vx2)— формула». Причем использования в формальных системах специальных символов как признаков классов широко используется в формальных системах Шмульяна, которые за недостатком места в данной книге не рассматриваются. Более подробно об использовании формальных систем такого рода для описания алгоритмических языков говорится в [41], а о системах Шмульяна — в [53]. Связь канонических систем с системами подстановок довольно ясна, по крайней мере, в одну сторону; очевидно, что всякой подстановке соответствует продукция х1 x2 = х1 x2 поэтому для всякой системы подстановок легко построить эквивалентную ей каноническую систему. Соответствие в обратную сторону менее очевидно; однако о том, что оно существует, можно заключить, сопоставив теорему 6-14 (из которой следует, что множество теорем канонической системы перечислимо) с теоремой 6-15 (любое перечислимое множество можно представить как множество заключительных слов в некоторой системе подстановок). Правда, понятие заключительного слова может показаться несколько искусственным и слишком уж приближающим формальные системы к машинам Тьюринга; если рассматривать формальную систему как генератор элементов перечислимого множества, более естественным было бы описание перечислимого множества как множества теорем некоторой формальной системы. Это нетрудно сделать, используя введенное ранее понятие канонической системы с расширенным алфавитом. Теорема 6-18. Для любого перечисяимого множества М слов в алфавите А существует каноническая система над А, множество теорем которой совпадает с М. Пусть М перечисляется машиной Тьюринга Т с алфавитом ленты Ат = {a1,..., аn}, первые m букв которого образуют алфавит исходных данных (m n), множеством состояний Q = {q1,..., qz} и системой команд . Определим каноническую систему S над, А следующим образом: А = АТ, А' =АТ U QT; аксиома системы *; командам машины Т поставим в соответствие продукции аналогично тому, как это делалось при доказательстве теорем 6-15 и 6-16: например, команде qiaj qkaiR соответствует продукция x1qiajx2 x1aiqkx2 [ср. (6-13)]. Кроме того, введем следующие m + 2 продукции: x1 * х1а1 *; : x1* x1am*; x1* q1x1; qzx1 x1. Первые m продукций порождают из аксиомы все множество слов в алфавите исходных данных с маркером в конце; (m + 1)-я продукция (стартовая) порождает из любого исходного слова начальную конфигурацию; после этого работают продукции, соответствующие командам машины Т; наконец, в заключительных конфигурациях (и только в них!) символ состояния выбрасывается и получаются искомые теоремы в алфавите А. D Итак, в терминах канонических систем можно описать любые перечислимые множества. Правда, используемое определение канонической системы (в частности, вид ее продукций) является слишком общим: применение продукции трудно назвать элементарным шагом (хотя свойство применимости продукции, как нетрудно видеть, разрешимо). Поэтому возникает задача нормализации канонических систем, т. е. придание им более простого, «нормального» вида. Каноническая система называется нормальной, если она имеет одну аксиому, а все ее продукции имеют вид х x . Применение такой продукции к слову (если оно возможно) просто и стандартно: у слова вычеркивается начальный отрезок и к концу приписывается . Теорема 6-19 (теорема Поста о нормальной форме). Для любой канонической системы CS с алфавитом А существует нормальная каноническая система NS над А, эквивалентная CS (т. е. множество теорем NS над А и множество теорем CS совпадают). Прямое доказательство этой теоремы, содержащее метод построения NS no CS, довольно сложно. Его можно найти, например, в [50], где оно занимает целую главу. Ограничимся косвенным доказательством существования MS, а именно: покажем, что для любой системы подстановок S в алфавите А существует нормальная каноническая система NS над А, эквивалентная S. Пусть А = {a1,..., аn} и S содержит k подстановок . Определим NS как систему с расширенным алфавитом А' = { a1,..., аn, ..., } и k+ 2n продукциями: aix x (i = 1,.... k); (6-16) ajx x ; (6-17) a'jx xaj, (6-18) где здесь и в дальнейшем обозначает слово , в котором все буквы из А заменены соответствующими буквами со штрихом. Пусть к слову в S применима подстановка : = 1 i 2 и в S 1 i 2|— 1 2 Но тогда в NS 1 i 2|— i 2 1||— 2 1| |— 1| 2||— 1 2.Так как любой вывод |— в S есть цепочка подстановок, то по выводу |— в S можно построить вывод |— в NS. Пусть теперь в MS имеется вывод |— , где , — слова в А. Разобьем этот вывод на отрезки |— |— |—…|— , такие, что и (для всех j) — слова в А, а все слова между ними содержат вспомогательные буквы, и рассмотрим для определенности первый из них |— . Если — слово в А, то продукциями (6-17), (6-18) из него можно получить лишь слова вида 2 1|, 2| 1, |', где слова 1, 2 таковы, что 1 2 = . Так как — слово в А, то либо = (но тогда этот отрезок из вывода можно удалить), либо на отрезке |— была применена по крайней мере одна из продукций (6-16). Для любого вывода, содержащего между словами из А несколько применений продукций (6-16), в NS можно построить эквивалентный вывод, в котором между этими применениями вставлены слова из А. Строгое доказательство этого утверждения опускаем; приведем лишь пример: выводу 1 2|— 2 |— |— |— , в котором применены продукции 1х x и 2x x , соответствует вывод 1 2— 2 |— 2||— 2|— 2 |— |— , в котором они разделены словом 2. Итак, можно считать, что в выводе |— продукция (6-16) — пусть это будет х x —применена ровно один раз. Но тогда = 1 2, применению продукции (6-16) предшествовало несколько (быть может, ни одного) применений (6-17) и место вывода, где применена продукция (6-16), имеет вид 2 1| 2 1| . Остаток 2 1| |— рассматриваемого отрезка не содержит применений (6-16), поэтому в силу свойств продукций (6-17), (6-18) = 1 2. Но тогда получается из подстановкой , т. е. |— в S. Индукцией до числу слов доказываем, что |— в S. Отсюда следует эквивалентность S и NS, после чего о справедливости теоремы нетрудно заключить из сопоставления теорем 6-15 и 6-18. D В заключение раздела приведем без доказательства один результат об алгоритмической неразрешимости, который доказан Постом с помощью канонических систем и который часто используется для доказательства других неразрешимостей (особенно в теории формальных грамматик). Пусть дано конечное множество ( 1, ),..., ( m, ) пар слов в алфавите A. Поставим следующую проблему: существует ли последовательность il, i2,..., iN индексов, такая, что … = … ? Эта проблема называется комбинаторной проблемой или проблемой соответствия Поста. Имеются два варианта ее формулировки: общая комбинаторная проблема Поста (для произвольного множества пар) и ограниченная комбинаторная проблема (для множества пар с фиксированной мощностью m). Теорема 6-20. Ограниченная комбинаторная проблема Поста для достаточно больших m алгоритмически неразрешима. D Отсюда следует неразрешимость и общей комбинаторной проблемы. Формальные системы и алгоритмы. Итак, формальные системы оказываются столь же мощным средством для задания конструктивных объектов, что и алгоритмы. С их помощью можно имитировать поведение машин Тьюринга, т. е. строить формальные системы, в некотором смысле аналогичные алгоритмам. С другой стороны, понятие перечислимого множества в терминах формальных систем (опирающееся на теорему 6-18) выглядит более компактным, чем в терминах, скажем, машины Тьюринга. Поэтому возможны две концепции построения системы основных понятий, формализующих идеи эффективности и конструктивности. Концепция, описанная ранее и являющаяся исторически первой, кладет в основу понятие алгоритма. Вторая концепция, созданная Э. Постом 1, опирается на понятия формальной (конкретнее, канонической) системы и перечислимого множества, которое определяется просто как множество теорем формальной системы. Нормальную каноническую систему над алфавитом А можно представить как графе одной выделенной вершиной — аксиомой, остальные вершины которого помечены словами в A — теоремами, ребра — это применения продукций, а пути из выделенной вершины в данную — возможные выводы данного слова. Множество слов в А, порождаемое системой, — это множество всех вершин графа, помеченных словами в А. Алгоритм — это формальная система особого, детерминированного вида, характеризующаяся тем, что в ней к каждой теореме применима не более чем одна продукция. Соответствующий граф представляет собой цепочку, изображающую вычи- 1 Сжатое и блестяще написанное изложение этой концепции имеется в книге Мартин-Лефа в [48].
слительный процесс; аксиома в таком графе — это просто исходные данные алгоритма. Другой способ детерминизации формальных систем — это фиксация порядка применения правил вывода. Например, нормальный алгоритм Маркова [47] — это упорядоченная система подстановок с двумя дополнительными соглашениями: 1) i-я подстановка может быть применена, только если неприменимы 1,..., (i -1)-я подстановки; 2) если подстановка применима к слову , то подставляется вместо самого левого вхождения в . Основной акцент «алгоритмической» концепции — в ее детерминизме. Поэтому она естественна и удобна при описании вычислительных процессов и устройств. Основной акцент «формально-системной» концепции — в компактности конструктивного описания множеств. Примеры такого описания — формальные теории (§6-1 и 6-2). Другая группа примеров, крайне важных в прикладном отношении, — это алгоритмические языки программирования. Методы описания языков и построения компиляторов для них опираются на теорию формальных грамматик, представляющих собой еще один вид абстрактных формальных систем. Основные понятия этой теории и ее приложения к языкам программирования изложены в [40, 41].
Дата добавления: 2015-06-27; Просмотров: 3671; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |