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

  • XYL
  • XY ,

onde XY={xy | xX,yY} .

(X,Y)(X,Y)(X,Y)XYeuXXYY

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)

Laura
fonte
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)XY=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,YL
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=xXx1L,X=yYLy1,
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ΣLx1LxΣuΣxxuLy1L=x1Lx,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=x1LxN1LabLbΣS1=LbΣ
  • para x em N 2 é a própria linguagem, isto é, S 2 = L eS2=x1LxN2S2=L
  • para x em N 3 é obviamente Σ . Isto é, nós encontramos três fatores direita de L . Como S 2S 1S 3 , a sua fecho -stable é trivialmente S 1 , S 2 , S 3 , e aqueles que são, em seguida, precisamente os factores direita.S3=x1LxN3ΣLS2S1S3S1,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=xSiLx1

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.Ly1yΣxyLy1=Lx1uΣuxLuyL
  • 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.Lx1qAxq
  • 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,YXYLFL

  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)
Cornelius Brand
fonte
3
ABXY