Encontrar fatoração máxima de idiomas regulares


13

Vamos linguagem L⊆Σ∗ ser regular.

Uma fatoração de L é um par máximo (X,Y) de conjuntos de palavras com

  • X⋅Y⊆L
  • X≠∅≠Y ,

onde X⋅Y={xy | x∈X,y∈Y} .

(X,Y)(X′,Y′)≠(X,Y)X′⋅Y′⊆euX⊈X′Y⊈Y′

Existe um procedimento simples para descobrir quais pares são máximos?

Exemplo:

Seja . O conjunto é calculado:eu=Σ∗umabΣ∗F={você,v,W}

  • você=(Σ∗,Σ∗umabΣ∗)

  • v=(Σ∗aΣ∗,Σ∗bΣ∗)

  • w=(Σ∗abΣ∗,Σ∗)

onde .Σ={a,b}

Outro exemplo:

L = Σ * um Σ F = { q , r , s , t }Σ={a,b} e Conjunto de fatoração comL=Σ∗aΣF={q,r,s,t}

  • q=(Σ∗,L)

  • r=(Σ∗a,Σ+L)

  • s=(Σ∗aa,ϵ+Σ+L)

  • t=(L,ϵ+L)


4
Eu recomendo a leitura do seguinte artigo (especialmente a subseção 4.1) de Jacques Sakarovitch: perso.telecom-paristech.fr/~jsaka/PUB/Files/TUA.pdf
— Cornelius Brand

1
Gostaria de saber se você pode ser mais específico sobre o problema, ou seja, a última frase da sua pergunta? Recebemos e queremos testar se é máximo? Nossa tarefa é enumerar todos que são máximos? Neste último caso, fica claro que essa lista é de tamanho finito ou polinomial? Provavelmente não faz sentido solicitar um algoritmo para enumerar todas as possibilidades se houver exponencialmente muitas delas. Além disso, você deseja especificar como o idiomaX,Y(X,Y)(X,Y)L é representado quando nos é apresentado e como X,Y são representados? (por exemplo, DFA, NFA, regexp)
— DW

2
Eu não entendo seus exemplos. São suposto ser todos os pares máximas? v parece não ser válido ...u,v,wv
— Raphael

1
O exemplo é retirado do artigo mencionado acima. deveriam ser pares máximos. Eu também não entendo como v é calculado, uma vez que parece não ser necessariamente em L . Vou postar outro exemplo. u,v,wvL
— Laura

