Ваш NFA соответствует тому же языку, что и (a*|b*)*
, поэтому ответ правильный.
Однако есть много NFA, которые соответствуют одному и тому же языку, и в вашем случае можно было бы удалить как минимум три эпсилон-стрелки. Тем не менее, это не будет более правильным, чем ваше предложение.
Регулярное выражение (a*|b*)*
также может быть упрощено без изменения семантики. Например. (a|b)*
эквивалентно (a*|b*)*
. И если вы думаете об этом, FA может быть так просто, как это: