SlideShare uma empresa Scribd logo
1 de 31
Chương 3:    Automata hữu hạn &
             Biểu thức chính quy

 Nội dung:
   • Khái niệm DFA & NFA
   • Sự tương đương giữa DFA & NFA
   • Biểu thức chính quy
   • Các tính chất của tập chính quy


                                       1
Phân loại FA

                            DFA
                        Deterministic
                       Finite Automata
      FA
(Finite Automata)
                            NFA
                       Nondeterministic
                       Finite Automata

  Biểu thức
  chính quy
                                          2
Automata hữu hạn đơn định (DFA)
    Ví dụ:
                                                        0 1 1 0 0 1 0 1
                              c
                                                Input
                          1
     Start
                 q0                1   q1

                      0                 0               Bộ điều khiển
    a                                       b
                                                        Trạng thái bắt đầu
                                  0
             0            1

                 q2                    q3
                                                        Trạng thái kết thúc
                                  1
                              d                  x
                                                        Phép chuyển trên nhãn x

                                  Q : tập hữu hạn các trạng thái (p, q…)
                                  Σ : bộ chữ cái nhập (a, b … ; w, x, y …)
M=(Q, Σ, δ, q0, F)                δ : hàm chuyển, ánh xạ: Q x Σ → Q
                                  q0 ∈ Q : trạng thái bắt đầu.
                                  F ⊆ Q : tập các trạng thái kết thúc.   3
Mở rộng hàm chuyển trạng thái
            • δ(q, ε) = q
            • δ(q, wa) = δ( δ(q,w), a) với ∀ w, a

Ngôn ngữ được chấp nhận:
             L(M) = { x | δ( q0, x ) ∈ F }

                                   Ngôn ngữ
Ví dụ: chuỗi nhập w=110101         chính quy
   • δ(q0, 1) = q1
   • δ(q0, 11) = δ(q1, 1) = q0
   • δ(q0, 110) = δ(q1, 10) = δ(q0, 0) = q2
   • δ(q0, 1101) = δ(q1, 101) = δ(q0, 01) = δ(q2, 1) = q3
   • δ(q0, 11010) = … = δ(q3, 0) = q1
   • δ(q0, 110101) = … = δ(q1, 1) = q0 ∈ F                  4
Giải thuật hình thức
• Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ
  L(M) được chấp nhận bởi automata M.
• Input: chuỗi nhập x$
• Output: câu trả lời ‘YES’ hoặc ‘NO’
• Giải thuật:
  q := q0 ;
  c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}
  While c <> $ do
    begin
       q := δ(q, c);
       c := nextchar ;
    end
  If (q in F) then write("YES") else write("NO");

                                                          5
Automata hữu hạn không đơn định (NFA)
• Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001
             1                                 1
            0                                 0

   Start            0             0
           q0           q3                    q4


                1


           q1                q0       0        q0   1       q0   0       q0   0       q0   1       q0

                1                         0             1            0            0            1

                                               q3           q1           q3           q3           q1
           q2                                                                     0

            0                                                                              1
           1                                                                          q4           q4

Nhận xét:
• Ứng với một trạng thái và một ký tự nhập, có thể có
  không, một hoặc nhiều phép chuyển trạng thái.
                                                                                                        6
• DFA là một trường hợp đặc biệt của NFA
Định nghĩa NFA
                      Q : tập hữu hạn các trạng thái.
                      Σ : bộ chữ cái nhập.
M=(Q, Σ, δ, q0, F)    δ : hàm chuyển ánh xạ Q x Σ → 2Q
                      q0 ∈ Q : trạng thái bắt đầu.
                      F ⊆ Q : tập các trạng thái kết thúc.
Chú ý: khái niệm δ(q, a) là tập hợp tất cả các trạng thái p
  sao cho có phép chuyển từ trạng thái q trên nhãn a.

Hàm chuyển trạng thái mở rộng:
• δ(q, ε) = {q}
• δ(q, wa) = { p | có một trạng thái r trong δ(q, w) mà p∈δ(r, a) }
           = δ( δ(q,w), a)
• δ(P, w) = ∪ q∈P δ(q, w) với ∀P ⊆ Q
                                                                 7
Ví dụ về NFA
Ví dụ: xét chuỗi nhập w=01001 và NFA đã cho ở trên
   • M( {q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} )

      δ                  Input             • δ(q0, 0) = {q0,q3}
  Trạng thái      0                 1      • δ(q0, 01) = δ( δ(q0, 0), 1)
      q0       {q0,q3}           {q0,q1}
                                             = δ({q0, q3},1) = δ(q0, 1)
      q1         Ø                {q2}
                                             ∪ δ(q3, 1) = {q0, q1}
      q2        {q2}              {q2}
      q3        {q4}               Ø
                                           • δ(q0, 010) = {q0, q3}
      q4        {q4}              {q4}     • δ(q0, 0100) = {q0, q3, q4}
                                           • δ(q0, 01001) = {q0, q1, q4}
Do q4 ∈ F nên w=01001 ∈ L(M)
                                                                          8
Sự tương đương giữa DFA & NFA

Định lý 1: Nếu L là tập được chấp nhận bởi một NFA thì tồn
  tại một DFA chấp nhận L.

Giả sử NFA M={Q, Σ, δ, q0, F} chấp nhận L
Ta xây dựng DFA M’={Q’, Σ, δ’, q0’, F’} chấp nhận L
   • Q’ = 2Q . Một phần tử trong Q’ được ký hiệu là [q0, q1,
     …, qi] với q0, q1, …, qi ∈ Q
   • q0’ = [q0]
   • F’ là tập hợp các trạng thái của Q’ có chứa ít nhất một
     trạng thái kết thúc trong tập F của M
   • Hàm chuyển δ’([q1, q2,..., qi], a) = [p1, p2,..., pj] nếu và
     chỉ nếu δ({q1, q2,..., qi }, a) = {p1, p2,..., pj}
                                                               9
Ví dụ về sự tương đương giữa DFA & NFA
Ví dụ: NFA M ({q0, q1}, {0, 1}, δ, q0, {q1}) với hàm chuyển
δ(q0,0) = {q0, q1}, δ(q0,1) = {q1}, δ(q1,0) = ∅, δ(q1,1) = {q0, q1}
Ta sẽ xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q0], F’)
   • Q’ = {∅, [q0], [q1], [q0, q1]}
   • F’ = {[q1], [q0, q1]}
   • Hàm chuyển δ’
       δ’(∅, 0) = δ’(∅, 1) = ∅
       δ’([q0], 0) = [q0, q1]
       δ’([q0], 1) = [q1]
       δ’([q1], 0) = ∅
       δ’([q1], 1) = [q0, q1]
       δ’([q0, q1], 0) = [q0, q1]
       δ’([q0, q1], 1) = [q0, q1]                       10
