Số lượng ngôn ngữ được chấp nhận bởi một DFA có kích thước bao nhiêu?


19

Câu hỏi rất đơn giản và trực tiếp: Đối với một cố định , có bao nhiêu ngôn ngữ (khác nhau) được chấp nhận bởi một DFA có kích thước (tức là trạng thái)? Tôi sẽ chính thức tuyên bố điều này:n nnnn

Xác định một DFA là , trong đó mọi thứ đều bình thường và là một hàm (có thể là một phần). Chúng ta cần thiết lập điều này vì đôi khi chỉ có các hàm tổng được coi là hợp lệ.δ : Q × Σ Q(Q,Σ,δ,q0,F)δ:Q×ΣQ

Với mọi , hãy xác định mối quan hệ (tương đương) trên tập hợp tất cả các DFA là: if và .~ n Một ~ n B | Một | = | B | = n L ( A ) = L ( B )n1~nMột~nB|Một|= =|B|= =nL(Một)= =L(B)

Câu hỏi đặt ra là: với một cho , chỉ số của gì? Nghĩa là, kích thước của tập hợp ?~ n { L ( A ) | Một  là một DFA kích thước  n }n~n{L(Một)|Một là một DFA có kích thước n}

Ngay cả khi là một hàm tổng, nó dường như không phải là một số dễ dàng (ít nhất là đối với tôi). Biểu đồ có thể không được kết nối và các trạng thái trong thành phần được kết nối có chứa trạng thái ban đầu đều có thể được chấp nhận, vì vậy, ví dụ, có nhiều biểu đồ có kích thước chấp nhận . Tương tự với các kết hợp tầm thường khác cho ngôn ngữ trống và các ngôn ngữ khác có DFA tối thiểu có ít hơn trạng thái.δΣ * nnΣ*n

(Một ngây thơ) đệ quy dường như cũng không hoạt động. Nếu chúng ta lấy DFA có kích thước và thêm trạng thái mới, thì, nếu chúng ta muốn giữ tính xác định và làm cho biểu đồ mới được kết nối (để cố gắng tránh các trường hợp tầm thường), chúng ta phải xóa một chuyển đổi để kết nối trạng thái mới, nhưng trong trường hợp đó chúng ta có thể mất ngôn ngữ gốc.k

Có suy nghĩ gì không?

Chú thích. Tôi đã cập nhật lại câu hỏi, với một tuyên bố chính thức và không có các yếu tố gây mất tập trung trước đó.


Chỉ cần làm rõ: Bạn có nghĩa là "có bao nhiêu ngôn ngữ khác nhau mà một người có thể định nghĩa bằng cách sử dụng trạng thái?", Trong đó một ngôn ngữ được xác định bằng trạng thái nếu có một DFA với trạng thái chấp nhận nó. Ngoài ra, đối với các biểu thức chính quy, regex "a * aaaaaa" chắc chắn có> 1 phép nối, nhưng DFA chỉ cần một trạng thái (hai nếu bạn cần một bồn rửa riêng), phải không? n nnnn
Evgenij Thorstensen

Lời xin lỗi: Đối với ví dụ regex, nó phải là "a a a a a *", vì điều đó cho phép bất kỳ số nào.
Evgenij Thorstensen

Định nghĩa của xuất hiện rất liên quan đến khái niệm "độ sâu chấm", ngoại trừ khái niệm đó thường được áp dụng cho các ngôn ngữ không có sao (có thể vì những lý do mà @Evgenij Thorstensen đã nêu ra). c(r)
mhum

1
Quan sát tầm thường: trạng thái có thể được sử dụng để xác định ít nhất ngôn ngữ khác nhau. n+12n
Evgenij Thorstensen

2
Chúng ta có thể nhận được nhiều hơn một chút, vì vậy có vẻ ổn. Nhưng số lượng automata trạng thái n là khoảng (giả sử ). Chúng ta có thể nhận được không? 2Ω(n)ncn2n= =2cnđăng nhậpn+n= =2Θ(nđăng nhậpn)|Σ|= =c2ω(n)
Kaveh

Câu trả lời:


20

Tôi nghĩ rằng câu hỏi này đã được nghiên cứu trước đây. Mike Domaratzki đã viết một cuộc khảo sát về nghiên cứu trong lĩnh vực này: "Bảng liệt kê các ngôn ngữ chính thức", Bull. ĂN, tập. 89 (tháng 6 năm 2006), 113-133: http://www.eatcs.org/images/bulletin/beatcs89.pdf


4
Bài viết giải quyết chính xác câu hỏi được hỏi, từ trang 120 trở đi. Đó là chức năng và bài báo đưa ra các giới hạn khá chặt chẽ (gần với những gì Kaveh đề cập ở trên) về nó, mặc dù tôi chưa hít vào tất cả các chi tiết. gk(n)
Evgenij Thorstensen

1
Thật. Những gì chúng ta muốn, sau đó là , hoặc, theo mối quan hệ đã cho, , là số lượng DFA tối thiểu không đồng hình cặp với trạng thái trên bảng chữ cái -letter. Tôi cũng không nhìn vào nó một cách chi tiết, nhưng có vẻ như chỉ có giới hạn được biết, không phải là số lượng chính xác. gk(n)fk(n)nk
Janoma

6
g1(n)1n10g2(n)1n6g3(n)1n4
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.