Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why can't the Kleene closure construction for an NFA be simplified?

Most sources, such as http://www.cs.may.ie/staff/jpower/Courses/Previous/parsing/node5.html, suggest that the Kleene closure be constructed with 4 nodes.

Why can't it be constructed with just 2, as follows?

enter image description here

like image 301
ackerleytng Avatar asked Jan 01 '17 15:01

ackerleytng


1 Answers

In order to get correct results when you concatenate two NFAs, you need to ensure that for both components, either:

  1. There are no transitions out of the end state; or

  2. There are no transitions into the start state.

The normal Thompson's construction ensures both.

Without such restrictions, composition doesn't work. With your construction, for example, the NFA for a*b* also accepts ababab, which is wrong.

like image 128
Matt Timmermans Avatar answered Sep 18 '22 15:09

Matt Timmermans