NFA với ε- dịch chuyển (NFAε)
Ví dụ: xây dựng NFA chấp nhận chuỗi 0*1*2*
                     0            1               2
             Start        0, 1             1, 2
                     q0           q1              q2


                                 0, 1, 2

                     0            1                2
            Start         ε                  ε
                     q0           q1              q2



Định nghĩa: NFAε M(Q, Σ, δ, q0, F)
   • δ : hàm chuyển ánh xạ Q x (Σ ∪ {ε}) → 2Q
   • Khái niệm δ(q, a) là tập hợp các trạng thái p sao cho
     có phép chuyển nhãn a từ q tới p, với a ∈ (Σ ∪ {ε}) 11
Mở rộng hàm chuyển trạng thái cho NFAε
Định nghĩa ε-CLOSURE:
● ε-CLOSURE(q) = { p | có đường đi từ q tới p theo nhãn ε }
● ε-CLOSURE(P) = ∪ q∈P ε-CLOSURE(q)
Hàm chuyển trạng thái mở rộng: mở rộng δ thành δ*
   • δ* : Q x Σ* → 2Q
   • δ*(q, w) = { p | có đường đi từ q tới p theo nhãn w, trên
     đường đi có thể chứa cạnh nhãn ε }
Ta có:
   • δ*(q, ε) = ε-CLOSURE(q)
   • δ*(q,a) = ε-CLOSURE(δ(δ*(q, ε),a))
   • δ*(q, wa) = ε-CLOSURE( δ( δ*(q, w), a) )
     Cách khác: δ*(q, wa) = ε-CLOSURE(P)
     với P = { p | r ∈ δ*(q, w) và p ∈ δ(r, a) }
   • δ*(R, w) = ∪ q∈R δ*(q, w)                              12
Mở rộng hàm chuyển trạng thái cho NFAε
                    0         1         2

Ví dụ:      Start        ε         ε
                    q0       q1         q2

Xét chuỗi nhập w = 012
• δ*(q0, ε) = ε-CLOSURE(q0) = {q0, q1, q2}
• δ*(q0, 0) = ε-CLOSURE(δ(δ*(q0, ε), 0))
  = ε-CLOSURE(δ({q0, q1, q2}, 0)) = ε-CLOSURE(δ(q0, 0) ∪
  δ(q1, 0) ∪ δ(q2, 0) ) = ε-CLOSURE( {q0} ∪ ∅ ∪ ∅ )
  = ε-CLOSURE({q0}) = {q0, q1, q2}
• δ*(q0, 01) = ε-CLOSURE(δ(δ*(q0, 0), 1))
  = ε-CLOSURE(δ({q0, q1, q2}, 1)) = ε-CLOSURE({q1})
  = {q1,q2}
• δ*(q0, 012) = ε-CLOSURE(δ(δ*(q0, 01), 2))
  = ε-CLOSURE(δ({q1, q2}, 2)) = ε-CLOSURE({q2}) = {q2} 13
• Do q2 ∈ F nên w ∈ L(M)
Giải thuật hình thức cho NFAε
Mục đích: mô phỏng hoạt động của NFAε
Input: chuỗi nhập x$
Output: câu trả lời ‘YES’ (x được chấp nhận) hoặc ‘NO’
Giải thuật:
  q := ε-CLOSURE (q0) ;
  c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo}
  While c <> $ do
    begin
       q := ε-CLOSURE (δ(q, c));
       c := nextchar ;
    end
  If (q in F) then write("YES") else write("NO");


                                                         14
Sự tương đương giữa NFAε và NFA
Định lý 2: nếu L được chấp nhận bởi một NFA có ε-dịch
  chuyển thì L cũng được chấp nhận bởi một NFA không có
  ε-dịch chuyển.
Giả sử: NFAε M(Q, Σ, δ, q0, F) chấp nhận L
Ta xây dựng: NFA M’={Q, Σ, δ’, q0, F’}
Với:
   • F’ = F ∪ q0 nếu ε-CLOSURE(q0) chứa một trạng thái thuộc F.
     Ngược lại, F’ = F
   • δ’(q, a) = δ*(q, a)



                                                             15
Sự tương đương giữa NFAε và NFA
                                  0            1         2
Ví dụ:                 Start
                                  q0       ε   q1    ε   q2


Xây dựng NFA tương đương M’={Q, Σ, δ’, q0, F’}
   • Q = {q0, q1, q2}
   • Σ = {0, 1, 2}
   • Trạng thái bắt đầu: q0
   • F’ = {q0, q2}              δ’          Inputs
   • Hàm chuyển δ’          Trạng thái 0         1                                   2
         0            1                2            q0        {q0, q1, q2} {q1, q2} {q2}
 Start        0, 1             1, 2
         q0           q1               q2           q1            ∅       {q1, q2} {q2}
                                                    q2            ∅          ∅      {q2}
                     0, 1, 2


                                                                                     16
Xây dựng DFA từ NFA(ε)
Ví dụ: xây dựng DFA tương đương với NFAε sau:
M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10})
                                    ε
                                    a
                                2       3
                    ε       ε               ε       ε
        Start                                               a       b       b
                0       1                       6       7       8       9       10
                            ε               ε
                                    b
                                4       5
                                    ε

Ta xây dựng DFA M’= (Q’, Σ, δ’, q0’, F’) tương đương M
   • Trạng thái bắt đầu: q0’ ↔ ε-CLOSURE(q0)
   • F’ = { p | trong ký hiệu của p có chứa ít nhất một trạng
     thái của F }
   • Xây dựng hàm chuyển δ’                                 17
Giải thuật xây dựng hàm chuyển δ’
Giải thuật:
  T := ε-CLOSURE (q0) ; T chưa được đánh dấu ;
  Thêm T vào tập các trạng thái Q’ của DFA ;

  While Có một trạng thái T của DFA chưa được đánh dấu do
    Begin
      Đánh dấu T; { xét trạng thái T}
      For Với mỗi ký hiệu nhập a do
         begin
           U:= ε-closure(δ(T, a))
           If U không có trong tập trạng thái Q’ của DFA then
              begin
                Thêm U vào tập các trạng thái Q’ của DFA ;
                Trạng thái U chưa được đánh dấu;
                δ[T, a] := U;{δ[T, a] là phần tử của bảng chuyển DFA}
              end;
         end;
    End;

                                                                  18
