Это высокоуровневое описание конструкции, показывающее, что NFA принимает L3.
Пусть M1 и M2 минимальные DFA, такие что L (M1) = L1 и L (M2) = L2 , Скопируйте M1, чтобы было две копии, M1 [1] и M1 [2]. Скопируйте M2, чтобы были | Q1 | копии M2 [1], M2 [2],…, M2 [| Q1 |]. Также нумерация состояний q1, q2,…, q | Q1 | М1. Теперь создайте NFA для M3 следующим образом:
- Из состояния qk M1 [1] добавьте лямбда / эпсилон-переход в начальное состояние M2 [k]
- Из принимая состояние (я) M2 [k], добавьте лямбда / эпсилон-переходы в состояние qk M1 [2]
- Принимающие состояния - это принимающие состояния M1 [2]
- Начальное состояние - это начальное состояние M1 [1].
Этот NFA читает некоторые входные данные, а затем недетерминированно переходит к экземпляру M2. Затем он читает строку в M2 и возвращается к тому месту, на котором остановился в следующей копии M1, где он может принять. Этот NFA имеет число состояний, равное 2 | Q1 | + | Q1 | * | Q2 |.