SlideShare a Scribd company logo
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

More Related Content

What's hot

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
Bảo Điệp
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
Diên Vĩ
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
ThiênĐàng CôngDân
 
Hướng dẫn giải bài tập chuỗi - Toán cao cấp
Hướng dẫn giải bài tập chuỗi - Toán cao cấpHướng dẫn giải bài tập chuỗi - Toán cao cấp
Hướng dẫn giải bài tập chuỗi - Toán cao cấp
Van-Duyet Le
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
AnhTuấn Nguyễn
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhJojo Kim
 
Mẫu báo cáo bài tập lớn
Mẫu báo cáo bài tập lớnMẫu báo cáo bài tập lớn
Mẫu báo cáo bài tập lớn
John MacTavish
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
MasterCode.vn
 
Công thức Vật lý đại cương II
Công thức Vật lý đại cương IICông thức Vật lý đại cương II
Công thức Vật lý đại cương II
Vũ Lâm
 
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hìnhBài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
Thanh Hoa
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí
Hong Phuoc Nguyen
 
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đĐề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Bai7 khai trien_taylor
Bai7 khai trien_taylorBai7 khai trien_taylor
Bai7 khai trien_taylor
ljmonking
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiUDCNTT
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhChien Dang
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
viethung094
 
ứNg dụng tích phân tính diện tích và thể tích
ứNg dụng tích phân tính diện tích và thể tíchứNg dụng tích phân tính diện tích và thể tích
ứNg dụng tích phân tính diện tích và thể tíchThế Giới Tinh Hoa
 
Hệ thống thông tin
Hệ thống thông tinHệ thống thông tin
Hệ thống thông tin
vanphong20082002
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
leemindinh
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
Pham Huy
 

What's hot (20)

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
 
Phương pháp nhánh cận
Phương pháp nhánh cậnPhương pháp nhánh cận
Phương pháp nhánh cận
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Hướng dẫn giải bài tập chuỗi - Toán cao cấp
Hướng dẫn giải bài tập chuỗi - Toán cao cấpHướng dẫn giải bài tập chuỗi - Toán cao cấp
Hướng dẫn giải bài tập chuỗi - Toán cao cấp
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Tài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tínhTài liệu tổng kểt môn mạng máy tính
Tài liệu tổng kểt môn mạng máy tính
 
Mẫu báo cáo bài tập lớn
Mẫu báo cáo bài tập lớnMẫu báo cáo bài tập lớn
Mẫu báo cáo bài tập lớn
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Công thức Vật lý đại cương II
Công thức Vật lý đại cương IICông thức Vật lý đại cương II
Công thức Vật lý đại cương II
 
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hìnhBài giảng qui hoạch tuyến tính phương pháp đơn hình
Bài giảng qui hoạch tuyến tính phương pháp đơn hình
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí
 
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đĐề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
Đề tài: Phần mềm quản lý thông tin sinh viên, HOT, 9đ
 
Bai7 khai trien_taylor
Bai7 khai trien_taylorBai7 khai trien_taylor
Bai7 khai trien_taylor
 
Các giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osiCác giao thức sử dụng trong các lớp của mô hình osi
Các giao thức sử dụng trong các lớp của mô hình osi
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
 
ứNg dụng tích phân tính diện tích và thể tích
ứNg dụng tích phân tính diện tích và thể tíchứNg dụng tích phân tính diện tích và thể tích
ứNg dụng tích phân tính diện tích và thể tích
 
Hệ thống thông tin
Hệ thống thông tinHệ thống thông tin
Hệ thống thông tin
 
Phân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàngPhân tích và thiết kế hệ thống quản lý bán hàng
Phân tích và thiết kế hệ thống quản lý bán hàng
 
30 bài toán phương pháp tính
30 bài toán phương pháp tính30 bài toán phương pháp tính
30 bài toán phương pháp tính
 

Viewers also liked

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 automata
Luwx 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ển
Anh 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 Mechanisms
Minh Lê
 
Lecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular LanguagesLecture: Regular Expressions and Regular Languages
Lecture: Regular Expressions and Regular Languages
Marina Santini
 

Viewers also liked (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
 

More from 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-gram
Minh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
Minh Lê
 
Cross-entropy method
Cross-entropy methodCross-entropy method
Cross-entropy method
Minh Lê
 
Parsimony problems
Parsimony problemsParsimony problems
Parsimony problems
Minh Lê
 
Food expert system
Food expert systemFood expert system
Food expert systemMinh Lê
 

More from 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