Конспект лекций москва 2004 удк 519. 713(075)+519. 76(075) ббк 22. 18я7

Вид материалаКонспект

Содержание


6.7. Разрешимые проблемы для А-грамматик
7. Нотации для задания КС-грамматик 7.1. Математическая нотация
7.2. Бекусова нормальная форма
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   ...   21

6.7. Разрешимые проблемы для А-грамматик


Теорема 8 .Если L – А-язык, и ZL имеет длину числа состояний детерминированного автомата, то Z=WXY, гдеX1 и W Xi Y L для всех i0.

Доказательство.

Пусть есть некоторый А-язык и автомат ML, порождающий этот язык.

Q={ q0,.q1,q2,…,qn-1} – множество состояний автомата ML , n – число состояний автомата, q0 – начальное состояние автомата.

F(q0,Z)K т.к. ZL. Zn , поэтому qjQ , что Z=WXY, X 1, F(q0,W)= qj, F(qj,X )= qj, F(qj, Y)K. Но тогда F(q0,W XiY)K для всех i0, что требовалось доказать.

Теорема 9. Проблема непустоты для А-грамматик разрешима, т.е., если задана А-грамматика G, то существует алгоритм, позволяющий ответить на вопрос: L(G)= ?

Доказательство.

Например, по предыдущей теореме, если L(G), то существует цепочка длины меньшей n, где n – число состояний детерминированного автомата, и перебирая все цепочки длины , не превосходящей n, можно определить, принадлежит ли какая-нибудь из них языку, порождаемому автоматом(хотя это и не оптимальное решение).

Теорема 10. Проблема равносильности А-грамматик разрешима. т.е., если G1 и G2 – А-грамматики, то существует алгоритм, позволяющий определить, L(G1)=L(G2)?

Доказательство.

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

Теорема 11. Проблема конечности языка, порождаемого А-грамматикой, разрешима.

Доказательство.

Обозначим множество состояний, достижимых из состояния Ai , как H(Ai). Тогда, если  Ai, такое, что Ai H(q0 )& Ai H(Ai)& Aj  H(Ai )& AjK, то язык, порождаемый автоматом, бесконечен.

Интересно отметить, что подобная теорема существует и для КС-грамматик.

7. Нотации для задания КС-грамматик

7.1. Математическая нотация


Математическая нотация (которую рассматривали до сих пор) – чисто синтаксическое задание.

7.2. Бекусова нормальная форма


БНФ (Бекусова нормальная форма, или форма Бекуса — Наура) есть способ записи грамматики, который широко используется для описания синтаксиса языков программирования. В БНФ:
    1. Нетерминальные символы записываются как имена, заключенные в угловые скобки < > .
    2. Знак записывается как :: = (читается "заменяется на").
    3. Альтернативы замены, соответствующие одному и тому же нетерминалу в левой части, отделяются друг от друга вертикальной чертой  (читается "или").
    4.  не обозначается, для того чтобы не пропустить эту альтернативу, она обычно записывается первой в конструкции выбора.

Используя БНФ описание идентификатора как произвольной последовательности букв и цифр, начинающейся с буквы, можно, например, записать:

<идентификатор> ::= <буква> | <буква> <продолжение>

<продолжение> ::= < символ> | < символ> <продолжение>

<символ> ::= < буква> | <цифра>

<буква> :: = А | В | С|….| Z

<цифра> ::= 0 | 1 | ... | 9

Или:

<идентификатор> ::= <буква> <продолжение>

<продолжение> ::= | < символ> <продолжение>

<символ> ::= < буква> | <цифра>

<буква> :: = А | В | С|….| Z

<цифра> ::= 0 | 1 | ... | 9

При записи в виде грамматики G12 семантику увидеть сложнее (запись полностью соответствует последнему варианту БНФ):

S  S1 S2 ,

S2  S3 S2  ,

S3  S1 S4 ,

S1  А | В | С| … | Z ,

S4  0 | 1 | ... | 9 .

Нетерминал БНФ может интерпретироваться как язык, который порождается грамматикой, в которой данный символ является начальным символом грамматики. БНФ может использоваться для описания синтаксиса любого языка, не только искусственного, например:

<Существительное > :: =<основа > <окончание>

<окончание > ::= окончание множественного числа окончание единственного числа…

Или:

формула исчисления высказываний::= элементарная формула(формула исчисления высказыванийбинарная операция формула исчисления высказываний) (отрицание формула исчисления высказываний)

элементарная формула::= константа пропозициональная переменная

константа::= 01

пропозициональная переменная ::=ab…z

отрицание::= N

бинарная операция ::= 