确定性下推自动机:理论、证明与应用
1. 引言
在形式语言和自动机理论中,确定性下推自动机(Deterministic Pushdown Automata,DPDA)是一种重要的计算模型。本文将围绕特定语言 (L = {a^m b^n c^p | m \neq n \land m,n,p > 0}) 的确定性下推自动机展开讨论,包括状态不变谓词的编写、正确性证明,以及对上下文无关语言是否都为确定性的探讨。
2. 状态不变谓词
状态不变谓词用于描述在计算过程中,输入和栈的某些属性始终保持不变。对于语言 (L = {a^m b^n c^p | m \neq n \land m,n,p > 0}),定义了多个状态不变谓词,如 (G - INV) 和 (F - INV)。
以下是 (G - INV) 的代码实现:
;; word stack →Boolean
(define (G-INV ci s)
(let* [(ci-as (takef ci (λ (r) (eq? r 'a))))
(i (length ci-as))
(ci-bs (takef (drop ci (length ci-as)) (λ (r) (eq? r 'b))))
(j (length ci-bs))
(ci-cs (takef (drop ci (+ (length ci-as) (length ci-bs)))
(λ (r) (eq? r 'c))))
超级会员免费看
订阅专栏 解锁全文
11

被折叠的 条评论
为什么被折叠?



