Lecture 20 (Decidable Languages), 4/05/06
Concepts, definitions (in italics):
Reading:
Skills:
Notes:
A language is decidable there exists an algorithm that determines, for any string, whether or not it is in the language.
ADFA
= {(<M>, w) : M is a DFA that accepts w} A
ANFA=
{(<M>, w) : M is a NFA that accepts w}
AREX= {(X,W) : w is a regular expression that generates w}
They are all decidable
1) If this input is not properly formatted we reject
2) Simulate B on w
3) If you end up in a FINAL state, accept; else reject
ANFA-decider would do the following on input (<B>,w)
1) Syntax check, reject if fails
2) C = NFA_DFA_Converter (<B>)
3) return DFA_Simulator (C)
AREX-decider would do the following on input (X,w)
1) Syntax check, reject if fails
2) C = RE_NFA_converter (x)
3) Return A_NFA_decider (C,w)
EDFA
= {<B>:<B> is a valid DFA specification where
L(B) = Ø}
ENFA
= {<B>:<B> is a valid NFA specification where
L(B) = Ø}
EREX
= {X: <B> is a valid Reg.exp specification
where L(X) = Ø}
They are all decidable
The language of a given DFA/NFA/RE is empty if and only if there do not exist any strings accepted (generated) by this DFA/NFA/RE. If there exists any string accepted (generated) by this DFA/NFA/RE, then its language is not empty.
The
algorithm for deciding EDFA relies
on the following fact:
A DFA's language is not empty if and only if there is a path from the
initial state to some final state.
E
DFA-decider (M)1) syntax check, reject if fails
2) M = NFA_DFA_converter (<B>)
3) Return E
E
NFA-decider(M)1) syntax check, reject if fails
2) M = RE_NFA_converter(X)
3) Return E