КАТЕГОРИИ: Архитектура-(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) |
Системы продукций Поста (канонические системы)
Каноническая система определяется собственным алфавитом А = { Слово Пример 6-7. а. Множество всех нечетных чисел в унарном представлении — это множество всех теорем канонической системы с алфавитами {|}, {х}, аксиомой | и продукцией х б. Множество всех формул исчисления высказываний порождается канонической системой с алфавитами {al......, аn, V, &,
x1, x2 x1, x2 x1 Отметим, что здесь алфавит пропозициональных букв конечен. Для построения исчисления с бесконечным множеством пропозициональных букв сначала нужно построить формальную систему, порождающую это множество из конечного алфавита символов. Именно с этой целью в языках программирования вводится индуктивное определение идентификатора; оно представляет собой формальную систему, порождающую бесконечное множество переменных языка из конечного алфавита букв и цифр. При построении машин Тьюринга часто оказывалось удобным (а иногда необходимым) вводить вспомогательные символы, которые участвуют в процессе вычисления, но не присутствуют ни в исходных данных, ни в результате. Аналогичные средства вводятся и в формальных системах. Пусть дана каноническая система S с собственным алфавитом А', в котором выделен подалфавит А. Если нас интересуют только те теоремы S, которые являются словами в A, то будем говорить, что система S является канонической системой над А, А назовем основным алфавитом, А' — расширением А, а символы из A'\A— вспомогательными. Пример 6-8. а. Последовательность чисел 0, 1, 1, 2, 3, 5, 8..., в которой каждый член, начиная с третьего, равен сумме двух предыдущих, называется последовательностью Фибоначчи, а ее элементы — числами Фибоначчи. Числа Фибоначчи в унарном представлении порождаются канонической системой над {|} со вспомогательным символом *, аксиомой * l и двумя продукциями: x1* x2 В этой системе символ * служит маркером, разделяющим два числа, аксиома задает первые два числа последовательности (0 изображен пустым словом слева от маркера), первая продукция из n-го и (n + 1)-го члена получает (n + + 1)-й и (n + 2)-й члены последовательности, вторая продукция из пары чисел выделяет первое; только применение второй продукции дает слова в алфавите {|}. б. Реализуем изложенный в примере 6-7б план построения формул исчисления высказываний с бесконечным множеством пропозициональных букв. Эти «буквы» будут обозначаться символом а с числовым индексом, т. е. будут представлять собой слова вида a, a01, a523 и т. д., играющие роль идентификаторов (имен веременных). Система содержит основной алфавит А ={а, 0, 1,2,..., 9, V, &, х1i x1i ………… x1i x1i x1f, x2f x1f, x2f x1f, x2f x1f x1f Первые десять продукций порождают идентификаторы; следующие пять продукций формализуют индуктивное определение формулы (из этих пяти четыре последних отличаются от продукций (6-15) только символом f), последняя продукция служит для удаления символа f. Вспомогательные символы играют здесь несколько непривычную роль — они, по существу, являются признаками (или метками) определенного класса слов: i — метка класса идентификаторов, f — метка класса формул. Благодаря этому формальный вид продукции очень близок к тексту соответствующей части индуктивного определения: 11-я продукция означает «всякий идентификатор есть формула», а 12-я: «если x1 и x2 — формулы, то (х1Vx2)— формула». Причем использования в формальных системах специальных символов как признаков классов широко используется в формальных системах Шмульяна, которые за недостатком места в данной книге не рассматриваются. Более подробно об использовании формальных систем такого рода для описания алгоритмических языков говорится в [41], а о системах Шмульяна — в [53]. Связь канонических систем с системами подстановок довольно ясна, по крайней мере, в одну сторону; очевидно, что всякой подстановке Теорема 6-18. Для любого перечисяимого множества М слов в алфавите А существует каноническая система над А, множество теорем которой совпадает с М. Пусть М перечисляется машиной Тьюринга Т с алфавитом ленты Ат = {a1,..., аn}, первые m букв которого образуют алфавит исходных данных (m x1 * : x1* x1* qzx1 Первые m продукций порождают из аксиомы все множество слов в алфавите исходных данных с маркером в конце; (m + 1)-я продукция (стартовая) порождает из любого исходного слова начальную конфигурацию; после этого работают продукции, соответствующие командам машины Т; наконец, в заключительных конфигурациях (и только в них!) символ состояния выбрасывается и получаются искомые теоремы в алфавите А. D Итак, в терминах канонических систем можно описать любые перечислимые множества. Правда, используемое определение канонической системы (в частности, вид ее продукций) является слишком общим: применение продукции трудно назвать элементарным шагом (хотя свойство применимости продукции, как нетрудно видеть, разрешимо). Поэтому возникает задача нормализации канонических систем, т. е. придание им более простого, «нормального» вида. Каноническая система называется нормальной, если она имеет одну аксиому, а все ее продукции имеют вид Теорема 6-19 (теорема Поста о нормальной форме). Для любой канонической системы CS с алфавитом А существует нормальная каноническая система NS над А, эквивалентная CS (т. е. множество теорем NS над А и множество теорем CS совпадают). Прямое доказательство этой теоремы, содержащее метод построения NS no CS, довольно сложно. Его можно найти, например, в [50], где оно занимает целую главу. Ограничимся косвенным доказательством существования MS, а именно: покажем, что для любой системы подстановок S в алфавите А существует нормальная каноническая система NS над А, эквивалентная S. Пусть А = {a1,..., аn} и S содержит k подстановок aix ajx a'jx где Пусть к слову Пусть теперь в MS имеется вывод В заключение раздела приведем без доказательства один результат об алгоритмической неразрешимости, который доказан Постом с помощью канонических систем и который часто используется для доказательства других неразрешимостей (особенно в теории формальных грамматик). Пусть дано конечное множество (
Эта проблема называется комбинаторной проблемой или проблемой соответствия Поста. Имеются два варианта ее формулировки: общая комбинаторная проблема Поста (для произвольного множества пар) и ограниченная комбинаторная проблема (для множества пар с фиксированной мощностью 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; Нарушение авторских прав?; Мы поможем в написании вашей работы! |