Thuật toán thu nhỏ DFA bằng cách đưa ra thuyết không điều kiện?


8

Điều này có phần liên quan đến một câu hỏi khác mà tôi đã hỏi , nhưng tôi cảm thấy nó đủ khác biệt để đảm bảo câu hỏi của riêng mình.

Tôi đang thực hiện nghiên cứu trong đó tôi đang cố gắng tìm cấu trúc bổ sung của một loại ngôn ngữ hữu hạn nhất định. Tôi dễ dàng có được các DFA tối thiểu chấp nhận các ngôn ngữ này, nhưng tôi muốn kiểm tra loại NFA cấu trúc nào chấp nhận các langau này có, đặc biệt là cách thức không điều kiện giúp kích thước tự động của nhà nước (DFA lớn theo cấp số nhân).

Vấn đề là, kỹ thuật khử NFA chính sử dụng các phép tương đương, sẽ không tạo ra bất kỳ mức giảm nào nếu tôi bắt đầu với một DFA tối thiểu (vì về cơ bản nó sử dụng cùng một kỹ thuật). Nếu tôi bắt đầu với một DFA không tối thiểu, nó chỉ tạo ra DFA tối thiểu.

Điều tôi băn khoăn là, có thuật toán nào có thể bắt đầu bằng DFA và thu nhỏ nó thành một NFA nhỏ hơn bằng cách đưa ra thuyết không điều kiện? Có "kỹ thuật tiêu chuẩn" để làm điều này?

Tôi đã tìm thấy việc giảm preorder , có vẻ hứa hẹn nhưng khó thực hiện. Tôi mở cho nhiều đề xuất.


có thể nhưng Pspace hoàn tất để tìm NFA tối thiểu cho DFA
vzn

Có nhưng có những kỹ thuật giảm hữu ích nhưng không tìm thấy tối thiểu trong mọi trường hợp. Tôi quan tâm nhiều hơn đến việc làm thế nào không thuyết phục làm giảm kích thước trạng thái hơn là thực sự tìm thấy trường hợp tối thiểu.
jmite

Câu trả lời:


4

Để tìm hiểu hiệu quả, tôi khuyên bạn nên tìm hiểu tài liệu CAD về vấn đề mã hóa trạng thái (gán số nhận dạng nhị phân cho các trạng thái của DFA để giảm thiểu lượng logic cho hàm chuyển trạng thái.) Devadas và Newton, "Phân tách và nhân tố hóa hữu hạn tuần tự các máy trạng thái, " IEEE TCAD , 8 (11): 1206-1217, 1989 chỉ ra rằng có một mối quan hệ chặt chẽ giữa mã hóa trạng thái và phân tách máy trạng thái.

Nếu đối với một DFA có trạng thái, bạn chỉ định một mã định danh trạng thái bit M duy nhất cho mỗi trạng thái ( lg 2 N < M N ), thì về cơ bản bạn đã phân tách DFA thành một mạng gồm các máy M tương tác. Tương đương: bạn đã xác định một tập hợp S với các phần tử M và gán một tập hợp con duy nhất của S cho mỗi trạng thái trong DFA ban đầu của bạn. Đây cũng là những gì thuật toán xây dựng sức mạnh Rabin-Scott làm. Vì vậy, bằng cách thực hiện mã hóa trạng thái trên DFA, chúng tôi đang cố gắng thiết kế ngược lại tập hợp mà thuật toán xây dựng powerset bắt đầu từ đó.NMlg2N<MNMSMS

Trong bài toán mã hóa trạng thái truyền thống, tất cả các mã hóa đều hợp pháp và có một số hàm mục tiêu (liên quan đến lượng logic trong hàm chuyển trạng thái) mà bạn đang cố gắng giảm thiểu. Để tạo NFA, bạn cần giải quyết một phiên bản bị ràng buộc của vấn đề bao vây trong đó:

một mã hóa các mã định danh bit sang các trạng thái DFA đại diện cho một NFA iff cho mỗi ký hiệu trong bảng chữ cái, chức năng chuyển đổi cho mỗi bit là một sự phân tách đơn giản của các bit. (Không cho phép kết hợp hoặc phủ định.)M

