Дан регулярный язык L, описанный выражением '(ab|a)*b' — постройте эквивалентный детерминированный конечный автомат (DFA) на словесном уровне и объясните, как вы проверяете членство слова в L

18 Ноя в 10:22
2 +1
0
Ответы
1
Регулярное выражение: (ab∣a)∗b (ab|a)^* b (aba)b.
DFA (словесно и формально):
- Множество состояний: Q={q0,q1,q2,q3,qd}Q=\{q_0,q_1,q_2,q_3,q_d\}Q={q0 ,q1 ,q2 ,q3 ,qd }.
- Начальное состояние: q0q_0q0 .
- Допускающие состояния: F={q2,q3}F=\{q_2,q_3\}F={q2 ,q3 }.
- Интуитивный смысл состояний:
- q0q_0q0 — на границе токенов (старт или сразу после целого блока), нет незавершённого «a».
- q1q_1q1 — прочитана «a», она может быть либо отдельным блоком «a», либо началом блока «ab».
- q2q_2q2 — текущее слово может быть уже принятым (существует разбор, где финальный bbb уже прочитан), но возможны дальнейшие корректные продолжения (то есть одновременно возможны варианты «ещё в цикле» и «уже закончено»).
- q3q_3q3 — слово точно заканчивается на финальный bbb и дальнейшее чтение приведёт к провалу (финальный bbb однозначно использован).
- qdq_dqd — мёртвое состояние (невозможный префикс).
- Функция переходов (неполный список — остальные очевидны, переходы из qdq_dqd в qdq_dqd ):
- δ(q0,a)=q1\delta(q_0,a)=q_1δ(q0 ,a)=q1 , δ(q0,b)=q3\delta(q_0,b)=q_3δ(q0 ,b)=q3 .
- δ(q1,a)=q1\delta(q_1,a)=q_1δ(q1 ,a)=q1 , δ(q1,b)=q2\delta(q_1,b)=q_2δ(q1 ,b)=q2 .
- δ(q2,a)=q1\delta(q_2,a)=q_1δ(q2 ,a)=q1 , δ(q2,b)=q3\delta(q_2,b)=q_3δ(q2 ,b)=q3 .
- δ(q3,a)=qd\delta(q_3,a)=q_dδ(q3 ,a)=qd , δ(q3,b)=qd\delta(q_3,b)=q_dδ(q3 ,b)=qd .
- δ(qd,a)=qd\delta(q_d,a)=q_dδ(qd ,a)=qd , δ(qd,b)=qd\delta(q_d,b)=q_dδ(qd ,b)=qd .
Как проверять членство слова w в LLL:
1. Положить текущее состояние =q0=q_0=q0 .
2. Последовательно для каждой буквы ccc из www переходить в состояние δ(текущее,c)\delta(\text{текущее},c)δ(текущее,c).
3. После обработки всех символов: если текущее состояние принадлежит F={q2,q3}F=\{q_2,q_3\}F={q2 ,q3 }, то w∈Lw\in LwL, иначе w∉Lw\notin Lw/L.
Короткие примеры:
- "b""b""b": q0→bq3q_0 \xrightarrow{b} q_3q0 b q3 — принимается.
- "ab""ab""ab": q0→aq1→bq2q_0 \xrightarrow{a} q_1 \xrightarrow{b} q_2q0 a q1 b q2 — принимается.
- "bb""bb""bb": q0→bq3→bqdq_0 \xrightarrow{b} q_3 \xrightarrow{b} q_dq0 b q3 b qd — не принимается.
- "abb""abb""abb": q0→aq1→bq2→bq3q_0 \xrightarrow{a} q_1 \xrightarrow{b} q_2 \xrightarrow{b} q_3q0 a q1 b q2 b q3 — принимается.
18 Ноя в 11:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир