最后一分钟的笔记——计算理论
在此处查看所有主题的最后一分钟注释。
我们将以总结的形式讨论对 GATE 考试有用的重要要点。有关详细信息,您可以参考this。
有限自动机:用于识别特定类型输入的模式。它是最受限制的自动机类型,只能接受正则语言(可以通过正则表达式使用 OR (+)、连接 (.)、Kleene Closure(*) 表示的语言,如 a*b*、(a+b)等等。)
确定性 FA 和非确定性 FA:在确定性 FA 中,每个输入符号上的每个状态只有一次移动,但在非确定性 FA 中,输入符号的一个状态可以有零次或多次移动。
笔记:
- NDFA 和 DFA 接受的语言相同。
- NDFA 和 DFA 的功率相同。
- NDFA 中的状态数小于或等于 no。等效 DFA 中的状态数。
- 对于具有 n 状态的 NFA,在最坏的情况下,DFA 中可能的最大状态为 2 n
- 每个 NFA 都可以转换为相应的 DFA。
正则表达式的身份:
Φ + R = R + Φ = R
Φ * R = R * Φ = Φ
ε * R = R * ε = R
ε* = ε
Φ* = ε
ε + RR* = R*R + ε = R*
(a+b)* = (a* + b*)* = (a* b*)* = (a* + b)* = (a + b*)* = a*(ba*)* = b*(ab*)*
摩尔机:摩尔机是具有输出值的有限状态机,其输出仅取决于当前状态。
Mealy 机器:Mealy 机器也是具有输出值的有限状态机,其输出取决于当前状态和当前输入符号。
下推自动机:下推自动机具有称为堆栈的额外内存,它比有限自动机提供更多功能。它用于识别上下文无关语言。
确定性和非确定性 PDA:在确定性 PDA 中,每个输入符号上的每个状态只有一次移动,但在非确定性 PDA 中,输入符号可以从一种状态移动不止一次。
笔记:
- NPDA 的力量超过了 DPDA。
- 不可能将每个 NPDA 转换为相应的 DPDA。
- DPDA 接受的语言是 NPDA 接受的语言的子集。
- DPDA 接受的语言称为 DCFL(Deterministic Context Free Languages),是 NPDA 接受的 NCFL(Non Deterministic CFL)的子集。
线性绑定自动机:线性绑定自动机具有称为磁带的有限内存量,可用于识别上下文相关语言。
FA < PDA < LBA < TM
图灵机:图灵机具有无限大小的磁带,用于接受递归可枚举语言。
确定性和非确定性图灵机:在确定性图灵机中,每个输入符号上的每个状态只有一次移动,但在非确定性图灵机中,输入符号的一个状态可以有不止一次移动。
笔记:
- NTM、multi-tape TM 和 DTM 接受的语言是相同的。
- NTM、Multi-Tape TM 和 DTM 的功率相同。
- 每个 NTM 都可以转换为相应的 DTM。
乔姆斯基语言分类:
Grammar Type | Production Rules | Language Accepted | Automata | Closed Under |
Type-3 (Regular Grammar) | A→a or A→aB where A,B ∈ N(non terminal) and a∈T(Terminal) | Regular | Finite Automata | Union, Intersection, Complementation, Concatenation, Kleene Closure |
Type-2 (Context Free Grammar) | A→ρ where A ∈ N and ρ ∈ (T∪N)* | Context Free | Push Down Automata | Union, Concatenation, Kleene Closure |
Type-1 (Context Sensitive Grammar) | α→β where α, β∈ (T∪N)* and len(α) <= len(β) and α should contain atleast 1 non terminal. | Context Sensitive | Linear Bound Automata | Union, Intersection, Complementation, Concatenation, Kleene Closure |
Type-0 (Recursive Enumerable) | α →β where α, β ∈ (T∪N)* and α contains atleast 1 non-terminal | Recursive Enumerable | Turing Machine | Union, Intersection, Concatenation, Kleene Closure |
它们之间的关系可以表示为:
可判定和不可判定的问题:
如果可以构造一个图灵机,它接受作为语言一部分的字符串并拒绝其他字符串,则该语言是可判定的或递归的。例如;一个数是否是素数是一个可判定的问题。
如果可以构造一个图灵机来接受属于语言的字符串,并且对于不属于语言的字符串,它可能会永远循环,那么该语言就是半可判定或递归可枚举的。
如果我们不能构建一个可以给出是或否答案的算法和图灵机,那么问题就无法确定。例如; CFG 是否模棱两可是无法确定的。
可数性: