Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф-госы теория и практика.doc
Скачиваний:
28
Добавлен:
29.08.2019
Размер:
3.77 Mб
Скачать

18. Понятие формального языка и формальной грамматики

Алфавитом языка будем называть некоторое конечное мн-во символов и обозначать Σ. Число | Σ |= n<∞ - мощность алфавита. Если a,b є Σ => ab є Σ2 , Σn – мн-во цепочек длины n, состоящих из символов алфавита.

Полным транзитивным замыканием алфавита называется => мн-во: Σ*=λ U Σ U Σ2U …, где λ – пустая цепочка,

Σ+= Σ U Σ2 U Σ3 U … - положительное транзитивное замыкание.

Формальным языком или языком будем называть некоторое мн-во L Σ* , т.е. L є Σ*. => Язык – есть некоторое мн-во цепочек составленных из алфавитных символов.

Способ описания я-ка н-ется формальной грамматикой.

Формальная грамматика G(h)=( Σ,N,S,P), где Σ – алфавит языка или мн-во терминальных символов; N – мн-во нетерминальных символов (нетерминалы соответствуют некоторому понятию языка);

S є N – начальный нетерминал или начальное понятие языка (суперпонятие);

P:φ1→φ2 – мн-во порождающих правил, т.е. φ1 порождает φ2 цепочки.

φ12 – цепочки, состоящие как из терминалов, так и из нетерминалов, подцепочку φ1 можно заменить на подцепочку φ2.

Пр. порождающей грамматики

Рассмотрим язык вещественных чисел с фиксированной точкой. Введем нетерминал S-вещественное число с фиксированной точкой, C – целое число (терминал).

S→C S→C|C.C

S→C.C N {S,C}

C→0c (число может начинаться на нуль) C→oC|…|9C|0|…|9

….. Σ={‘0’,…,’9’,’∙’}- терминальные

C→9C порождающие символы

C→o

….

C→9

Конкретное применение порождающих правил называется процессом порождения.

Цель порождения: Получить цепочку, состоящую только из терминалов.

Если конкретную цепочку можно получить в результате применения конкретного числа порождающих правил, то она принадлежит языку, иначе не принадлежит.

Пр. для порождения: Пусть дано 15.318

‘S’→’C.C’→’1C.C’→’15.C’→’15.3C’→’15.31C’→’15.318’

’15.318’ є L – корректно записано

‘153.18’ не є L => дерево порождений этого числа:

S.

C C

1C 3C

5 1C

8

Классификация грамматик языков по Хомскому: => Хомский предложил выделить 4 класса грамматик:

0 класс: грамматика без ограничений (φ1→φ2)

1 класс: контекстно зависимые грамматики, дописываются порождающие файлы только следующего вида:

ω1 A ω2 → ω1 φ ω2, – некоторые цепочки (терминалы и нетерминалы); A- нетерминальный символ.

ω1, ω2 – контекст => ω1 – префикс

ω2 – суффикс контекста φ может быть λ T(n) ~е

2 класс: контекстно-свободные грамматики (T~n)

A → φ (→-порождает), где А – нетерминал; φ – некоторая цепочка, гдн φ≠λ

3 класс: автоматные грамматики А →а, А→аВ, где а – терминал; А,В – нетерминал.

В зависимости от класса зависит задача анализа. Класс языка определяется максимальным классом порождающейся грамматики, с помощью которой можно задавать цепочки данного языка.

Доказано, что все естественные языки относятся к 0 классу, т.е. языки человеческого общения (по Хомскому).

Задача распознавания: Дан некоторый формальный язык L, заданный с помощью порождающей грамматики S(h).

Вход S – цепочка терминальных символов;

На выходе – да (нет), т.е. ответ на ?: є ли цепочка S языку L.

Теорема (о невозможности): Задача распознавания цепочки языков класса 0, алгоритмически неразрешима, т.е. невозможно построить МТ, которая восстанавливалась <=> когда ее входная цепочка є L.

Следствие: Не сущ-ет точных методов анализа естественных языков => Док-но:

1. T~2kn (экспоненциальная) – трудно анализируется, но разрешима

2. T~np – (полиномиальный контекстно-свободный и как правило линейная)

3. T~n (|S|=n) для автоматной грамматики – линейная

На практике в следствии их эффективности как правило применяются автоматные и контекстно-свободные грамматики. К контекстно- свободным языкам относятся все алгоритмические языки, в том числе Паскаль.

Пр.: конечный автомат – средство реализации автоматной грамматики.

Грамматика, в к-ой есть хотя бы один недетерминированный терминал н-ется недетер-ым, в противном случае она н-ется детер-ым.

A→aB|a

B→cC|d

C→a

S→aS|c

Таблица переходов

  • a

    c

    d

    S

    S

    z

    A

    A ,B

    B

    C

    Z

    C

    Z

    тупик

Z – условно конечное состояние

Автомат недетерминирован (в одной ячейке несколько значений). Нетерминал н-ется недетерминированным, если сущ-ет несколько правил, где он стоит в левой части а терминалы в правой части при этом совпадают.

‘aaac’ є L ‘aaa’є L

SSSZ SSSS

‘aad’єL

SSS зашли в тупик, не исчерпав строки.