Вы можете использовать следующие простые шаги для создания комбинированного DFA.
Пусть Σ = {a1 , a2 , ...,ak .
1-й шаг: спроектируйте DFA для обоих языков и назовите их состояние Q0, Q1, ...
2-й шаг: переименуйте каждое состояние в обоих DFA уникальным образом, т. е. переименуйте все состояния в DFA как Q0, Q1, Q2< /sub>, Q3 , ... при условии, что вы начали с нижнего индекса 0; это означает, что ни один из штатов не будет иметь такое же название.
3-й шаг. Создайте таблицу переходов (δ), выполнив следующие действия.
3a. Начальное состояние комбинированного DFA:
Возьмите начальное состояние обоих DFA (DFA1 и DFA2) и назовите их как Q[ i , j ] где i и j — нижний индекс начального состояния DFA1 и DFA2 соответственно; т. е. Qi — это начальное состояние 1-го DFA, а Qj — начальное состояние 2-го DFA и пометить Q[i , j] как начальное состояние. комбинированного ДФА.
3b. Сопоставить состояние обоих DFA как
если δ(Qi,ak) = Qp1 sub> и δ(Qj,ak) = Qp2 , где Qp1 принадлежит DFA1 и Qp2 принадлежит DFA2, тогда δ(Q[ i , j ] , ak) = Q[p1,p2]< /под>
3с. заполнить всю таблицу, пока в таблице переходов остается Q[i,j].
3D. Окончательное состояние комбинированного DFA:
Для случая AND
окончательным состоянием будут все Q[i , j], где Qi и Qj > являются окончательным состоянием DFA1 и DFA2 соответственно.
Для случая OR
окончательным состоянием будут все Q[i , j], где либо Qi, либо Qj — конечное состояние DFA1 и DFA2.
4-й шаг: переименуйте все Q[i, j] (уникально) и нарисуйте DFA, это будет ваш результат.
Пример:
L= {w: w has at least two a's and an odd number of b's}.
Шаг 1.
DFA для нечетного числа букв b .
DFA не менее чем для 2 а.
Шаг 2.
Переименуйте область DFA1
Шаг 3(a,b,c):
Построенная таблица переходов будет такой.
Шаг 3d:
Поскольку мы должны взять И для обоих DFA, поэтому конечное состояние будет Q[2,4] , так как оно содержит конечное состояние оба DFA .
Если нам нужно использовать ИЛИ обоих DFA, конечное состояние будет Q[0,4],Q[2,3 ],Q[1,4],Q[2,4] .
Таблица переходов хотела бы это после добавления окончательного состояние .
Шаг 4.
Переименуйте все состояния Q[i,j]
Q[0,3] в Q >0
от Q[1,3] до Q2
Q[0,4] до Q1
Q[2,3] до Q4
Q[1,4] в Q3
Q[2,4] в Q5
Таким образом, окончательный DFA будет выглядеть так, как показано ниже.
person
sonus21
schedule
04.12.2014