Vì vậy, bạn có thể liệt kê tất cả các cắn mã hóa cho tất cả lg 2 N < M N , và kiểm tra xem mỗi một đáp ứng các hạn chế. (Lưu ý rằng đối với M = N , mã hóa "một nóng" tầm thường luôn thỏa mãn các ràng buộc và cung cấp cho bạn DFA.) Mặc dù vậy, phép liệt kê là rất lớn, (sách giáo khoa của Di Micheli cho nó là 2 M !Mlg2N<MNM= =N.) Lý do tôi đề xuất tài liệu CAD là có các kỹ thuật để thực hiện tìm kiếm này thay vì liệt kê (ví dụ: bằng cách sử dụng BDD, xemLin, Touati và Newton, "Đừng quan tâm đến việc giảm thiểu tuần tự đa cấp mạng logic, "Int'l Conf Comp-Aided DsgnICCAD-90: 414-417, 1990.2M!(2M-N)!M!

Thí dụ

Lấy DFA sau, (với mã hóa trạng thái mà tôi có được do gian lận (Tôi đã tạo DFA từ NFA bằng Rabin-Scott và mã hóa đại diện cho các tập hợp con được chọn bởi Rabin-Scott.))

DFA từ Rabin-Scott

Nếu chúng ta gọi các bit trong trạng thái gán ABCD, thì khi ký hiệu đầu vào là 1, hàm chuyển đổi là A = A, B = A, C = B, D = C. Khi ký hiệu đầu vào là 0, hàm chuyển đổi là A = A, C = B, D = C. Đây là một chức năng chuyển tiếp hoàn toàn không phân biệt mà không có sự kết hợp hoặc phủ định, vì vậy mã hóa trạng thái này cung cấp cho chúng ta một NFA. Các trạng thái trong NFA tương ứng một-một với các bit trong mã hóa và chức năng chuyển tiếp được đưa ra:

NFA cho Rabin-Scott

Xây dựng như là vấn đề thỏa mãn boolean

Mô tả không chính thức ở trên dẫn trực tiếp đến một mã hóa như là một vấn đề thỏa mãn boolean. Có một bộ biến mô tả các chuyển đổi trong NFA và một bộ biến cho mã hóa trạng thái DFA sẽ được lấy từ Rabin-Scott cho NFA đã chọn. Các chuyển đổi của DFA cụ thể mà bạn đang cố gắng phân tách được sử dụng để đặt các ràng buộc trên các chuyển đổi NFA.

NSMlg2N<MNySftySftf t SSM2= =32 yy0MộtMột,y1MộtMộty1MộtBy1DMột

xdnndN= =số 8M= =4xkxkMộtxkCxkDxkB là sai.

Tôi<j{Một,B,,D}

(xTôiMộtxjMột)+(xTôiBxjB)++(xTôiDxjD).

TôijSkjtôijtôiko(SN2)

xjA=ysAAxiA+ysBAxiB++ysDAxiDxjB=ysABxiA+ysBBxiB++ysDBxiDxjD=ysADxiA+ysBDxiB++ysDDxiD.

x0A+x0B++x0DfnxiAfA+xiBfB++xiDfDi¬(xjAfA+xjBfB++xjDfD)j


Ý tưởng về kỹ thuật đảo ngược việc xây dựng tập hợp con chính xác là những gì tôi đang tìm kiếm. Nó có vẻ phức tạp, vì vậy tôi sẽ dành thời gian để phân tích nó. Cảm ơn!
jmite

1
Tôi đã cố gắng tìm ra cách cải tổ nó thành một vấn đề SAT, nhưng vẫn chưa dành đủ thời gian cho nó.
Logic lang thang

3

Giảm thiểu NFA là khó, thực sự khó đến nỗi ngay cả xấp xỉ cũng khó; xem Tối thiểu hóa các biểu thức thường xuyên và thường xuyên của NFA theo Gramlich và Schnitger (2005). Bài viết này dường như cũng có một số tài liệu tham khảo hữu ích, ví dụ: Thuật toán giảm NFA theo phương tiện bất bình đẳng thường xuyên của Champarnaud và Coulon (2002) có chứa các kỹ thuật giảm thiểu.


Vâng, tôi ổn nếu đó chỉ là giảm và không phải là giảm thiểu hoàn toàn. Tôi sẽ xem xét, những tài liệu tham khảo trông thực sự tốt mặc dù.
jmite

2

Có tồn tại một số khái niệm về các FSA chính tắc không nhất thiết phải xác định, do đó thể nhỏ hơn DFA tối thiểu. Một ví dụ là các FSA "dư", trong đó người ta có thể tính toán các FSA còn lại theo quy tắc khá trực tiếp, xem F. Denis, A. Lemay và A. Terlutte. "Máy tự động trạng thái hữu hạn còn lại", Fundamenta Informaticae 51 (4): 339-368, 2002 . Một số lựa chọn thay thế tồn tại.


Bạn có thể giải thích máy tính khá trực tiếp? Nó cho rằng việc tính toán FSA dư chuẩn là một vấn đề hoàn chỉnh PSPACE. Điều đó vẫn có thể làm việc cho tôi (máy của tôi khá nhỏ) nhưng tôi cảnh giác với nó.
jmite

Cụ thể, tôi bối rối về cách tôi xác định xem một trạng thái trong máy có "có thể che được" hay không, như được định nghĩa trong trang 17 của bài báo, ngay trước Phần 5 Bổ đề 4.
jmite
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.