Dadas as línguas e , digamos que sua concatenação seja inequívoca se, para todas as palavras , houver exatamente uma decomposição com e e ambígua caso contrário. (Não sei se existe um termo estabelecido para essa propriedade - coisa difícil de procurar!) Como um exemplo trivial, a concatenação de consigo mesma é ambígua ( ), mas a concatenação de consigo mesma é inequívoca.
Existe um algoritmo para decidir se a concatenação de duas linguagens regulares é inequívoca?
Respostas:
Dica: Dado AFDs para e B , construir um AFN que aceita palavras Um B possuindo pelo menos dois diferentes decomposições. O NFA mantém um registo de duas vias de NFA padrão para um B (formada pela junção AFDs para um e B com £ transições), assegurando que a passagem de uma para B acontece em dois pontos diferentes.A B AB AB A B ϵ A B
fonte
Atualizado (graças a Yuval Filmus).
Dado dois idiomas e Y de A ∗ , deixe X - 1 YX Y A∗
eu afirmam queXYé inequívoca se e apenas se o idiomaX-1X∩YY-1∩Uma+está vazia.
Prova . Suponha que seja ambíguo. Em seguida, existe uma palavra de u que tem dois decomposições sobre X Y , dizer u = x 1 y 2 = x 2 y 1 , em que x 1 , x 2 ∈ X e Y 1 , Y 2 ∈ Y . Sem perda de generalidade, podemos assumir que x 1 é um prefixo de x 2 , ou seja, x 2 = xXY u XY u=x1y2=x2y1 x1,x2∈X y1,y2∈Y x1 x2 para alguns z ∈ A + . Segue que u = x 1 y 2 = x 1 z y 1 , de onde y 2 = z y 1 . Assim z ∈ X - 1 X ∩ Y Y - 1 .x2=x1z z∈A+ u=x1y2=x1zy1 y2=zy1 z∈X−1X∩YY−1
Suponha agora que contenha alguma palavra não vazia z . Então existem x 1 , x 2 ∈ X e y 1 , y 2 ∈ Y tal que x 2 = x 1 z e y 2 = z y 1 . Segue que x 2 y 1 = x 1 z y 1 =X−1X∩YY−1 z x1,x2∈X y1,y2∈Y x2=x1z y2=zy1 e, portanto, o produto X Y é ambíguo.x2y1=x1zy1=x1y2 XY
Se e Y são regulares, então X - 1 X e Y Y - 1 são regulares e, portanto, X - 1 X ∩ Y Y - 1 também é regular (consulte a resposta de Yuval para um autômato que aceita esse idioma).X Y X−1X YY−1 X−1X∩YY−1
fonte