Регулярная аппроксимация КС-языков — различия между версиями
| Ateuhh (обсуждение | вклад)  (→Сравнение двух методов) | Ateuhh (обсуждение | вклад)   (→Аппроксимации самоприменимой грамматики) | ||
| Строка 91: | Строка 91: | ||
| == Аппроксимации самоприменимой грамматики == | == Аппроксимации самоприменимой грамматики == | ||
| − | В данном разделе покажем методы апроксимации: RTN (recursive transition network) аппроксимацию и MN () аппроксимацию — самоприменимой контекстно-свободной грамматики <tex> G = \langle N, \Sigma, P, S \rangle</tex> к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]].   | + | В данном разделе покажем методы апроксимации: RTN (recursive transition network) аппроксимацию и MN (Mohri and Nederhof's) аппроксимацию — самоприменимой контекстно-свободной грамматики <tex> G = \langle N, \Sigma, P, S \rangle</tex> к регулярной грамматике. Для удобства будем считать, что грамматика представлена в [[Нормальная форма Хомского|НФХ]].   | 
| [[Файл:RTN_Automat.png|280px|thumb|right|Автоматы <tex>T_A,T_B</tex> для грамматики    | [[Файл:RTN_Automat.png|280px|thumb|right|Автоматы <tex>T_A,T_B</tex> для грамматики    | ||
|   <tex>A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f </tex>]]   |   <tex>A \rightarrow aBb \\ A \rightarrow cA \\ B \rightarrow dAe \\ B \rightarrow f </tex>]]   | ||
Версия 11:15, 16 декабря 2016
Содержание
Определения
| Определение: | 
| Контекстно-свободная грамматика называется самоприменимой (англ. self-embeded), если , . | 
| Определение: | 
| Нетерминал в грамматике называется рекурсивным (англ. recursive), если . | 
| Определение: | 
| Нетерминалы в грамматике называются взаимно рекурсивными (англ. mutual recursive), если . | 
Алгоритм преобразования грамматики в конечный автомат
| Лемма: | 
| Не самоприменимая контекстно-свободная грамматика генерирует регулярный язык. | 
| Доказательство: | 
| В качестве конструктивного доказательства, мы приведем алгоритм построения конечного автомата по грамматике. Для желающих, приведем ссылку на формальное доказательство. | 
Идея алгоритма
Пусть, множество рекурсивных терминалов из . Пусть, разбиение на дизъюнктных множеств взаимно рекурсивных терминалов, . Введем функцию :
function IsLeftType() return function IsRightType() return
function getTheTypeOfMutualRecursiveSet (): if !IsLeftType() && IsRightType() return left; if IsLeftType() && !IsRightType() return right; if (IsLeftType() && IsRightType() return self; if !IsLeftType() && !IsRightType() return cyclic;
Заметим, что  , т.к в противном случае грамматика будет самоприменима.
В основе алгоритма будет рекурсивный обход грамматики. Спускаемся по грамматике до тех пор не приходим в нетерминал или символ алфавита:
- символ алфавит или — добавляем новое правило в автомат
- нерекурсивный нетерминал — запускаемся от всех правых частей правил, который терминал порождает
- рекурсивный нетерминал — в зависимости от типа рекурсивного нетерминала, продолжаем рекурсию (будет ясно из пседокода)
Псевдокод
— множество состояний ДКА.
— множество переходов ДКА.
— множество допускающих состояний.
function createFA(G) // s = createState f = createState return makeFA (s,S,f) function makeFA (q0,a,q1) if a == || a // пришли в лист дерева разбора return if a == where q = createState makeFA () makeFA () return if exist where foreach b in = createState if getTheTypeOfMutualRecursiveSet() == left foreach C in where makeFA () foreach C,D in where makeFA () else // рекурсивный нетерминал right или cyclic foreach C in where makeFA () foreach C,D in where makeFA () return foreach p in where p == makeFA ()
Аппроксимации самоприменимой грамматики
В данном разделе покажем методы апроксимации: RTN (recursive transition network) аппроксимацию и MN (Mohri and Nederhof's) аппроксимацию — самоприменимой контекстно-свободной грамматики к регулярной грамматике. Для удобства будем считать, что грамматика представлена в НФХ.
RTN аппроксимация
Построим, по данной грамматике аппроксимирующий ее конечный автомат.
- Для каждого нетерминала в грамматике, создадим новый конечный автомат , добавим в него два состояния и .
- Для каждого правила грамматике , введм новые состояния в автомат этого нетерминала , а также добавим новые правила перехода в : .
- Таким образом мы построили множество конечных автоматов = для каждого нетерминала . Теперь объединим все в один автомат. Объединим все состоянии автоматов из в множество . Скопируем все переходы каждого автомата из в . Далее для каждого перехода вида , вместо него добавим два новых перехода: .
MN аппроксимация
Построим по данной самоприменимой контекстно-свободной грамматике регулярную грамматику .
- Для каждого нетерминала из , добавим нетерминалы и в .
- Для каждого правила , где . Добавим в  нетерминалы  и следуюшие правила: .
 (Если , тогда добавим правило ).
В итоге — правоконтекстная грамматика, эквивалентная конечному автомату, который задает регулярный язык.
Пример
Исходная грамматика  генерирует язык: . Результирущая грамматика  генирирует регулярный язык: . 
Сравнение двух методов
Ясно, что оба языка, генерируемых конечным автомат для первого метода и апрокисимируещей граматикой для второго метода, содержат в себе язык генерируемый исходной грамматикой. 
 
Привлекателным свойством MN аппроксимации по сравнению с RTN, то, что она можеть быть применима к большим грамматикам: для каждого нетерминала грамматике , добавляется не более одного нового нетерминала в  и размер результирующий грамматики максимум в  раза больше, чем размер исходной. Так как для RTN апроксимации грамматики , количество состаяний апроксимируещего автомата в худшем случаи может составлять , что может быть критично для аппроксимации   больших грамматик.
Также,еще несколько эффекивных методов аппрокимации можно найти в статьях, приведенных в ссылках.
Источники информации
- Jean-Claude Junqua,Gertjan van Noord — Robustness in Language and Speech Technology — Kluwer Academic Publishers, 2001 — ISBN 0-7923-6790-1
- Strongly Regular Grammars and Regular Approximation of Contex-Free Languages
- Willem J. M. Levelt — An Introduction to the Theory of Formal Languages and Automata — John Benjamin B.V., 2008 — ISBN 978-90-272-3250-2