1
@ Rafael, parece-me que é válido. Deixando X = Σ * um Σ * , Y = Σ * b Σ * , ( X , Y ) é um fatoração, desde que X ⋅ Y = G (considerar qualquer cadeia que contém um um , então qualquer sequência de um 's e / ou b , então eventualmente a b : essa string deve ter algum ponto onde o primeiro b aparece, de modo que é um ponto em que contém umvX=Σ∗aΣ∗Y=Σ∗bΣ∗(X,Y)X⋅Y=Laabbb ) Eu não tenho uma prova de que é máxima, mas não consigo encontrar qualquer maior conjuntos X ' , Y ' que são uma fatoração de L . abX′,Y′L
— DW

Respostas:


8

Conforme sugerido nos comentários da pergunta, tentarei dar uma resposta (infelizmente parcial) à pergunta, pelo menos na medida em que eu mesmo entendi o problema (isso implica que você poderá encontrar erros e se encontrar Para explicar de maneira mais rápida ou clara um dos pontos abaixo, fique à vontade para editar a resposta de acordo):

Primeiro, deve-se notar que, na verdade, não precisamos calcular o autômato universal de uma linguagem se queremos calcular as fatorações de uma linguagem.

A partir do papel mencionado no meu comentário ¹, há uma correspondência 1-1 entre fatores esquerdo e direito de uma linguagem regular, isto é, dado um fator esquerdo da língua, o fator de direito correspondente é determinado e vice-versa exclusivamente. Mais precisamente, nós temos o seguidor:

Deixe que ser um fatoração de L . Então Y = ⋂ x ∈ X x - 1 L , X = ⋂ y ∈ Y L y - 1 , ou seja, qualquer fator esquerdo é uma interseção dos quocientes direitos e qualquer fator direito é uma interseção dos quocientes esquerdos. Por outro lado, qualquer intersecção de quocientes esquerda de L é um fator direito de L , e qualquer intersecção de quocientes direito de L é um fator esquerda de L .(X,Y)L

Y=⋂x∈Xx−1L,X=⋂y∈YLy−1,
LLLL

Observe que, para um idioma comum, existe apenas um conjunto finito de quocientes esquerdo e direito e, portanto, o problema se reduz ao cálculo dos quocientes esquerdo e direito de um idioma e, em seguida, calcula seu fechamento -estável, ou seja, um mínimo superconjunto dos quocientes que são fechados sob interseção. Estes são, então, precisamente os fatores direita e fatores de esquerda, e, em seguida, geralmente é fácil ver quais pares são subconjuntos de L .∩L

Exemplo

Para ilustrar os pontos acima, considere o primeiro exemplo da pergunta (do qual também acho incorreto no artigo):

Vamos . Agora, os quocientes esquerda de L são os conjuntos x - 1 L para x ∈ Σ * , isto é, aquelas palavras u em Σ * que podem ser prefixados com x , ou seja, x u ∈ L . Quando y - 1 L = x - 1 L para x distinto , y ? Este é o caso se e somente se xL=Σ∗abΣ∗Lx−1Lx∈Σ∗uΣ∗xxu∈Ly−1L=x−1Lx,yxe pode ser aumentado para palavras em L com exatamente os mesmos sufixos. Isso significa que, para colocá-lo em termos mais familiares, eles são equivalentes ao Nerode e os sufixos necessários para anexar às palavras em uma classe Nerode são precisamente os respectivos quocientes à esquerda.yL

Para , vemos que nossas classes de equivalência Nerode sãoL

  • , o conjunto de palavras que não contêm a b como fator e terminam em a , N1aba
  • , o conjunto de palavras que termina com be não contém a b como fator e N2bab
  • , o conjunto de palavras que contêm a b como fator, ou seja, N 3 = LN3abN3=L

Eles podem ser aumentados com os seguintes conjuntos (ou seja, esses são os quocientes à esquerda das palavras nas respectivas classes):

  • para x em N 1 consiste em todas as palavras em L (qualquer palavra pode ser aumentada com uma palavra que contenha a b como fator e assim se torne uma palavra em L ) e b Σ ∗ , que é S 1 = L ∪ b Σ ∗S1=x−1LxN1LabLbΣ∗S1=L∪bΣ∗
  • para x em N 2 é a própria linguagem, isto é, S 2 = L eS2=x−1LxN2S2=L
  • para x em N 3 é obviamente Σ ∗ . Isto é, nós encontramos três fatores direita de L . Como S 2 ⊂ S 1 ⊂ S 3 , a sua ∩ fecho -stable é trivialmente S 1 , S 2 , S 3 , e aqueles que são, em seguida, precisamente os factores direita.S3=x−1LxN3Σ∗LS2⊂S1⊂S3∩S1,S2,S3

Portanto, nosso conjunto de fatoração é da forma ( P 1 , S 1 ) , ( P 2 , S 2 ) , ( P 3 , S 3 ) .FL(P1,S1),(P2,S2),(P3,S3)

Agora, para os fatores esquerdos , usamos as equações do início desta resposta:Pi

.

Pi=⋂x∈SiLx−1

Para , este rendimentos G ∪ Σ * um , para P 2 obtemos Σ * e para P 3 , obtém-se L . Você pode ver isso inspecionando (a desculpa mais popular por ser muito preguiçoso para apresentar uma prova formal) ou calculando explicitamente os quocientes certos (o que é bastante análogo, embora não completamente, ao cálculo dos quocientes esquerdos). Nossas fatorações são assim dadas por F L = u , v , w ondeP1L∪Σ∗aP2Σ∗P3LFL=u,v,w

  • u=(P1,S1)=(Σ∗abΣ∗∪Σ∗a,Σ∗abΣ∗∪bΣ∗)
  • ev=(P2,S2)=(Σ∗,Σ∗abΣ∗)
  • w=(P3,S3)=(Σ∗abΣ∗,Σ∗)

Sumário

Para resumir (como você estava solicitando um procedimento simples):

  • Para computar os fatorações de uma linguagem , em primeiro lugar calcular os quocientes esquerda de L .LL
  • Você pode fazer isso, no idioma do artigo, construindo um DFA mínimo para L e, em seguida, para cada estado q em A (correspondente, como uma classe de equivalência de Nerode, a um quociente esquerdo), calcule o futuro de q em A , obtendo assim um quociente esquerdo do idioma para cada estado.ALqAqA
  • A recolha de quocientes deixadas obtidos deste modo os rendimentos, em geral, um subconjunto dos factores direita.SR
  • Computação, em seguida, o fecho -stable de S R , que pode ser feito na prática pela formação da intersecção de qualquer subconjunto de S R e adicionando qualquer subconjunto obtido desta maneira para S R .∩SRSRSR
  • O conjunto em conjunto com todas as intersecções da etapa anterior é, em seguida, o conjunto de factores de certas L .SRL
  • A fim de obter os fatores de esquerda, podemos calcular os quocientes direito de .L
  • Estes são os conjuntos de forma , para y ∈ Σ * . Agora, estes são novamente apenas finitamente muitos, e para x ≠ y , temos L y - 1 = L x - 1 se e somente se para todos u ∈ Σ ∗ , u x ∈ L ⇔ u y ∈ L , são eles pode ser prefixado para palavras no idioma com exatamente o mesmo conjunto de strings.Ly−1y∈Σ∗x≠yLy−1=Lx−1u∈Σ∗ux∈L⇔uy∈L
  • Para calcular , considere os estados q em A de modo que x esteja contido no futuro de q . A união do passado desses estados constitui um quociente correto. Encontre todos esses quocientes.Lx−1qAxq
  • Você sabe que terminou quando encontrou tantos fatores à esquerda quanto os fatores certos.
  • Encontrar os pares de factores direita para a esquerda e de tal modo que X ⋅ Y ⊆ L . Este é F G .X,YX⋅Y⊆LFL

  1. O Autômato Universal de Lombardia e Sakarovitch (em Textos em Lógica e Jogos, Vol. 2: Lógica e Automata: História e Perspectivas , 2007)

3
A⊆BXY
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.