Dados los idiomas y , digamos que su concatenación es inequívoca si para todas las palabras , hay exactamente una descomposición con y , y de lo contrario es ambigua . (No sé si hay un término establecido para esta propiedad, ¡algo difícil de buscar!) Como ejemplo trivial, la concatenación de en sí misma es ambigua ( ), pero la concatenación de consigo misma no es ambigua.
¿Existe algún algoritmo para decidir si la concatenación de dos idiomas regulares es inequívoca?
Respuestas:
Sugerencia: dados los DFA para y B , construya un NFA que acepte palabras en A B que tengan al menos dos descomposiciones diferentes. El NFA realiza un seguimiento de dos copias del NFA estándar para A B (formado uniendo DFA para A y B con transiciones ϵ ), asegurando que el cambio de A a B ocurra en dos puntos diferentes.A B AB AB A B ϵ A B
fuente
Actualizado (gracias a Yuval Filmus).
Dados dos idiomas e Y de A ∗ , dejemos X - 1 YX Y A∗
Yo afirmo queXYno es ambiguo si y solo si el lenguajeX-1X∩YY-1∩A+está vacío.
Suppose now thatX−1X∩YY−1 contains some nonempty word z . Then there exist x1,x2∈X and y1,y2∈Y such that x2=x1z and y2=zy1 . It follows that x2y1=x1zy1=x1y2 and hence the product XY is ambiguous.
IfX and Y are regular, then both X−1X and YY−1 are regular and thus X−1X∩YY−1 is also regular (see Yuval's answer for an automaton accepting this language).
fuente