✖

Tối thiểu hoá ôtômat

Tối thiểu hoá ôtômat là tìm một ôtômat tương đương có số trạng thái nhỏ nhất có thể. Ngay cả ôtômat không có trạng thái thừa nào vẫn có thể rút gọn thêm.

Ví dụ

Xét ôtômat sau:

Ôtômat này chỉ đoán nhận các xâu 01 và 11. Rõ ràng có một ôtômat đơn giản hơn với ba trạng thái đoán nhận cùng ngôn ngữ đó. Có thể gộp hai trạng thái q1 và q2 thành một trạng thái mới {q1, q2}: các phép chuyển trước đây đi vào q1 hoặc q2 sẽ đi vào trạng thái mới, các phép chuyển xuất phát từ q1 và q2 cũng vậy. Ta được ôtômat sau:

Rõ ràng ôtômat này đoán nhận cùng ngôn ngữ với ôtômat trước, đồng thời có ít trạng thái hơn.

Trạng thái tương đương

Cho ôtômat A = ⟨Q, Σ, δ, q0, F⟩. Ngôn ngữ của trạng thái q ∈ Q, kí hiệu L(q), được định nghĩa là

L(q)=L(⟨Q,Σ,δ,q,F⟩)

Tức là ta đổi trạng thái bắt đầu của ôtômat A từ q0 thành q và tìm ngôn ngữ mà ôtômat này đoán nhận. Nói cách khác, ngôn ngữ L(q) gồm mọi xâu w sao cho trong ôtômat A, xuất phát từ trạng thái q và đọc xâu w, ta đến một trạng thái kết thúc của ôtômat. Với ôtômat ở trên, L(q1) = {1}.

Ta nói hai trạng thái khác nhau q1 và q2 là tương đương nếu

L(q1)=L(q2)

Điều này có nghĩa là gì? Nếu hai trạng thái q1, q2 tương đương, thì khi lấy chúng làm trạng thái bắt đầu của ôtômat, chúng sẽ cho cùng một ngôn ngữ. Nói cách khác: nếu ôtômat ở cấu hình ⟨q1, w⟩ hoặc ⟨q2, w⟩, thì trong cả hai trường hợp nó phải cùng đoán nhận hoặc cùng từ chối.

Quay lại ôtômat ở trên: hai trạng thái q1 và q2 tương đương, vì khi ở trạng thái q1, ta chỉ có thể đoán nhận xâu vào nếu phần xâu chưa đọc bằng 1. Ở trạng thái q2 cũng vậy.

Như vậy, khi tối thiểu hoá ôtômat, ta cần tìm các trạng thái tương đương và loại bỏ chúng bằng cách gộp chúng thành một trạng thái mới, như đã làm ở ví dụ trên.

Cách tìm các trạng thái tương đương

Những trạng thái nào chắc chắn không tương đương? Một trạng thái kết thúc và một trạng thái không kết thúc chắc chắn không tương đương, vì ngôn ngữ của trạng thái kết thúc khác ngôn ngữ của trạng thái không kết thúc – trạng thái kết thúc chắc chắn đoán nhận xâu ε, còn trạng thái không kết thúc thì không. Ta xem ngay cách làm qua một ví dụ. Cho ôtômat sau:

Ta bắt đầu bằng việc tạo hai tập trạng thái

S1=F={q3,q6},S2=Q∖F={q0,q1,q2,q4,q5}.

Bây giờ ta lập bảng các phép chuyển và giữ thông tin về các nhóm S1 và S2:

nhómtrạng thái01S1q3q5q4q6——S2q0q1q2q1—q3q2—q3q4q6—q5q6—

Bây giờ ta sửa bảng: thay vì ghi trực tiếp trạng thái mà ta đi đến ứng với mỗi kí hiệu, ta chỉ ghi nhóm mà ta đi đến. Chẳng hạn, từ trạng thái q3 với kí hiệu 0 ta đến trạng thái q5, thuộc nhóm S2. Vì vậy, thay cho q5 ta ghi S2 vào bảng:

nhómtrạng thái01S1q3S2S2q6——S2q0S2S2q1—S1q2—S1q4S1—q5S1—

Bây giờ ta chia nhỏ tiếp cả hai nhóm. Ta luôn xếp vào cùng một nhóm những trạng thái mà với mọi kí hiệu đều đi đến cùng một nhóm. Chẳng hạn, hai trạng thái q3 và q6 sẽ không cùng nhóm, vì cả với 0 lẫn với 1 chúng đều không đi đến cùng một nhóm. Ngược lại, hai trạng thái q1 và q2 sẽ cùng nhóm, vì cả hai đều không có phép chuyển ứng với 0 và cả hai đều đi đến nhóm S1 ứng với 1. Ta được các nhóm mới:

nhómtrạng thái01q3S2S2q6——q0S2S2q1—S1q2—S1q4S1—q5S1—

Trong mỗi nhóm, các phép chuyển đều giống nhau. Ta đặt tên các nhóm mới và lại xác định xem các trạng thái đi đến nhóm mới nào:

nhómtrạng thái01S1q3S5S5S2q6——S3q0S4S4S4q1—S1q2—S1S5q4S2—q5S2—

Lúc này ta chia nhỏ các nhóm thêm một lần nữa. Nhưng ta thấy không thể chia thêm được, vì sẽ được đúng các nhóm như cũ – hai trạng thái q1 và q2 tuy có cùng phép chuyển giữa các nhóm, nhưng đã ở cùng một nhóm và nhóm S4 không có trạng thái nào khác. Thuật toán tìm trạng thái tương đương kết thúc. Từ mỗi nhóm, ta chỉ cần chọn một trạng thái, xoá các trạng thái còn lại, và mọi phép chuyển trước đây đi vào các trạng thái đã xoá sẽ đi vào trạng thái được chọn.

Chẳng hạn, ta có thể chọn ôtômat mới có các trạng thái q3, q6, q0, q1, q4 và loại bỏ các trạng thái q2 và q5. Mọi phép chuyển trước đây đi vào q2 bây giờ đi vào q1, và mọi phép chuyển trước đây đi vào q5 bây giờ đi vào q4:

Các bước tối thiểu hoá ôtômat

  1. Loại bỏ các trạng thái không đến được,
  2. loại bỏ các trạng thái thừa,
  3. loại bỏ các trạng thái tương đương.

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