Xây dựng DFA từ NFA(ε)
● ε-CLOSURE(q0) = {0, 1, 2, 4, 7} → q0’ = [0, 1, 2, 4, 7] = A
● ε-CLOSURE(δ(A, a)) = ε-CLOSURE({3, 8}) = {1, 2, 3, 4, 6,
  7, 8} → B
● ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7}
  →C
● ε-CLOSURE(δ(B, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6,
  7, 9} → D
● ε-CLOSURE(δ(C, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C
● ε-CLOSURE(δ(D, a)) = ε-CLOSURE({3, 8}) → B
● ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5,
  6, 7, 10} → E
● ε-CLOSURE(δ(E, a)) = ε-CLOSURE({3, 8}) → B                19
● ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C
Xây dựng DFA từ NFA(ε)
• Bảng hàm chuyển

                 Ký hiệu nhập                   b
   Trạng thái
                  a       b                             C
       A          B       C                 b       a               b
       B          B       D     Start       a               b
       C          B       C             A               B           D       E
                                                                        b
                                                                a
       D          B       E                         a
                                                                    a
       E          B       C


• Ký hiệu bắt đầu: q0’ = A (↔ ε-CLOSURE(q0) )
• Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng
  thái 10 ∈ F)

                                                                                20
Biểu thức chính quy (RE)
Vài ví dụ:
   • 00 : là biểu thức chính quy biểu diễn tập {00}
   • (0+1)* : tập hợp tất cả các chuỗi số 0 và số 1, kể cả
      chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 ... }
   • (0+1)*011 : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng
      bởi 011 = {011, 0011, 1011, 00011, 11011, ... }
   • (0+1)*00(0+1)* : tập hợp tất cả các chuỗi 0,1 có ít nhất
      hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000,
      1001, 011001, ... }
   • (0+ ε)(1+10)* : tất cả các chuỗi không có hai số 0 liên
      tiếp = {ε, 0, 01, 010, 1, 10, 01010, 0111, ... }
   • 0*1*2* : {ε, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, ... }
   • 00*11*22* : tất cả các chuỗi trong tập 0*1*2* với ít nhất
      một ký hiệu 0, 1 và 2 ↔ viết gọn thành 0+1+2+
                                                              21
Biểu thức chính quy (RE)
Định nghĩa: cho Σ là một bộ chữ cái. BTCQ trên Σ là các tập
  hợp mà chúng mô tả được định nghĩa đệ quy như sau:
   ● ∅ là BTCQ ký hiệu cho tập rỗng
   ● ε là BTCQ ký hiệu cho tập {ε}
   ● ∀a ∈ Σ, a là BTCQ ký hiệu cho tập {a}
   ● Nếu r và s là các BTCQ ký hiệu cho các tập hợp R và
     S thì (r + s), (rs) và ( r*) là các BTCQ ký hiệu cho các
     tập hợp R ∪ S, RS và R* tương ứng

Thứ tự ưu tiên:
       Phép bao đóng > Phép nối kết > Phép hợp
Ví dụ:
   • Biểu thức ((0(1*)) + 1) có thể viết là 01*+1
                                                          22
Tính chất đại số của BTCQ
Phép hợp:                                           Phép nối kết:
•   r+∅=∅+r=r                                       •   rε = εr = r
•   r+r=r                                           •   r∅ = ∅r = ∅
•   r+s=s+r                                         •   (r + s) t = rt + st
•   (r + s) + t = r + (s + t) = r + s + t           •   r (s + t) = rs + rt

Phép bao đóng:                              Tổng hợp:
•   ε* = ε                                  • (r* + s*)* = (r*s*)* = (r + s)*
•   ∅* = ∅                                  • (rs)*r = r(sr)*
•   r*r* = r*                               • (r*s)* r* = (r + s)*
•   (r*)* = r*
•   r* = ε + r + r2 + … + rk + …
•   r* = ε + r+
•   (ε + r)+ = (ε + r)* = r*
•   r*r = r r* = r+
                                                                                23
Sự tương đương giữa NFAε và BTCQ
Định lý 3: nếu r là BTCQ thì tồn tại một NFA với ε-dịch
  chuyển chấp nhận L(r)
Chứng minh: quy nạp theo số phép toán
• Xét r không có phép toán nào
          Start         Start               Start         a
                  q0            q0   qf             q0         qf

            r= ε              r=∅                        r=a
                       Các NFAε cho các kết hợp đơn

• Xét r có i phép toán: r = r1 + r2, r = r1r2 hoặc r = r1*
    Xây dựng NFAε M1 = (Q1, Σ1, δ1, q1, {f1}) và M2 = (Q2,
     Σ2, δ2, q2, {f2}) sao cho L(M1) = L(r1) và L(M2) = L(r2)
    Xây dựng NFAε M như sau:
                                                                    24
Sự tương đương giữa NFAε và BTCQ
                                  ε   q1    M1    f1        ε
                Start
• r = r1 + r2            q0                                      f0
                                  ε         M2              ε
                                      q2          f2




                Start                       ε
• r = r1 r2             q1    M1       f1        q2    M2       f2




                                            ε

• r = r1 *      Start         ε             M1          ε
                        q0            q1          f1             f0

                                             ε
                                                                      25
Sự tương đương giữa NFAε và BTCQ
Ví dụ: xây dựng NFAε chấp nhận BTCQ r = 01* + 1
• r có dạng: r = r1 + r2 với r1 = 01* và r2 = 1
• r1 có dạng r1 = r3r4 với r3 = 0 và r4 = 1*
• r4 có dạng r4 = r5* với r5 = 1                ε

Start             1                           Start                          ε                 1                  ε
        q1                q2                           q7                        q5                q6                 q8
             r2
                                         r4 = r5* = 1*                                 ε               ε
Start             0
        q3                q4
             r3                                            0             ε            ε            1              ε
                                        Start     q3            q4               q7        q5                q6            q8
Start             1                                                                                ε
        q5                q6             r1 = r3r4 = 01*
             r5                                        1
                                                  q1             q2
                                                                                  ε
    r = r1 + r2 = 01* + 1           ε
                  Start                                              ε
                           q9   ε                                                          ε           q10
                                              ε        ε                         ε
                                    q3 0 q4       q7           q5 1 q6                q8                              26
                                                                  ε
Sự tương đương giữa DFA và BTCQ
Định lý 4: Nếu L được chấp nhận bởi một DFA, thì L được
  ký hiệu bởi một BTCQ
