Các thuật toán để giảm thiểu Moore automata


10

Thuật toán của Brzozowski có thể được mở rộng sang Moore automata nhưng độ phức tạp thời gian của nó nói chung là theo cấp số nhân. Có thuật toán nào khác để giảm thiểu Moore automata không? Thời gian chạy của các thuật toán này là gì nếu có?


Bạn đang đề cập đến thuật toán nào của Brzozowski? Một trong những sử dụng các dẫn xuất của biểu thức thông thường?
J.-E.

2
Chào mừng bạn đến với Khoa học máy tính SE. Vì rõ ràng bạn chưa đọc phần trình bày của trang web, bạn nên biết rằng đó là một công việc hợp tác, dựa trên trao đổi kỹ thuật giữa người dùng đặt câu hỏi và người dùng cung cấp câu trả lời hoặc nhận xét. Do đó, việc trả lời người dùng yêu cầu biết thêm chi tiết trong các bình luận, xem xét các câu trả lời hay hoặc bình luận tốt (hoặc các câu hỏi hoặc câu trả lời thú vị khác mà bạn đọc) và cuối cùng là chấp nhận câu trả lời bạn cho là tốt nhất bằng cách nhấp vào " kiểm tra dấu "(như chữ V) bên trái câu trả lời đã chọn.
babou

Là câu trả lời bất kỳ sử dụng cho bạn?
babou

Câu trả lời:


6

Thuật toán tối thiểu hóa DFA ban đầu thực sự được thiết kế cho Moore Machines , được hướng dẫn bởi hành vi rõ ràng dễ quan sát hơn của chúng. Nhưng thuật toán được trình bày ở đây là một bản dựng lại từ tối thiểu hóa DFA, vì tôi đã phát hiện ra bằng chứng lịch sử sau thực tế.

Sau Wikipedia (với một số thay đổi về công chứng):

Một máy Moore có thể được định nghĩa là 6 tuple bao gồm:(Q,q0,Σ,Π,δ,γ)

  • một tập hợp hữu hạn các trạng tháiQ
  • trạng thái bắt đầu (còn được gọi là trạng thái ban đầu) là một yếu tố của Qq0Q
  • một tập hữu hạn gọi là bảng chữ cái đầu vàoΣ
  • một bộ hữu hạn được gọi là bảng chữ cái đầu raΛ
  • một hàm chuyển đổi ánh xạ một trạng thái và bảng chữ cái đầu vào sang trạng thái tiếp theo δ:Q×ΣQ
  • một hàm đầu ra ánh xạ từng trạng thái vào bảng chữ cái đầu ra γ:QΠ

Từ định nghĩa này, một máy Moore là một bộ chuyển đổi trạng thái hữu hạn xác định.

Tôi không có tài liệu tham khảo để giảm thiểu Moore automata. Tuy nhiên, dường như không quá khó để tưởng tượng một thuật toán, xuất phát từ thuật toán được sử dụng cho automata trạng thái hữu hạn xác định.

Ý tưởng trong tối thiểu hóa DFA dựa trên đặc tính hóa Myhill-Nerode của các ngôn ngữ thông thường .

Cho một ngôn ngữ , và một cặp chuỗi và , xác định một phần mở rộng phân biệt là một chuỗi như vậy mà chính xác một trong hai chuỗi và thuộc về . Xác định mối quan hệ trên chuỗi theo quy tắc iff không có phần mở rộng phân biệt cho và . Thật dễ dàng để chỉ ra rằng là một mối quan hệ tương đương trên các chuỗi và do đó, nó chia tập hợp của tất cả các chuỗi thành các lớp tương đương.x y z x z y z L R L x R L y x y R LLxyzxzyzLRLxRLyxyRL

Định lý Myhill-Nerode nói rằng là chính quy khi và chỉ khi có số lượng các lớp tương đương hữu hạn, và hơn nữa, số lượng trạng thái trong máy tự động hữu hạn xác định nhỏ nhất (DFA) nhận ra bằng với số lượng các lớp tương đương trong .R L L R LLRLLRL

Thật vậy, mỗi trạng thái của DFA nhỏ nhất sao cho như được định nghĩa ở trên là một trong các lớp tương đương cho mối quan hệ .W q R LqWqRL

Đối với một DFA không tối thiểu cho ngôn ngữ thông thường , thật dễ dàng để chỉ ra rằng mỗi bộ chứa các chuỗi đều thuộc cùng một lớp tương đương với .W q R LLWqRL

