为以下语言构建一个 PDA

construct a PDA for the following language

我正在研究自动机,我遇到了与 PDA 有关的问题

为语言 L = { 构造一个 PDA w = x1y1x2y2….xnyn |其中 w 属于 {0,1}*,字符串 y1y2….yn 与 x1x2….xn 相同,除了 y 中的 1 在 0 之后} 例如,字符串 100111 属于 L,因为 x=101 且 y=011。所以 执行字符串 0011、00、1111、100001 等。但是,字符串 0110、11111001、1100、01、10 不 属于 L。为简单起见,在 PDA 的构造中假设输入由符号对组成 其中第一个属于 x,第二个属于 y。因此输入字母表是 Σ = {00, 01, 10, 11}.

我意识到我必须 push/pop 从堆栈中以一种方式保证 x 中的相同输入出现在 y 中,其中 0 在 1 之前出现,但问题是如何检查 y 中的 0在 1 之前。非常感谢提示解决方案

提示 1:由于字符串是 xyxyxy... 形式的字符串,您总是会在 x 部分遇到 1,然后在 y 部分遇到 1,即使x 和 y 部分相同。

提示 2:您正在将 x 部分中的 1 与 y 部分中的 1 进行匹配。在 x 中推送 1s,在 y 中弹出 1s。

提示3:一弹就停不下来。 (即,提示 #2 本身是不够的,考虑像 100100 这样的字符串。)