Chứng minh:
   • L được chấp nhận bởi DFA M({q1, q2,..., qn}, Σ, δ, q1, F)
   • Đặt Rkij = {x | δ(qi, x) = qj và nếu δ(qi, y) = ql (y ⊂ x) thì l ≤ k}
     (hay Rkij là tập hợp tất cả các chuỗi làm cho automata đi từ
     trạng thái i đến trạng thái j mà không đi ngang qua trạng
     thái nào lớn hơn k)
   • Định nghĩa đệ quy của Rkij :
            Rkij = Rk-1ik(Rk-1kk)*Rk-1kj ∪ Rk-1ij
                      {a | δ(qi, a) = qj}, nếu i ≠ j
            R ij =
              0
                      {a | δ(qi, a) = qj} ∪ {ε}, nếu i = j
                                                                        27
Sự tương đương giữa DFA và BTCQ
 • Ta sẽ chứng minh (quy nạp theo k) bổ đề sau: với mọi
 Rkij đều tồn tại một biểu thức chính quy ký hiệu cho Rkij .
      k = 0: R0ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc ε
      Giả sử ta có bổ đề trên đúng với k-1, tức là tồn tại
        BTCQ rk-1lm sao cho L(rk-1lm) = Rk-1lm
      Vậy đối với Rkij ta có thể chọn BTCQ
                      rkij = (rk-1ik)(rk-1kk)*(rk-1kj) + rk-1ij
     → bổ đề đã được chứng minh
     ● Ta có nhận xét:
                              L(M) = ∪qj ∈F Rn1j
     ● Vậy L có thể được ký hiệu bằng BTCQ
                         r = rn1j1 + rn1j2 + … + rn1jp
        với F = {qj1, qj2, …, qjp}                              28
Sự tương đương giữa DFA và BTCQ
Ví dụ: viết BTCQ cho DFA
                                     1

                 Start        0             1
                         q1           q2          q3
                              0            0, 1

Ta cần viết biểu thức:
                                  r = r312 + r313
Ta có:
   • r312 = r213(r233)*r232 + r212
   • r313 = r213(r233)*r233 + r213



                                                       29
Sự tương đương giữa DFA và BTCQ
                  k=0         k=1            k=2
         rk11       ε          ε             (00)*
         rk12       0          0            0(00)*
         rk13       1          1              0*1
         rk21       0          0            0(00)*
         rk22       ε        ε + 00          (00)*
         rk23       1        1 + 01           0*1
         rk31      ∅           ∅         (0 + 1)(00)*0
         rk32     0+1         0+1         (0 + 1)(00)*
         rk33       ε          ε         ε + (0 + 1)0*1

Thay vào và rút gọn, ta có:
       r = 0*1((0 + 1)0*1)* (ε + (0 + 1)(00)*) + 0(00)*
                                                          30
Mối liên hệ giữa FA và BTCQ
Sơ đồ liên hệ:
                        Định lý 1
                 DFA                NFA


           Định lý 4                  Định lý 2


                  RE                NFAε
                       Định lý 3




                                                  31

Mais conteúdo relacionado

Mais procurados

Công thức truyền tin
Công thức truyền tinCông thức truyền tin
Công thức truyền tinakprovip
 
Giải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhGiải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhdinhtrongtran39
 
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...https://www.facebook.com/garmentspace
 
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Quang Thinh Le
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngVượng Đặng
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logicwww. mientayvn.com
 
Tổng hợp câu hỏi môn thông tin số
Tổng hợp câu hỏi môn thông tin sốTổng hợp câu hỏi môn thông tin số
Tổng hợp câu hỏi môn thông tin sốHuan Tran
 
tổng hợp bài tập java có đáp án chi tiết
 tổng hợp bài tập java có đáp án chi tiết tổng hợp bài tập java có đáp án chi tiết
tổng hợp bài tập java có đáp án chi tiếtHoàng Trí Phan
 
kỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmkỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmljmonking
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsaBảo Điệp
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabChien Dang
 
Công thức Vật lý đại cương III
Công thức Vật lý đại cương IIICông thức Vật lý đại cương III
Công thức Vật lý đại cương IIIVũ Lâm
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoCông Thắng Trương
 

Mais procurados (20)

Công thức truyền tin
Công thức truyền tinCông thức truyền tin
Công thức truyền tin
 
Giải bài tập Phương pháp tính
Giải bài tập Phương pháp tínhGiải bài tập Phương pháp tính
Giải bài tập Phương pháp tính
 
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...
Luận án tiến sĩ kỹ thuật viễn thông nâng cao chất lượng xác định hướng sóng t...
 
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
Tín Hiệu Và Hệ Thống - Biểu Diễn trong miền thời gian của hệ thống tuyến tính...
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụng
 
Đại số boolean và mạch logic
Đại số boolean và mạch logicĐại số boolean và mạch logic
Đại số boolean và mạch logic
 
Tổng hợp câu hỏi môn thông tin số
Tổng hợp câu hỏi môn thông tin sốTổng hợp câu hỏi môn thông tin số
Tổng hợp câu hỏi môn thông tin số
 
tổng hợp bài tập java có đáp án chi tiết
 tổng hợp bài tập java có đáp án chi tiết tổng hợp bài tập java có đáp án chi tiết
tổng hợp bài tập java có đáp án chi tiết
 
Đề tài: Xây dựng hệ thống hạ tầng mạng cho doanh nghiệp, HAY
Đề tài: Xây dựng hệ thống hạ tầng mạng cho doanh nghiệp, HAYĐề tài: Xây dựng hệ thống hạ tầng mạng cho doanh nghiệp, HAY
Đề tài: Xây dựng hệ thống hạ tầng mạng cho doanh nghiệp, HAY
 
kỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàmkỹ thuật giải phương trình hàm
kỹ thuật giải phương trình hàm
 
Thuật toán mã hóa rsa
Thuật toán mã hóa rsaThuật toán mã hóa rsa
Thuật toán mã hóa rsa
 
Tính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn MatlabTính toán khoa học - Chương 1: Nhập môn Matlab
Tính toán khoa học - Chương 1: Nhập môn Matlab
 
MATMA - Chuong2
MATMA - Chuong2MATMA - Chuong2
MATMA - Chuong2
 
Báo cáo thực tập môn học an ninh mạng tìm hiểu về mô hình mạng
Báo cáo thực tập môn học an ninh mạng tìm hiểu về mô hình mạngBáo cáo thực tập môn học an ninh mạng tìm hiểu về mô hình mạng
Báo cáo thực tập môn học an ninh mạng tìm hiểu về mô hình mạng
 
Chuong 3
Chuong 3Chuong 3
Chuong 3
 
