DFA NFA 변환, regular 연산의 Formal 표현
Every NFA has equivalent DFA
‘모든 NFA는 equivalent DFA가 존재한다’의 formal한 증명
Proof,LetN=(Q,∑,σ,q0,F)betheNFArecognizingsomelanguageA
이때 A를 인식하는 새로운 DFA M=(Q′,∑,σ′,q′0,F′) 를 정의한다.
- Q′ = P(Q), power set of Q
- ∑ = N의 ∑과 같음
- σ(R,a)′=q∈Q∣q∈E(σ(r,a))forsomer∈RforR∈Q′anda∈∑
- q′0=E(q0)
- F=R∈Q′∣RcontainsanacceptingstateofN
이때 E(R)이란, M의 어떤 state R에 대해서도 ϵ화살표만 따라가서 R의 memeber로 도달할 수 있는 state의 집합이다.
만약 w=0110인 w를 w=01ϵ1ϵ0ϵ처럼 쓸 수 있다.
레귤러 연산의 Formal한 표현
L1∪L2,L1∘L2,L∗1
각각의 L1,L2가 regular이면 연산 후에도 regular이다. 즉, 그것을 Accept하는 NFA/DFA가 존재한다. 그림으로는 다음과 같이 그릴 수 있다.
L1∪L2의 formal한 표현
즉 L1∪L2또한 regular하다. 이를 formal하게 표현해보겠다.
LetN1=(Q1,∑,σ1,q1,F1)recognizeA1and
N2=(Q2,∑,σ2,q2,F2)recognizeA2.
ConstructN=(Q,∑,σ,q,F)
- Q=q0∪Q1∪Q2
- ∑은 모두 같음
- σ=
σ1(q,a),q∈Q1
σ2(q,a),q∈Q2
q1,q2,a=ϵandq=q0
ϕ,a≠ϵandq=q0 - q=q0
- F=F1∪F2
L1∘L2의 formal한 표현
마찬가지로 L1∘L2또한 regular하며 formal하게 표현해보겠다.
LetN1=(Q1,∑,σ1,q1,F1)recognizeA1and
N2=(Q2,∑,σ2,q2,F2)recognizeA2
ConstructN=(Q,∑,σ,q,F)
- Q=Q1∪Q2
- ∑은 같음
- σ=
σ1(q,a),q∈Q1andq∉F1,
σ2(q,a),q∈Q2,
σ1(q,a)∪q2,q∈F1anda=ϵ,
σ1(q,a),q∈F1anda≠ϵ - q=q1
- F=F2
L∗의 formal한 표현
마찬가지로 L∗또한 regular하며 formal하게 표현해보겠다.
LetN1=(Q1,∑,σ1,q1,F1)recognizeA,
ConstructN=(Q,∑,σ,q,F)
- Q=q0∪Q1
- ∑은 같음
- σ=
σ1(q,a),q∈Q1andq∉F1
σ1(q,a)∪q1,q∈F1anda=ϵ
q_1,q =q_0\,and\,a=ϵ
\sigma_1(q,a),q \in F_1\,and\,a \neq \epsilon,
\phi,q=q_0\,and\,a\neq \epsilon - q=q_0
- F={q_0}\cup F_1