0

I'm trying to learn how to solve the following exercise. I don't understand how to start, it's overwhelming. I do understand DFA's, NFA's and how to convert DFA's to NFA's. I also understand the formal notations.

This is not a homework exercise, it's just for studying. I do have the solution, but I can't make sense out of it either..

If someone could ELI5 the exercise that would be amazing, examples on solving exercises like these (with proper explanations) would be great too, I have yet to find a similar exercise on the web.

Given:

  • Alphabet Σ

  • A symbol c ∈ Σ

  • Regular language L over Σ

Language L-c = {uv | ucv ∈ L}

Let D = (Q, Σ, , q0, F) be a DFA with ℒ(D)=L.

Show how to construct an NFA N using copies of D such that ℒ(N)=L-c. Provide a formal definition of N.

rici
  • 234,347
  • 28
  • 237
  • 341
SJ19
  • 1,933
  • 6
  • 35
  • 68
  • If you asked this question on [cs.se] or [math.se], either of which would be a better match IMHO, then both you and anyone attempting to answer could use MathJax, which makes life a whole lot easier (for mathematics/CS; not so much for programming). Meanwhile, I de-giffed the text. – rici Nov 28 '17 at 19:59

1 Answers1

2

I am not going to write down the formal definition in detail. Basically you can use two copies of the DFA. In the first one you start, it does not have final states. For every transition from a state p to a state q that reads c, you add a transition not reading anything that goes from p in the first copy to q in the second copy. This way you skip exactly one c. Once you are in the second copy, you know that a c has been skipped and you can accept if the remaining inputleads to an accepting state.

Peter Leupold
  • 1,162
  • 1
  • 9
  • 16