✖

Trạng thái không đến được

Ôtômat hữu hạn có thể có những trạng thái mà ta không thể đi đến. Các trạng thái như vậy gọi là trạng thái không đến được. Thường ta muốn loại bỏ chúng, vì chúng chỉ làm ôtômat rườm rà thêm.

Ví dụ về trạng thái không đến được

Cho ôtômat sau:

Ta thấy dù làm gì đi nữa, ta cũng không bao giờ đến được trạng thái q3, vì không có phép chuyển nào đi vào trạng thái đó. Ta nói trạng thái q3 là không đến được. Câu hỏi: trạng thái q3 có đến được không nếu có một phép chuyển từ một trạng thái khác đi vào nó? Nếu vẽ một cạnh từ một trong các trạng thái q0, q1, q2, q5 thì trạng thái này sẽ đến được. Nếu ta thêm một nút nữa và vẽ phép chuyển từ nút đó…

…thì tất nhiên cả hai trạng thái q3 và q4 đều không đến được.

Định nghĩa trạng thái không đến được

Trước hết ta định nghĩa trạng thái đến được. Cho ôtômat hữu hạn A = ⟨Q, Σ, δ, q0, F⟩. Ta nói trạng thái q ∈ Q là đến được nếu tồn tại xâu w ∈ Σ∗ sao cho

⟨q0,w⟩↦∗⟨q,ε⟩.

Trạng thái q ∈ Q là không đến được nếu nó không phải là trạng thái đến được.

Cách loại bỏ trạng thái không đến được

Nếu ôtômat đã có trạng thái không đến được, nên loại bỏ chúng. Ta xây dựng ôtômat tương đương A′ = ⟨Q′, Σ, δ′, q0, F′⟩ không có trạng thái không đến được.

Ta xây dựng dần tập các trạng thái đến được. Bắt đầu với tập S0 = {q0}, vì trạng thái bắt đầu chắc chắn đến được. Tập tiếp theo được xây dựng như sau:

Si={r|δ(q,a)=r với một cặp q∈Si−1,a∈Σ}∪Si−1

Nói bằng lời, tập S0 luôn cho trước; để xây dựng tập S1, ta lấy mọi trạng thái của tập S0 và tìm xem các phép chuyển ứng với mọi kí hiệu thuộc Σ dẫn đến đâu. Lấy hợp các trạng thái này với tập ban đầu S0. Làm tương tự, ta tìm được tập S2 và các tập tiếp theo. Rõ ràng Si − 1 ⊆ Si.

Khi đó tập các trạng thái đến được là:

⋃i=1∞Si

Lấy hợp của vô hạn tập Si thoạt nhìn có vẻ lạ, nhưng ôtômat chỉ có hữu hạn trạng thái. Điều đó có nghĩa là đến một lúc nào đó, các tập Sj, Sj + 1 và mọi tập sau đó sẽ bằng nhau, nên dù lấy hợp của vô hạn tập, ta vẫn có thể được một tập trạng thái hữu hạn.

Quay lại ôtômat

và thử tìm tập các trạng thái đến được. Trước hết ta đặt

S0={q0}

Bây giờ ta tính tập S1. Cần tìm mọi phép chuyển từ trạng thái q0 và thêm các trạng thái đích của chúng vào tập S0. Vì q0 → a q1 và q0 → bq2, nên tập S1 có thêm các trạng thái q1 và q2:

S1={q0,q1,q2}

Tiếp theo ta xây dựng tập S2. Ta xét xem từ các trạng thái q0, q1, q2 có thể đến những đâu. Trạng thái mới duy nhất là q5, đến được từ trạng thái q1:

S2={q0,q1,q2,q5}

Tiếp theo ta xây dựng tập S3. Từ các trạng thái q0, q1, q2, q5 có đến được trạng thái mới nào không? Không, nên tập S3 có cùng các phần tử với S2:

S3={q0,q1,q2,q5}

Vì S2 = S3 nên S3 = S4 = S5 = … Lấy hợp của mọi Si, ta được tập S2, vì không tập nào sau đó có thêm phần tử mới.

Vậy tập các trạng thái đến được của ôtômat là {q0, q1, q2, q5}. Tập các trạng thái không đến được ta tìm bằng phép hiệu hai tập hợp:

Q∖⋃i=1∞Si

Tập các trạng thái không đến được của ôtômat này là {q3, q4}. Ta loại bỏ khỏi ôtômat A mọi trạng thái không đến được và mọi phép chuyển có liên quan đến trạng thái không đến được. Tức là ôtômat A′ = ⟨Q′, Σ, δ′, q0, F′⟩ không có trạng thái không đến được, tương đương với ôtômat A = ⟨Q, Σ, δ, q0, F⟩, được định nghĩa như sau:

  • Q′=⋃i=1∞Si
  • ∀q ∈ Q′, a ∈ Σ:  δ′(q, a) = δ(q, a)
  • F′=F∩Q′=F∩⋃i=1∞Si

Tài liệu tham khảo

Mục lục: Trạng thái không đến được, Trạng thái thừa, Tối thiểu hoá ôtômat