Do đó, việc tối thiểu hóa DFA thực sự bao gồm các trạng thái hợp nhất (được coi là tập hợp các chuỗi tương đương), bất cứ khi nào có hai trạng thái riêng biệt chứa các chuỗi tương đương.

Hai thuật toán khá nhanh tồn tại cho mục đích đó là thuật toán Moore (1956) trong thời gian và thuật toán Hopcroft (1971) trong thời gian .O(n2)O(nlogn)

Phần mở rộng để Moore automata được hiểu tốt nhất trong việc xác định mối quan hệ tương đương như cho một bộ chuyển đổi . Mối quan hệ liên quan đến việc liệu đầu vào trong tương lai có dẫn đến trạng thái chấp nhận hay không. Các quan hệ tương đương của Moore automata là có liên quan với liệu đầu vào tương lai sẽ cho kết quả tương tự.RTTRLRT

Do đó, với một bộ chuyển đổi và hai chuỗi và , chúng tôi xác định một phần mở rộng phân biệt là một chuỗi sao cho và với , nghĩa là hành vi đầu ra của đầu dò khác với tùy thuộc vào việc nó đi theo hoặc .TxyzT(xz)=T(x)uT(yz)=T(y)vuvzxy

Một lần nữa, là một mối quan hệ tương đương, chia tất cả các chuỗi trong thành các lớp tương đương. Trong trường hợp của máy Moore, các lớp này sẽ lại tương ứng với trạng thái của bộ chuyển đổi tối thiểu.RTΣ

Thuật toán sau bắt chước thuật toán Moore để giảm thiểu DFA.

Chúng tôi định nghĩa một phân vùng ban đầu của thành các lớp trạng thái như sau:PQSe

eΠ:Se={qQγ(q)=e}

Sau đó, chúng tôi chia các lớp trong như sau:P

lặp lại liên tiếp cho từng loại trạng thái , cho đến khi không có thay đổi nào repeat Nếu sau đó không làm gì khác chia thành các tập con sao cho cho mỗi tập hợp con , có một lớp khác nhau rằng (các tập con thay thế trongS
   aΣ,
     SP,qS,δ(q,a)S
     SSi
      SiSPqSi,δ(q,a)S
      SiSP)

Khi không còn lớp nào cần phải phân tách, các lớp trạng thái còn lại sẽ tạo thành trạng thái của máy Moore tối thiểu.

Bằng cách xây dựng, tất cả các trạng thái trong một lớp có cùng một đầu ra là đầu ra cho lớp.

Tương tự, đối với mọi đầu vào , tất cả các trạng thái trong một lớp sẽ chuyển sang một trạng thái nào đó trong cùng một lớp khác, định nghĩa hàm chuyển đổi cho máy Moore tối thiểu.aΣ

Phân tích độ phức tạp: Đặtlà số lượng trạng thái vàkích thước của bảng chữ cái đầu vào. Vòng lặp chính được thực hiện tối đa lần, vì mỗi lần lặp phải chia ít nhất một lớp trạng thái và mỗi lớp chứa ít nhất một trạng thái. Mỗi lần lặp của vòng lặp kiểm tra mỗi trạng thái một số lần hữu hạn và tỷ lệ với số ký hiệu đầu vào. Do đó, độ phức tạp của thuật toán là , giống như thuật toán tối thiểu hóa DFA được dùng làm hướng dẫn cho thuật toán này.s = | Σ | n O ( s n 2 )n=|Q|s=|Σ|
nO(sn2)

Tôi không có bất kỳ tài liệu tham khảo nào cho việc giảm thiểu máy Moore này. Có thể nó được bao gồm trong bài báo của mình:

Moore, Edward F (1956). "Gedanken-thí nghiệm trên các máy tuần tự". Nghiên cứu tự động , Biên niên sử của nghiên cứu toán học (Princeton, NJ: Nhà in Đại học Princeton) (34): 129-153.

Bài viết này là tài liệu tham khảo chính giới thiệu Moore Machines . Nó cũng là tài liệu tham khảo cho thuật toán tối thiểu hóa DFA của Moore . Do đó, sẽ rất đáng ngạc nhiên nếu sự thích ứng của thuật toán với việc tối thiểu hóa Máy Moore ít nhất không được đề xuất trong bài báo đó. Tôi đã kiểm tra bài báo và phiên bản của thuật toán thu nhỏ được trình bày thực sự dành cho máy Moore, không phải cho DFA. Bài viết được viết tốt, nhưng phong cách của thời gian làm cho nó khó đọc hơn một chút. Thật thú vị khi thấy rằng nhiều ý tưởng của lý thuyết Myhill-Nerode của Finite State Machines đã được phác thảo trong bài báo này.

