為下列語言構造NFA,並使用演算法將其轉換為DFA - L = (aa+ (bb*)c*)
解答
上述語言的NFA將是:
從NFA到DFA的轉換:
ε-閉包(0) = {0, 1, 4} = A
對於狀態A
對於輸入符號a | 對於輸入符號b | 對於輸入符號c |
---|---|---|
∴ Ta = {2} | ∴ Tb = {5} | Tc = ∅ |
∴ ε-閉包(Ta) = ε -閉包(2) = {2} = B | ∴ ε-閉包(Tb) = ε -閉包(5) = {5, 6, 8, 9, 11, 12} = C | ∴ ε-閉包(∅) = ∅ = D |
對於狀態B
對於輸入符號a | 對於輸入符號b | 對於輸入符號c |
---|---|---|
∴ Ta = {3} | ∴ Tb = {} | Tc = {} |
∴ ε-閉包(3) = = {3, 12} = E | ∴ ε-閉包(Tb) = { } = ∅ = D | ∴ ε-閉包(Tc) = ∅ = D |
對於狀態C
對於輸入符號a | 對於輸入符號b | 對於輸入符號c |
---|---|---|
∴ Ta = {} | ∴ Tb = {7} | Tc = {10} |
∴ ε-閉包(Ta) = ∅ = D | ∴ ε-閉包(7) = { 7, 8, 6, 9, 11, 12} = F | ∴ ε-閉包(10) = {10, 9, 11, 12} = G |
對於狀態E
∴ Ta = ∅ | ∴ Tb = ∅ | Tc = ∅ |
∴ ε-閉包(Ta) = ∅ = D | ∴ ε-閉包(Tb) = ф = D | ∴ ε-閉包(Tc) = ф = D |
對於狀態F
∴ Ta = ∅ | ∴ Tb = {7} | Tc = {10} |
∴ ε-閉包(Ta) = ∅ = D | ∴ ε-閉包(Tb) = = ε-閉包(7) = {7,8,6,9,12} = F | ∴ ε-閉包(10) = {10, 9, 11, 12} = G |
對於狀態G
∴ Ta = ∅ | ∴ Tb = {7} | Tc = {10} |
∴ ε-閉包(ф) = ф = D | ∴ ε-閉包(ф) = ф = D | ∴ ε-閉包(10) = G |
對於狀態D
D = ∅
Ta = Tb = Tc = ∅
ε-閉包(Ta) = ε-閉包(Tb) = ε-閉包(Tc) = ф = D
DFA的狀態轉換表和圖將是:
(初始狀態)
a | B | c | 這裡 | |
A | B | C | D | A = {0,1,4} |
B | E | D | D | B = {2} |
C | D | F | G | C = {5,6,8,9,11,12} |
D | D | D | D | D = ∅ |
E | D | D | D | E = {3, 12} |
F | D | F | G | F = {7,8,6,9,11,12} |
G | D | D | G | G = {10,9,11,12} |
廣告