Возможность порождения формальной грамматикой произвольного перечислимого языка — различия между версиями
(→Построение МТ по грамматике) |
Nursan (обсуждение | вклад) |
||
Строка 10: | Строка 10: | ||
Теперь <tex>Tm</tex> недетерминированно симулирует вывод <tex>G</tex>, начиная с <tex>S</tex>. Каждая [[Формальные грамматики#sform|сентенциальная форма вывода]] появляется по порядку между последними двумя <tex>\#</tex>. Если некоторый выбор переходов ведет к терминальной строке, она сравнивается с <tex>w</tex>. Если они совпадают, <tex>Tm</tex> допускает. | Теперь <tex>Tm</tex> недетерминированно симулирует вывод <tex>G</tex>, начиная с <tex>S</tex>. Каждая [[Формальные грамматики#sform|сентенциальная форма вывода]] появляется по порядку между последними двумя <tex>\#</tex>. Если некоторый выбор переходов ведет к терминальной строке, она сравнивается с <tex>w</tex>. Если они совпадают, <tex>Tm</tex> допускает. | ||
− | Формально, пусть <tex>Tm</tex> имеет на ленте <tex>\#w\#A_1A_2 | + | Формально, пусть <tex>Tm</tex> имеет на ленте <tex>\#w\#A_1A_2 \ldots A_k\#</tex>. <tex>Tm</tex> передвигает недетерминированно головку по <tex>A_1A_2 |
+ | \ldots A_k</tex>, выбирая позицию <tex>i</tex> и константу <tex>r</tex> между <tex>1</tex> и максимальной длиной левой части любого правила вывода в <tex>P</tex>. Затем <tex>Tm</tex> проверяет подстроки <tex>A_iA_{i+1}...A_{i+r-1}</tex>. Если <tex>A_iA_{i+1}...A_{i+r-1}</tex> — левая часть некоторого правила вывода из <tex>P</tex>, она может быть заменена на правую часть. <tex>Tm</tex> может сдвинуть <tex>A_{i+r}A_{i+r+1}...A_k\#</tex> либо влево, либо вправо, освобождая или заполняя место, если правая часть имеет длину, отличную от <tex>r</tex>. | ||
Из этой простой симуляции выводов в <tex>G</tex> видно, что <tex>Tm</tex> печатает на ленте строку вида <tex>\#w\#y\#</tex>, <tex>y \in V*</tex> в точности, если <tex>S \Rightarrow^* y</tex>. Если <tex>y = w</tex>, <tex>Tm</tex> допускает <tex>L</tex>. | Из этой простой симуляции выводов в <tex>G</tex> видно, что <tex>Tm</tex> печатает на ленте строку вида <tex>\#w\#y\#</tex>, <tex>y \in V*</tex> в точности, если <tex>S \Rightarrow^* y</tex>. Если <tex>y = w</tex>, <tex>Tm</tex> допускает <tex>L</tex>. |
Версия 19:46, 10 марта 2019
Лемма: |
Для любой формальной грамматики существует машина Тьюринга, распознающая язык этой грамматики. |
Доказательство: |
Пусть Теперь сентенциальная форма вывода появляется по порядку между последними двумя . Если некоторый выбор переходов ведет к терминальной строке, она сравнивается с . Если они совпадают, допускает. недетерминированно симулирует вывод , начиная с . КаждаяФормально, пусть Из этой простой симуляции выводов в имеет на ленте . передвигает недетерминированно головку по , выбирая позицию и константу между и максимальной длиной левой части любого правила вывода в . Затем проверяет подстроки . Если — левая часть некоторого правила вывода из , она может быть заменена на правую часть. может сдвинуть либо влево, либо вправо, освобождая или заполняя место, если правая часть имеет длину, отличную от . видно, что печатает на ленте строку вида , в точности, если . Если , допускает . |
Лемма: |
Если язык распознается некоторой машиной Тьюринга, то существует формальная грамматика, которая его генерирует. |
Доказательство: |
Пусть допускает . Построим грамматику , которая недерминированно генерирует две копии представления некоторого слова из и затем симулирует поведение на одной из копий. Если допускает слово, то G трансформирует вторую копию в терминальную строку. Если не допускает , то вывод никогда не приводит к терминальной строке.Формально, пусть
Используя правила 1 и 2, Предположим, что Предположение индукции тривиально для нуля шагов. Предположим, что оно справедливо для По правилам 6 или 7: Теперь .Таким образом, , что доказывает предположение индукции.По правилам 8-10, если Таким образом, , легко показать что . может генерировать , если допускается . Таким образом, включает все слова, допускаемые . Для завершения доказательства необходимо показать, что все слова из допускаются . Индукцией доказывается, что только если допускается . |
Теорема: |
Язык распознается машиной Тьюринга тогда и только тогда, когда он генерируется формальной грамматикой. |
Примеры
Построение МТ по грамматике
Задача: |
построить МТ для следующей грамматики:
|
Решением будет МТ, которая изменяет содержимое ленты следующим образом ( ):
- это первое правило грамматики
- это второе правило грамматики
- это третье правило грамматики
- это четвертое правило грамматики
- , где — допускающее состояние
Причем она перебирает все возможные последовательности применения таких преобразований недетерминированно (если ни одно применить нельзя, МТ возвращает ленту в исходное состояние)
Построение грамматики по МТ
Задача: |
написать грамматику, генерирующую язык заданной МТ:
|
Грамматика будет следующей:
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- .
См. также
Источники информации
- Math Help Planet — Порождающие грамматики
- И.А. Волкова, А.А. Вылиток, Т.В. Руденко — Формальные грамматики и языки. Элементы теории трансляции, 3-е изд. — Москва, Издательский отдел факультета ВМиК МГУ им. М.В.Ломоносова, 2009 — 115 с. : ISBN 978-5-89407-395-8
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2008. — 528 с. : ISBN 978-5-8459-1347-0 (рус.)