50 likes | 173 Views
{<B,w> | DFA B accepts string w}. M Adfa. accept. B. accept. <B,w>. S. w. reject. reject. S simulates B with input w M Adfa halts because simulation only runs |w| steps. {<N,y> | NFA N accepts string y}. M Anfa. <N,y>. accept. C. <P,y>. accept. M Adfa. reject. reject.
E N D
{<B,w> | DFA B accepts string w} MAdfa accept B accept <B,w> S w reject reject • S simulates B with input w • MAdfa halts because simulation only runs |w| steps
{<N,y> | NFA N accepts string y} MAnfa <N,y> accept C <P,y> accept MAdfa reject reject • C converts NFA N to DFA P (known algorithm) • MAnfa halts because C and MAdfa are decidable and are run a finite number of times (once each, actually)
{<A> | A is a DFA, L(A) = { } } MEdfa <A> accept < q > accept GM Z reject reject • GM (graph marker) marks all accepts states reachable from init state and produces that list as < q > • Z accepts if input is empty; otherwise rejects • MEdfa halts because GM, Z are decidable and are run a finite number of times (once each)
{<A,B> | DFAs A & B, L(A)=L(B)} MEQdfa <A,B> accept < C > accept SD MEdfa reject reject • SD creates the DFA C as symmetric difference of L(A), L(B) • MEQdfa halts because SD, MEdfa are decidable and are run a finite number of times (once each)
{<M,w> | TM M accepts string w} MU <M,w> accept accept S reject reject • S simulates M on input w • MU doesn’t always halt because M could loop forever on w • But, problem is even worse than that: some problems can’t even be encoded using our formal system