Cyclic code
Cyclic codeCyclic code
Cyclic code
 
Công thức Vật lý đại cương III
Công thức Vật lý đại cương IIICông thức Vật lý đại cương III
Công thức Vật lý đại cương III
 
Thuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demoThuật toán Nhân Bình Phương - demo
Thuật toán Nhân Bình Phương - demo
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
Chuong04
Chuong04Chuong04
Chuong04
 

Destaque

Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Minh Lê
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Minh Lê
 
Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Minh Lê
 
Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Minh Lê
 
Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Minh Lê
 
Lý thuyết tính toán - BKHN - 5
Lý thuyết tính toán - BKHN - 5Lý thuyết tính toán - BKHN - 5
Lý thuyết tính toán - BKHN - 5Minh Lê
 
Tl automata
Tl automataTl automata
Tl automataLuwx Mta
 
Automata slide
Automata slide Automata slide
Automata slide vanms1989
 
Automata slide DHBKHCM [S2NUCE.blogspot.com]
Automata slide DHBKHCM  [S2NUCE.blogspot.com]Automata slide DHBKHCM  [S2NUCE.blogspot.com]
Automata slide DHBKHCM [S2NUCE.blogspot.com]Tran Quyet
 
Ebook hướng dẫn lập trình từ điển
Ebook hướng dẫn lập trình từ điểnEbook hướng dẫn lập trình từ điển
Ebook hướng dẫn lập trình từ điểnAnh Pham Duy
 
Robust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsRobust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsMinh Lê
 
Lecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular LanguagesLecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular LanguagesMarina Santini
 

Destaque (14)

Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2Lý thuyết tính toán - BKHN - 2
Lý thuyết tính toán - BKHN - 2
 
Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1Lý thuyết tính toán - BKHN - 1
Lý thuyết tính toán - BKHN - 1
 
Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4Lý thuyết tính toán - BKHN - 4
Lý thuyết tính toán - BKHN - 4
 
Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7Lý thuyết tính toán - BKHN - 7
Lý thuyết tính toán - BKHN - 7
 
Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6Lý thuyết tính toán - BKHN - 6
Lý thuyết tính toán - BKHN - 6
 
Lý thuyết tính toán - BKHN - 5
Lý thuyết tính toán - BKHN - 5Lý thuyết tính toán - BKHN - 5
Lý thuyết tính toán - BKHN - 5
 
Tl automata
Tl automataTl automata
Tl automata
 
Automata slide
Automata slide Automata slide
Automata slide
 
Automata slide v1
Automata slide v1Automata slide v1
Automata slide v1
 
Automata slide DHBKHCM [S2NUCE.blogspot.com]
Automata slide DHBKHCM  [S2NUCE.blogspot.com]Automata slide DHBKHCM  [S2NUCE.blogspot.com]
Automata slide DHBKHCM [S2NUCE.blogspot.com]
 
Ebook hướng dẫn lập trình từ điển
Ebook hướng dẫn lập trình từ điểnEbook hướng dẫn lập trình từ điển
Ebook hướng dẫn lập trình từ điển
 
Robust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like MechanismsRobust Object Recognition with Cortex-Like Mechanisms
Robust Object Recognition with Cortex-Like Mechanisms
 
Regular expression (compiler)
Regular expression (compiler)Regular expression (compiler)
Regular expression (compiler)
 
Lecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular LanguagesLecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular Languages
 

Mais de Minh Lê

how neurons connect to each others?
how neurons connect to each others?how neurons connect to each others?
how neurons connect to each others?Minh Lê
 
Xây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramXây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramMinh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy methodMinh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy methodMinh Lê
 
Parsimony problems
Parsimony problemsParsimony problems
Parsimony problemsMinh Lê
 
Food expert system
Food expert systemFood expert system
Food expert systemMinh Lê
 

Mais de Minh Lê (6)

how neurons connect to each others?
how neurons connect to each others?how neurons connect to each others?
how neurons connect to each others?
 
Xây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gramXây dựng tag cloud bằng cây n-gram
Xây dựng tag cloud bằng cây n-gram
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
 
Parsimony problems
Parsimony problemsParsimony problems
Parsimony problems
 
Food expert system
Food expert systemFood expert system
Food expert system
 

