Пусть язык L ⊆ Σ ∗
Факторизация L
- X ⋅ Y ⊆ L
X⋅Y⊆L - X ≠ ∅ ≠ Y
X≠∅≠Y ,
где X ⋅ Y = { x y
Есть ли простая процедура, чтобы узнать, какие пары максимальны?
Пример:
Пусть L = Σ ∗ a b Σ ∗
u = ( Σ ∗ , Σ ∗ a b Σ ∗ )
u=(Σ∗,Σ∗abΣ∗) v = ( Σ ∗ a Σ ∗ , Σ ∗ b Σ ∗ )
v=(Σ∗aΣ∗,Σ∗bΣ∗) w = ( Σ ∗ a b Σ ∗ , Σ ∗ )
w=(Σ∗abΣ∗,Σ∗)
где Σ = { a , b }
Другой пример:
Σ = { a , b } L = Σ ∗ a Σ F = { q , r , s , t }
q = ( Σ ∗ , L )
q=(Σ∗,L) r = ( Σ ∗ a , Σ + L )
r=(Σ∗a,Σ+L) s = ( Σ ∗ a a , ϵ + Σ + L )
s=(Σ∗aa,ϵ+Σ+L) t = ( L , ϵ + L )
t=(L,ϵ+L)
Ответы:
Как предлагается в комментариях к вопросу, я постараюсь дать (к сожалению, частичный) ответ на вопрос, по крайней мере, в той степени, в которой я сам понял проблему (это подразумевает, что вы вполне можете найти ошибки, и если вы найдете способ более кратко или ясно объяснить один из следующих пунктов, не стесняйтесь редактировать ответ соответственно):
Во-первых, следует отметить, что на самом деле нам не нужно вычислять универсальный автомат языка, если мы хотим вычислить факторизации языка.
Из статьи, упомянутой в моем комментарии ¹, есть соответствие 1-1 между левым и правым факторами обычного языка, то есть, учитывая левый фактор языка, соответствующий правый фактор определяется однозначно, и наоборот. Точнее, имеем следующее:
Пусть ( X , Y ) является факторизация L . Тогда Y = ⋂ x ∈ X x - 1 L , X = ⋂ y ∈ Y L y - 1 , то есть любой левый фактор является пересечением правых отношений, а любой правый фактор - пересечением левых отношений. И наоборот, любое пересечение левых частного L является правым фактором L , и любое пересечение правого частного L является левым фактором L .(X,Y) L
Обратите внимание, что для обычного языка существует только конечный набор левого и правого факторов, и, следовательно, или проблема сводится к вычислению левого и правого факторов языка, а затем к вычислению их ∩- стабильного замыкания, то есть минимального надмножество частных, замкнутое при пересечении. Они тогда точно правые и левые факторы факторы, а затем, как правило , легко увидеть , какие пары являются подмножества L .∩ L
пример
Чтобы проиллюстрировать вышеуказанные моменты, рассмотрим первый пример в вопросе (о котором я также думаю, что он неверен в статье):
Пусть L = Σ ∗ a b Σ ∗ . Теперь, левый факторгруппы L являются множества х - 1 л для х ∈ Е * , то есть те слова U в Е * , что может быть с префиксом х , т.е. х у ∈ L . Когда y - 1 L = x - 1 L для различных x , y ? Это имеет место тогда и только тогда, когда хL=Σ∗abΣ∗ L x−1L x∈Σ∗ u Σ∗ x xu∈L y−1L=x−1L x,y x и y можно дополнить словами в L с точно такими же суффиксами. Это означает, что, если говорить более привычно, они эквивалентны Nerode, а суффиксы, необходимые для добавления слов в класс Nerode, являются именно соответствующими левыми частными.y L
Для L мы видим, что наши классы Nerode-эквивалентностиL
Они могут быть дополнены следующими наборами (то есть, это левые коэффициенты слов в соответствующих классах):
Следовательно, наш набор факторизации F L имеет вид ( P 1 , S 1 ) , ( P 2 , S 2 ) , ( P 3 , S 3 ) .FL (P1,S1),(P2,S2),(P3,S3)
Теперь для левых факторов P i используем уравнения начала этого ответа:Pi
P i = ⋂ x ∈ S i L x - 1 .
Для Р 1 , это дает L ∪ Е * , для P 2 мы получаем Е * и P 3 , получаем L . Вы можете убедиться в этом по проверке (наиболее популярное оправдание за то, что слишком ленив, чтобы сформулировать формальное доказательство) или по явному вычислению правильных отношений (что довольно аналогично, хотя и не полностью, вычислению левых отношений). Таким образом, наши факторизации определяются как F L = u , v , w, гдеP1 L∪Σ∗a P2 Σ∗ P3 L FL=u,v,w
Резюме
Подводя итог (как вы просили для простой процедуры):
источник