Изменения

Перейти к: навигация, поиск

Контексты и синтаксические моноиды

119 байт добавлено, 01:04, 27 ноября 2014
Свойства
Пусть язык <tex>L</tex> распознается [[Детерминированные конечные автоматы|ДКА]] <tex>\mathcal{A} = \langle \Sigma,Q,s,T,\delta \rangle</tex>. Тогда размер его синтаксического моноида <tex>M(L)</tex> не превосходит <tex>|Q|^{|Q|}</tex>.
|proof=
Пронумеруем состояния нашего автомата, а также введём Введём на <tex>\Sigma^*</tex> строках следующее отношение эквивалентности:
<br/><tex>x \cong y \Leftrightarrow \forall q \in Q: q \cdot x = q \cdot y</tex>
<br/>Оценим количество классов, на которые отношение <tex>\cong</tex> разбивает язык <tex>L</tex>. Для этого пронумеруем состояния, и каждому слову <tex> \omega</tex> сопоставим вектор <tex> a_{\omega} \in Q^{|Q|} </tex> такой, что <tex> a_{\omega}[i] = q_j \Leftrightarrow q_i \cdot \omega = q_j </tex>. Количество различных таких векторов {{---}} <tex> {|Q|}^{|Q|} </tex><!--- (поскольку <tex> \forall i = 1..|Q| :\ a[i] = 1..|Q| </tex>) --->. В то же время неэквивалентным словам соответствуют разные <tex> a </tex>, тогда количество классов эквивалентности также ограничено <tex> {|Q|}^{|Q|} </tex>.
Остаётся показать, что существует взаимно-однозначное соответствие между нашими классами эквивалентности и синтаксическими моноидами. Смотрим:
<br><tex> x \cong y </tex>
<br><tex> \Leftrightarrow </tex>
<br><tex> s \cdot (uxv) = ((s \cdot u) \cdot x) \cdot v = ((s \cdot u) \cdot y) \cdot v = s \cdot (uyv) </tex>(<tex> s \cdot u </tex> равно <tex> q </tex> из определения <tex> \cong </tex>, тогда <tex> (s \cdot u) \cdot x = (s \cdot u) \cdot y </tex>)
<br><tex> \Leftrightarrow </tex>
<br><tex> s \cdot (uxv) \in T \Leftrightarrow s \cdot (uyv) \in T </tex>
308
правок

Навигация