Thuật toán gần đây do John Hopcroft (1971) gần đây có thể thích ứng tương tự với các máy Moore. Không rõ ràng rằng có bất kỳ lý do để xuất bản bản chuyển thể này ở bất cứ đâu và bài báo Hopcroft dường như không có liên quan đến máy Moore.O(snlogn)


@Raphael Một tài liệu tham khảo ... Chà, bạn thật may mắn, tôi đã thiết kế lại thuật toán, vì tôi không có quyền truy cập vào thư viện. Nhưng vì bạn đã yêu cầu một tài liệu tham khảo, tôi đã có cho bạn một. Bạn nên thích nó. Nhưng tôi không chắc chắn tôi sẽ sử dụng nó cho giảng dạy.
babou

@Raphael Bài báo thú vị trong bài trình bày của nó cố gắng rất trực quan, hoạt động nhiều hơn đại số. Tôi không nhớ tất cả các chi tiết về sự đóng góp của Myhill và Nerode (hai năm sau vào năm 1958) và tôi đã không đọc kỹ bài báo (tôi đã đọc lướt qua nó) nhưng tôi tự hỏi liệu lý thuyết này có nên được quy cho Moore không tốt.
babou

2

Một phiên bản thuật toán của Brzozowski sử dụng các dẫn xuất của biểu thức chính quy được đưa ra trong [2], Chương 12, Phần 4, trong đó nó được ghi có vào [4]. Xem [1] và [3] để biết trường hợp tổng quát hơn của các bộ chuyển đổi tiếp theo (thuật ngữ này hơi lỗi thời và thuật ngữ bộ chuyển đổi tuần tự có lẽ phù hợp hơn hiện nay).

[1] C. Choffrut, Tối thiểu hóa các bộ chuyển đổi tiếp theo: một khảo sát, Theoret. Comp. Khoa học. 292 (2003), 131 Từ143.

[2] S. Eilenberg, Automata, Ngôn ngữ và máy móc, tập. A, Nhà xuất bản Học thuật, 1974.

[3] J.-E. Pin, Một hướng dẫn về các chức năng tuần tự . (Trang trình bày)

[4] GN Raney, Hàm tuần tự, JACM 5 (1958), 177 trừ180.


@DW Cảm ơn bạn đã chỉnh sửa. Hoàn hảo.
J.-E.

1

Thuật toán của Brzozowski là một điểm khởi đầu tồi tệ (nếu bạn quan tâm đến thời gian chạy trường hợp xấu nhất không có triệu chứng). Ngay cả Wikipedia cũng nói với bạn rất nhiều:

Như Brzozowski (1963) đã quan sát, việc đảo ngược các cạnh của DFA tạo ra một máy tự động hữu hạn không xác định (NFA) để đảo ngược ngôn ngữ gốc và chuyển đổi NFA này thành DFA bằng cách sử dụng cấu trúc sức mạnh tiêu chuẩn (chỉ xây dựng các trạng thái có thể tiếp cận của DFA được chuyển đổi) dẫn đến một DFA tối thiểu cho cùng một ngôn ngữ đảo ngược. Lặp lại thao tác đảo ngược này lần thứ hai tạo ra một DFA tối thiểu cho ngôn ngữ gốc. Độ phức tạp trong trường hợp xấu nhất của thuật toán Brzozowski là theo cấp số nhân, vì có những ngôn ngữ thông thường mà DFA tối thiểu của sự đảo ngược lớn hơn theo cấp số nhân so với DFA tối thiểu của ngôn ngữ, [6] nhưng nó thường hoạt động tốt hơn trường hợp xấu nhất này.

Thuật toán có thời gian chạy trường hợp xấu nhất theo cấp số nhân ngay cả trên DFA vì nó tính toán một máy tự động cho đảo ngược, có thể phải lớn theo cấp số nhân. Vì vậy, vấn đề của bạn không đến từ phần mở rộng cho đầu dò.

Cố gắng thích ứng với một thuật toán tối thiểu hóa DFA khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.