Lý thuyết tính toán - BKHN - 3

  • 1. Chương 3: Automata hữu hạn & Biểu thức chính quy Nội dung: • Khái niệm DFA & NFA • Sự tương đương giữa DFA & NFA • Biểu thức chính quy • Các tính chất của tập chính quy 1
  • 2. Phân loại FA DFA Deterministic Finite Automata FA (Finite Automata) NFA Nondeterministic Finite Automata Biểu thức chính quy 2
  • 3. Automata hữu hạn đơn định (DFA) Ví dụ: 0 1 1 0 0 1 0 1 c Input 1 Start q0 1 q1 0 0 Bộ điều khiển a b Trạng thái bắt đầu 0 0 1 q2 q3 Trạng thái kết thúc 1 d x Phép chuyển trên nhãn x Q : tập hữu hạn các trạng thái (p, q…) Σ : bộ chữ cái nhập (a, b … ; w, x, y …) M=(Q, Σ, δ, q0, F) δ : hàm chuyển, ánh xạ: Q x Σ → Q q0 ∈ Q : trạng thái bắt đầu. F ⊆ Q : tập các trạng thái kết thúc. 3
  • 4. Mở rộng hàm chuyển trạng thái • δ(q, ε) = q • δ(q, wa) = δ( δ(q,w), a) với ∀ w, a Ngôn ngữ được chấp nhận: L(M) = { x | δ( q0, x ) ∈ F } Ngôn ngữ Ví dụ: chuỗi nhập w=110101 chính quy • δ(q0, 1) = q1 • δ(q0, 11) = δ(q1, 1) = q0 • δ(q0, 110) = δ(q1, 10) = δ(q0, 0) = q2 • δ(q0, 1101) = δ(q1, 101) = δ(q0, 01) = δ(q2, 1) = q3 • δ(q0, 11010) = … = δ(q3, 0) = q1 • δ(q0, 110101) = … = δ(q1, 1) = q0 ∈ F 4
  • 5. Giải thuật hình thức • Mục đích: kiểm tra một chuỗi nhập x có thuộc ngôn ngữ L(M) được chấp nhận bởi automata M. • Input: chuỗi nhập x$ • Output: câu trả lời ‘YES’ hoặc ‘NO’ • Giải thuật: q := q0 ; c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo} While c <> $ do begin q := δ(q, c); c := nextchar ; end If (q in F) then write("YES") else write("NO"); 5
  • 6. Automata hữu hạn không đơn định (NFA) • Ví dụ: cho automata M (hình vẽ) và xét chuỗi nhập 01001 1 1 0 0 Start 0 0 q0 q3 q4 1 q1 q0 0 q0 1 q0 0 q0 0 q0 1 q0 1 0 1 0 0 1 q3 q1 q3 q3 q1 q2 0 0 1 1 q4 q4 Nhận xét: • Ứng với một trạng thái và một ký tự nhập, có thể có không, một hoặc nhiều phép chuyển trạng thái. 6 • DFA là một trường hợp đặc biệt của NFA
  • 7. Định nghĩa NFA Q : tập hữu hạn các trạng thái. Σ : bộ chữ cái nhập. M=(Q, Σ, δ, q0, F) δ : hàm chuyển ánh xạ Q x Σ → 2Q q0 ∈ Q : trạng thái bắt đầu. F ⊆ Q : tập các trạng thái kết thúc. Chú ý: khái niệm δ(q, a) là tập hợp tất cả các trạng thái p sao cho có phép chuyển từ trạng thái q trên nhãn a. Hàm chuyển trạng thái mở rộng: • δ(q, ε) = {q} • δ(q, wa) = { p | có một trạng thái r trong δ(q, w) mà p∈δ(r, a) } = δ( δ(q,w), a) • δ(P, w) = ∪ q∈P δ(q, w) với ∀P ⊆ Q 7
  • 8. Ví dụ về NFA Ví dụ: xét chuỗi nhập w=01001 và NFA đã cho ở trên • M( {q0, q1, q2, q3, q4}, {0, 1}, δ, q0, {q2, q4} ) δ Input • δ(q0, 0) = {q0,q3} Trạng thái 0 1 • δ(q0, 01) = δ( δ(q0, 0), 1) q0 {q0,q3} {q0,q1} = δ({q0, q3},1) = δ(q0, 1) q1 Ø {q2} ∪ δ(q3, 1) = {q0, q1} q2 {q2} {q2} q3 {q4} Ø • δ(q0, 010) = {q0, q3} q4 {q4} {q4} • δ(q0, 0100) = {q0, q3, q4} • δ(q0, 01001) = {q0, q1, q4} Do q4 ∈ F nên w=01001 ∈ L(M) 8
  • 9. Sự tương đương giữa DFA & NFA Định lý 1: Nếu L là tập được chấp nhận bởi một NFA thì tồn tại một DFA chấp nhận L. Giả sử NFA M={Q, Σ, δ, q0, F} chấp nhận L Ta xây dựng DFA M’={Q’, Σ, δ’, q0’, F’} chấp nhận L • Q’ = 2Q . Một phần tử trong Q’ được ký hiệu là [q0, q1, …, qi] với q0, q1, …, qi ∈ Q • q0’ = [q0] • F’ là tập hợp các trạng thái của Q’ có chứa ít nhất một trạng thái kết thúc trong tập F của M • Hàm chuyển δ’([q1, q2,..., qi], a) = [p1, p2,..., pj] nếu và chỉ nếu δ({q1, q2,..., qi }, a) = {p1, p2,..., pj} 9
  • 10. Ví dụ về sự tương đương giữa DFA & NFA Ví dụ: NFA M ({q0, q1}, {0, 1}, δ, q0, {q1}) với hàm chuyển δ(q0,0) = {q0, q1}, δ(q0,1) = {q1}, δ(q1,0) = ∅, δ(q1,1) = {q0, q1} Ta sẽ xây dựng DFA tương đương M’ (Q’, {0, 1}, δ’, [q0], F’) • Q’ = {∅, [q0], [q1], [q0, q1]} • F’ = {[q1], [q0, q1]} • Hàm chuyển δ’  δ’(∅, 0) = δ’(∅, 1) = ∅  δ’([q0], 0) = [q0, q1]  δ’([q0], 1) = [q1]  δ’([q1], 0) = ∅  δ’([q1], 1) = [q0, q1]  δ’([q0, q1], 0) = [q0, q1]  δ’([q0, q1], 1) = [q0, q1] 10
  • 11. NFA với ε- dịch chuyển (NFAε) Ví dụ: xây dựng NFA chấp nhận chuỗi 0*1*2* 0 1 2 Start 0, 1 1, 2 q0 q1 q2 0, 1, 2 0 1 2 Start ε ε q0 q1 q2 Định nghĩa: NFAε M(Q, Σ, δ, q0, F) • δ : hàm chuyển ánh xạ Q x (Σ ∪ {ε}) → 2Q • Khái niệm δ(q, a) là tập hợp các trạng thái p sao cho có phép chuyển nhãn a từ q tới p, với a ∈ (Σ ∪ {ε}) 11
  • 12. Mở rộng hàm chuyển trạng thái cho NFAε Định nghĩa ε-CLOSURE: ● ε-CLOSURE(q) = { p | có đường đi từ q tới p theo nhãn ε } ● ε-CLOSURE(P) = ∪ q∈P ε-CLOSURE(q) Hàm chuyển trạng thái mở rộng: mở rộng δ thành δ* • δ* : Q x Σ* → 2Q • δ*(q, w) = { p | có đường đi từ q tới p theo nhãn w, trên đường đi có thể chứa cạnh nhãn ε } Ta có: • δ*(q, ε) = ε-CLOSURE(q) • δ*(q,a) = ε-CLOSURE(δ(δ*(q, ε),a)) • δ*(q, wa) = ε-CLOSURE( δ( δ*(q, w), a) ) Cách khác: δ*(q, wa) = ε-CLOSURE(P) với P = { p | r ∈ δ*(q, w) và p ∈ δ(r, a) } • δ*(R, w) = ∪ q∈R δ*(q, w) 12
  • 13. Mở rộng hàm chuyển trạng thái cho NFAε 0 1 2 Ví dụ: Start ε ε q0 q1 q2 Xét chuỗi nhập w = 012 • δ*(q0, ε) = ε-CLOSURE(q0) = {q0, q1, q2} • δ*(q0, 0) = ε-CLOSURE(δ(δ*(q0, ε), 0)) = ε-CLOSURE(δ({q0, q1, q2}, 0)) = ε-CLOSURE(δ(q0, 0) ∪ δ(q1, 0) ∪ δ(q2, 0) ) = ε-CLOSURE( {q0} ∪ ∅ ∪ ∅ ) = ε-CLOSURE({q0}) = {q0, q1, q2} • δ*(q0, 01) = ε-CLOSURE(δ(δ*(q0, 0), 1)) = ε-CLOSURE(δ({q0, q1, q2}, 1)) = ε-CLOSURE({q1}) = {q1,q2} • δ*(q0, 012) = ε-CLOSURE(δ(δ*(q0, 01), 2)) = ε-CLOSURE(δ({q1, q2}, 2)) = ε-CLOSURE({q2}) = {q2} 13 • Do q2 ∈ F nên w ∈ L(M)
  • 14. Giải thuật hình thức cho NFAε Mục đích: mô phỏng hoạt động của NFAε Input: chuỗi nhập x$ Output: câu trả lời ‘YES’ (x được chấp nhận) hoặc ‘NO’ Giải thuật: q := ε-CLOSURE (q0) ; c := nextchar ; {c là ký hiệu nhập được đọc tiếp theo} While c <> $ do begin q := ε-CLOSURE (δ(q, c)); c := nextchar ; end If (q in F) then write("YES") else write("NO"); 14
  • 15. Sự tương đương giữa NFAε và NFA Định lý 2: nếu L được chấp nhận bởi một NFA có ε-dịch chuyển thì L cũng được chấp nhận bởi một NFA không có ε-dịch chuyển. Giả sử: NFAε M(Q, Σ, δ, q0, F) chấp nhận L Ta xây dựng: NFA M’={Q, Σ, δ’, q0, F’} Với: • F’ = F ∪ q0 nếu ε-CLOSURE(q0) chứa một trạng thái thuộc F. Ngược lại, F’ = F • δ’(q, a) = δ*(q, a) 15
  • 16. Sự tương đương giữa NFAε và NFA 0 1 2 Ví dụ: Start q0 ε q1 ε q2 Xây dựng NFA tương đương M’={Q, Σ, δ’, q0, F’} • Q = {q0, q1, q2} • Σ = {0, 1, 2} • Trạng thái bắt đầu: q0 • F’ = {q0, q2} δ’ Inputs • Hàm chuyển δ’ Trạng thái 0 1 2 0 1 2 q0 {q0, q1, q2} {q1, q2} {q2} Start 0, 1 1, 2 q0 q1 q2 q1 ∅ {q1, q2} {q2} q2 ∅ ∅ {q2} 0, 1, 2 16
  • 17. Xây dựng DFA từ NFA(ε) Ví dụ: xây dựng DFA tương đương với NFAε sau: M = (Q={0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, Σ={a, b}, δ, 0, F={10}) ε a 2 3 ε ε ε ε Start a b b 0 1 6 7 8 9 10 ε ε b 4 5 ε Ta xây dựng DFA M’= (Q’, Σ, δ’, q0’, F’) tương đương M • Trạng thái bắt đầu: q0’ ↔ ε-CLOSURE(q0) • F’ = { p | trong ký hiệu của p có chứa ít nhất một trạng thái của F } • Xây dựng hàm chuyển δ’ 17
  • 18. Giải thuật xây dựng hàm chuyển δ’ Giải thuật: T := ε-CLOSURE (q0) ; T chưa được đánh dấu ; Thêm T vào tập các trạng thái Q’ của DFA ; While Có một trạng thái T của DFA chưa được đánh dấu do Begin Đánh dấu T; { xét trạng thái T} For Với mỗi ký hiệu nhập a do begin U:= ε-closure(δ(T, a)) If U không có trong tập trạng thái Q’ của DFA then begin Thêm U vào tập các trạng thái Q’ của DFA ; Trạng thái U chưa được đánh dấu; δ[T, a] := U;{δ[T, a] là phần tử của bảng chuyển DFA} end; end; End; 18
  • 19. Xây dựng DFA từ NFA(ε) ● ε-CLOSURE(q0) = {0, 1, 2, 4, 7} → q0’ = [0, 1, 2, 4, 7] = A ● ε-CLOSURE(δ(A, a)) = ε-CLOSURE({3, 8}) = {1, 2, 3, 4, 6, 7, 8} → B ● ε-CLOSURE(δ(A, b)) = ε-CLOSURE({5}) = {1, 2, 4, 5, 6, 7} →C ● ε-CLOSURE(δ(B, a)) = ε-CLOSURE({3, 8}) → B ● ε-CLOSURE(δ(B, b)) = ε-CLOSURE({5, 9}) = {1, 2, 4, 5, 6, 7, 9} → D ● ε-CLOSURE(δ(C, a)) = ε-CLOSURE({3, 8}) → B ● ε-CLOSURE(δ(C, b)) = ε-CLOSURE({5}) = → C ● ε-CLOSURE(δ(D, a)) = ε-CLOSURE({3, 8}) → B ● ε-CLOSURE(δ(D, b)) = ε-CLOSURE({5,10}) = {1, 2, 4, 5, 6, 7, 10} → E ● ε-CLOSURE(δ(E, a)) = ε-CLOSURE({3, 8}) → B 19 ● ε-CLOSURE(δ(E, b)) = ε-CLOSURE({5}) = → C
  • 20. Xây dựng DFA từ NFA(ε) • Bảng hàm chuyển Ký hiệu nhập b Trạng thái a b C A B C b a b B B D Start a b C B C A B D E b a D B E a a E B C • Ký hiệu bắt đầu: q0’ = A (↔ ε-CLOSURE(q0) ) • Tập trạng thái kết thúc: F’ = {E} (vì trong E có chứa trạng thái 10 ∈ F) 20
  • 21. Biểu thức chính quy (RE) Vài ví dụ: • 00 : là biểu thức chính quy biểu diễn tập {00} • (0+1)* : tập hợp tất cả các chuỗi số 0 và số 1, kể cả chuỗi rỗng = {ε, 0, 1, 00, 01, 10, 11, 010, 011, 0010 ... } • (0+1)*011 : ký hiệu cho tất cả các chuỗi 0, 1 tận cùng bởi 011 = {011, 0011, 1011, 00011, 11011, ... } • (0+1)*00(0+1)* : tập hợp tất cả các chuỗi 0,1 có ít nhất hai số 0 liên tiếp = {00, 000, 100, 0000, 0001, 1000, 1001, 011001, ... } • (0+ ε)(1+10)* : tất cả các chuỗi không có hai số 0 liên tiếp = {ε, 0, 01, 010, 1, 10, 01010, 0111, ... } • 0*1*2* : {ε, 0, 1, 2, 01, 02, 12, 012, 0012, 0112, ... } • 00*11*22* : tất cả các chuỗi trong tập 0*1*2* với ít nhất một ký hiệu 0, 1 và 2 ↔ viết gọn thành 0+1+2+ 21
  • 22. Biểu thức chính quy (RE) Định nghĩa: cho Σ là một bộ chữ cái. BTCQ trên Σ là các tập hợp mà chúng mô tả được định nghĩa đệ quy như sau: ● ∅ là BTCQ ký hiệu cho tập rỗng ● ε là BTCQ ký hiệu cho tập {ε} ● ∀a ∈ Σ, a là BTCQ ký hiệu cho tập {a} ● Nếu r và s là các BTCQ ký hiệu cho các tập hợp R và S thì (r + s), (rs) và ( r*) là các BTCQ ký hiệu cho các tập hợp R ∪ S, RS và R* tương ứng Thứ tự ưu tiên: Phép bao đóng > Phép nối kết > Phép hợp Ví dụ: • Biểu thức ((0(1*)) + 1) có thể viết là 01*+1 22
  • 23. Tính chất đại số của BTCQ Phép hợp: Phép nối kết: • r+∅=∅+r=r • rε = εr = r • r+r=r • r∅ = ∅r = ∅ • r+s=s+r • (r + s) t = rt + st • (r + s) + t = r + (s + t) = r + s + t • r (s + t) = rs + rt Phép bao đóng: Tổng hợp: • ε* = ε • (r* + s*)* = (r*s*)* = (r + s)* • ∅* = ∅ • (rs)*r = r(sr)* • r*r* = r* • (r*s)* r* = (r + s)* • (r*)* = r* • r* = ε + r + r2 + … + rk + … • r* = ε + r+ • (ε + r)+ = (ε + r)* = r* • r*r = r r* = r+ 23
  • 24. Sự tương đương giữa NFAε và BTCQ Định lý 3: nếu r là BTCQ thì tồn tại một NFA với ε-dịch chuyển chấp nhận L(r) Chứng minh: quy nạp theo số phép toán • Xét r không có phép toán nào Start Start Start a q0 q0 qf q0 qf r= ε r=∅ r=a Các NFAε cho các kết hợp đơn • Xét r có i phép toán: r = r1 + r2, r = r1r2 hoặc r = r1*  Xây dựng NFAε M1 = (Q1, Σ1, δ1, q1, {f1}) và M2 = (Q2, Σ2, δ2, q2, {f2}) sao cho L(M1) = L(r1) và L(M2) = L(r2)  Xây dựng NFAε M như sau: 24
  • 25. Sự tương đương giữa NFAε và BTCQ ε q1 M1 f1 ε Start • r = r1 + r2 q0 f0 ε M2 ε q2 f2 Start ε • r = r1 r2 q1 M1 f1 q2 M2 f2 ε • r = r1 * Start ε M1 ε q0 q1 f1 f0 ε 25
  • 26. Sự tương đương giữa NFAε và BTCQ Ví dụ: xây dựng NFAε chấp nhận BTCQ r = 01* + 1 • r có dạng: r = r1 + r2 với r1 = 01* và r2 = 1 • r1 có dạng r1 = r3r4 với r3 = 0 và r4 = 1* • r4 có dạng r4 = r5* với r5 = 1 ε Start 1 Start ε 1 ε q1 q2 q7 q5 q6 q8 r2 r4 = r5* = 1* ε ε Start 0 q3 q4 r3 0 ε ε 1 ε Start q3 q4 q7 q5 q6 q8 Start 1 ε q5 q6 r1 = r3r4 = 01* r5 1 q1 q2 ε r = r1 + r2 = 01* + 1 ε Start ε q9 ε ε q10 ε ε ε q3 0 q4 q7 q5 1 q6 q8 26 ε
  • 27. Sự tương đương giữa DFA và BTCQ Định lý 4: Nếu L được chấp nhận bởi một DFA, thì L được ký hiệu bởi một BTCQ Chứng minh: • L được chấp nhận bởi DFA M({q1, q2,..., qn}, Σ, δ, q1, F) • Đặt Rkij = {x | δ(qi, x) = qj và nếu δ(qi, y) = ql (y ⊂ x) thì l ≤ k} (hay Rkij là tập hợp tất cả các chuỗi làm cho automata đi từ trạng thái i đến trạng thái j mà không đi ngang qua trạng thái nào lớn hơn k) • Định nghĩa đệ quy của Rkij : Rkij = Rk-1ik(Rk-1kk)*Rk-1kj ∪ Rk-1ij {a | δ(qi, a) = qj}, nếu i ≠ j R ij = 0 {a | δ(qi, a) = qj} ∪ {ε}, nếu i = j 27
  • 28. Sự tương đương giữa DFA và BTCQ • Ta sẽ chứng minh (quy nạp theo k) bổ đề sau: với mọi Rkij đều tồn tại một biểu thức chính quy ký hiệu cho Rkij .  k = 0: R0ij là tập hữu hạn các chuỗi 1 ký hiệu hoặc ε  Giả sử ta có bổ đề trên đúng với k-1, tức là tồn tại BTCQ rk-1lm sao cho L(rk-1lm) = Rk-1lm  Vậy đối với Rkij ta có thể chọn BTCQ rkij = (rk-1ik)(rk-1kk)*(rk-1kj) + rk-1ij → bổ đề đã được chứng minh ● Ta có nhận xét: L(M) = ∪qj ∈F Rn1j ● Vậy L có thể được ký hiệu bằng BTCQ r = rn1j1 + rn1j2 + … + rn1jp với F = {qj1, qj2, …, qjp} 28
  • 29. Sự tương đương giữa DFA và BTCQ Ví dụ: viết BTCQ cho DFA 1 Start 0 1 q1 q2 q3 0 0, 1 Ta cần viết biểu thức: r = r312 + r313 Ta có: • r312 = r213(r233)*r232 + r212 • r313 = r213(r233)*r233 + r213 29
  • 30. Sự tương đương giữa DFA và BTCQ k=0 k=1 k=2 rk11 ε ε (00)* rk12 0 0 0(00)* rk13 1 1 0*1 rk21 0 0 0(00)* rk22 ε ε + 00 (00)* rk23 1 1 + 01 0*1 rk31 ∅ ∅ (0 + 1)(00)*0 rk32 0+1 0+1 (0 + 1)(00)* rk33 ε ε ε + (0 + 1)0*1 Thay vào và rút gọn, ta có: r = 0*1((0 + 1)0*1)* (ε + (0 + 1)(00)*) + 0(00)* 30
  • 31. Mối liên hệ giữa FA và BTCQ Sơ đồ liên hệ: Định lý 1 DFA NFA Định lý 4 Định lý 2 RE NFAε Định lý 3 31