什么时候两种常规语言的连接才是明确的?


16

由于语言的,让我们说,他们的级联明确的,如果所有的单词w ^ ,恰好有一个分解w ^ = b一个b ,和暧昧否则。(我不知道该属性是否存在一个确定的术语,这很难搜索!)作为一个简单的示例,{ ε a }与自身的串联是不明确的(w = aABABwABw=abaAbB{ε,a}),但的级联 { 一个 }与本身是明确的。w=a=εa=aε{a}

是否有一种算法来确定两种常规语言的连接是否明确?


1
Gah,这完全是新生CS问题,不是吗?老实说,我没有做太多尝试。我希望在文献中的某个地方有针对此的既定算法,而不必重新发明轮子。我在这里写软件。我(几年前)只参加了几门CS课程,所以我基本上是从Wikipedia开始的。我知道没有人会喜欢不想为他们的答案而工作的人,因此,如果有教科书或论文或您可以指给我的东西,而不仅仅是给我一个算法,那将是有帮助的!谢谢!
rstern

我将其添加为评论是因为,虽然它的主题相对不恰当,但也许可以为您提供一些帮助。Unicode联盟有一些确定语言之间通用性的过程。我已经在他们的网站上阅读了一个非常有用的链接,但是对于我自己的一生,今天找不到它可以代替此答案。如果您有时间进行研究,请访问FAQ页面unicode.org/faq
htm11h 2015年

Answers:


10

提示:给定B的 DFA ,请构造一个NFA,该NFA接受具有至少两个不同分解的A B中的单词。NFA跟踪A B的标准NFA的两个副本(通过将AB的 DFA 通过ϵ过渡加入)形成,以确保从AB的切换发生在两个不同的点。ABABABABϵAB


感谢您的提示!因此,据我所知,我可以为歧义词构造一个NFA ,然后测试该自动机是否为空。棘手的部分似乎是“确保从AB的切换发生在两个不同的点”。我不知道怎么做,除了服用两个交叉产品(?)的DFA和删除所有(的一个末端,一个末端)产品状态-我handwaving,我很担心从过渡 NFA到 DFA将与的想法螺杆ABABABAAABABA-终奌站。听起来,嗯,效率低下;是否有适用于软件的已知算法?
rstern

是的,虽然总可以选择以一种聪明的方式来做,但这听起来并不太有效。我不知道针对此问题的任何特定算法,但是可能存在。
Yuval Filmus 2015年

7

更新(感谢Yuval Filmus)。

鉴于两种语言Ÿ一个*,让 X - 1 ÿXYA 我声称Xý是明确的,当且仅如果语言X-1Xýý-1+是空的。

X1Y={uAthere exists xX such that xuY}YX1={uAthere exists xX such that uxY}
XYX1XYY1A+

XYuXYu=x1y2=x2y1x1,x2X and y1,y2Y. Without loss of generality, we may assume that x1 is a prefix of x2, that is, x2=x1zzA+u=x1y2=x1zy1y2=zy1zX1XYY1

X1XYY1 contains some nonempty word z. Then there exist x1,x2X and y1,y2Y such that x2=x1z and y2=zy1. It follows that x2y1=x1zy1=x1y2 and hence the product XY is ambiguous.

If X and Y are regular, then both X1X and YY1 are regular and thus X1XYY1 is also regular (see Yuval's answer for an automaton accepting this language).


What if z is the empty word?
Yuval Filmus

Ooops. I update.
J.-E. Pin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.