Trong một DFA, có phải mọi tiểu bang đều có sự chuyển đổi trên mọi biểu tượng của bảng chữ cái không?


12

Nếu không, thì nó có nghĩa gì khi đối với một số trạng thái và một số ký hiệu , không tồn tại?qaδ(q,a)


Tôi sẽ gọi một máy tự động không xác định không bao giờ có nhiều chuyển đổi trên cùng một trạng thái xác định và ký hiệu đầu vào. Nó chỉ không phù hợp với định nghĩa DFA.
rebierpost

1
Nếu các quy tắc của DFA được sắp xếp sao cho nó không bao giờ có thể ở trạng thái q khi ký hiệu trên băng là a , chúng ta có thực sự cần xác định (q, a) không?
Peter Shor

4
Câu trả lời rõ ràng là nó phụ thuộc vào cách người ta định nghĩa "máy tự động hữu hạn xác định". Như vậy, tôi không chắc chắn rằng câu hỏi này hoàn toàn mang tính xây dựng, vì không có câu trả lời đúng được chấp nhận rộng rãi - nghĩa là câu hỏi này thu hút ý kiến ​​và tranh luận.
Patrick87

1
Nếu được coi là một hàm , thì nó phải được xác định cho tất cả các cặp . δq,a
vonbrand

Theo quan niệm của tôi về DFA, đây là điều kiện "hủy bỏ" hoặc nếu bạn thích một bước nhảy ngầm đến trạng thái "từ chối".
Yves Daoust

Câu trả lời:


22

Bạn dường như đã vấp phải một vấn đề gây tranh cãi. Rõ ràng các nhà khoa học máy tính thích tranh luận. Tôi chắc chắn thích tranh luận, vì vậy ở đây đi!

Câu trả lời của tôi là không rõ ràng: Không. Một automata hữu hạn xác định không cần chuyển đổi từ mọi trạng thái cho mọi biểu tượng. Ý nghĩa khi không tồn tại chỉ đơn giản là DFA không chấp nhận chuỗi đầu vào.δ(q,a)

Mặc dù bạn có thể tạo một định nghĩa về DFA yêu cầu tồn tại, nhưng đơn giản không phải là trường hợp chuyển đổi bị thiếu làm cho cấu trúc kết quả (bất cứ điều gì bạn gọi nó) theo bất kỳ cách nào không phổ biến như nhiều người bình luận đang tuyên bố. Nếu bạn đang tham gia một khóa học về lý thuyết automata thì chủ đề tiếp theo sẽ là các ngôn ngữ không ngữ cảnh và automata đẩy xuống trong đó sự khác biệt giữa automata không xác định và xác định là rất quan trọng, và bạn cần sử dụng định nghĩa chính xác của tính không xác định.δ(q,a)

Không xác định có liên quan đến việc có nhiều hơn một quá trình chuyển đổi hợp pháp.

Tôi nghĩ tất cả chúng ta đều đồng ý với định nghĩa Wikipedia sau đây (mà tôi sẽ chỉ trong một giây là hơi mơ hồ):

Một máy tự động hữu hạn xác định là 5 tuple, ( , , , , ), bao gồmMQΣδq0F

  1. một tập hợp hữu hạn các trạng thái ( )Q
  2. một tập hợp hữu hạn các ký hiệu đầu vào được gọi là bảng chữ cái ( )Σ
  3. một chức năng chuyển đổi ( )δ:Q×ΣQ
  4. trạng thái bắt đầu (q0Q)
  5. một tập hợp các trạng thái chấp nhận ( ).FQ

Đặt là một chuỗi trên bảng chữ cái . Máy tự động chấp nhận chuỗi nếu một chuỗi các trạng thái, , tồn tại trong với các điều kiện sau:w=a1a2anΣMwr0,r1,,rnQ

  1. r0=q0
  2. ri+1=δ(ri,ai+1)i = 0 , Mạnh , n - 1 , vớii=0,,n1
  3. rnF .

Sự mơ hồ và tranh cãi là về sự sai lệch của chức năng chuyển đổi, (số "3" trong danh sách gạch đầu tiên .) Chúng ta đều đồng ý rằng điều khác biệt giữa DFA với NFA là là một chức năng chứ không phải là một chức năng chứ không phải là một chức năng chứ không phải là một quan hệ . Nhưng là hàm một phần hay hàm tổng ?δdelta deltaδδ

Định nghĩa của DFA chỉ hoạt động tốt nếu là một phần chức năng. Đưa ra một chuỗi đầu vào, nếu bạn đạt đến trạng thái với ký hiệu đầu vào trong đó không có trạng thái tiếp theo thì automata đơn giản không chấp nhận.δqiaj

Ngoài ra, khi bạn mở rộng định nghĩa này để tạo định nghĩa về automata đẩy xuống, đó sẽ là trường hợp bạn phải phân biệt rằng automata đẩy xuống với các hàm chuyển đổi là các hàm một phần được phân loại là xác định, không phải là không xác định.

Nếu hàm một phần làm phiền bạn thì đây là một phép biến đổi nhỏ làm cho thành hàm tổng. (Phép biến đổi này không giống như thuật toán xây dựng tập hợp con, nó thêm vào hầu hết các trạng thái O (1), là tuyến tính trong số trạng thái ban đầu và có thể được mở rộng để làm việc với các PDA. Không có sự thật nào trong số đó là đúng với thuật toán xây dựng tập hợp con .)δ

  1. thêm trạng tháiqerror
  2. với mọi cặp trong đó không xác định, xác định .(qi,sj)δδ(qi,sj)=qerror

Máy tự động này có là một hàm tổng và chấp nhận và từ chối chính xác cùng một bộ trạng thái mà máy tự động ban đầu của bạn chấp nhận và từ chối.δ

Chỉnh sửa, tháng 1 năm 2019

Bình luận viên @Alex Smart phê bình chính xác tôi vì không đưa ra tài liệu tham khảo, cũng không giải thích lý do tại sao chúng ta nên quan tâm. Vì vậy, ở đây đi:

Lý do chúng tôi quan tâm đến định nghĩa chính xác của chủ nghĩa xác định so với chủ nghĩa không xác định, là một số lớp của automata không xác định mạnh hơn so với anh em họ xác định của họ, và một số lớp của automata không xác định không mạnh hơn anh em họ xác định. Đối với máy automata và Turing hữu hạn, các biến thể xác định và không xác định có sức mạnh tương đương. Đối với automata đẩy xuống, có những ngôn ngữ mà sự khác biệt là quan trọng: Có NPDA chấp nhận ngôn ngữ và không DPDA nào chấp nhận ngôn ngữ. Đối với automata giới hạn tuyến tính, câu hỏi là (hoặc lần cuối tôi đã kiểm tra) mở. Sự gia tăng sức mạnh của NPDA so với DPDA đến từ việc cho phép nhiều người chuyển đổi, không phải từ chuyển chức năng chuyển đổi từ chức năng tổng thể sang chức năng một phần.

Sách từ cộng đồng biên dịch:

Aho và Ullman, Nguyên tắc thiết kế trình biên dịch , 1977: Đầu tiên định nghĩa NFA (trang 88) với mối quan hệ chuyển tiếp, sau đó (trang 90-91):

Chúng tôi nói một máy tự động hữu hạn là xác định nếu 1. Nó không có chuyển đổi trên đầu vào . 2. Đối với mỗi trạng thái và biểu tượng đầu vào , có ít nhất một cạnh được dán nhãn rời .ϵsaas

Aho, Sethi và Ullman, Trình biên dịch, nguyên tắc, công cụ và công cụ , tái bản năm 1988, tương tự, trước tiên, nó định nghĩa NFA với mối quan hệ chuyển tiếp, sau đó (trang 115-116):

Một xác định hữu hạn automata (DFA, cho ngắn) là một trường hợp đặc biệt của một automaton finitie không xác định, trong đó ... có ít nhất một cạnh được dán nhãn rời .as

(Lưu ý rằng trong các bình luận @Alex Smart nói, "con rồng đặc biệt đề cập rằng chức năng này là toàn bộ." Tôi cho rằng anh ta đang nói về phiên bản sau với đồng tác giả Lam, hiện tại tôi không có quyền truy cập. )

Appel, Triển khai trình biên dịch hiện đại trong Java , 1988 (trang 22):

Trong một máy tự động hữu hạn xác định (DFA), không có hai cạnh rời khỏi cùng một trạng thái được dán nhãn bằng cùng một ký hiệu.

Sau đó, Appel tiếp tục giải thích rằng khi sử dụng DFA để nhận ra các trận đấu dài nhất, chúng tôi sử dụng rõ ràng các chuyển đổi bị thiếu để quyết định khi nào dừng (trang 23):

khi đạt đến trạng thái chết (trạng thái không chính thức không có chuyển đổi đầu ra), các biến [ghi lại trận đấu dài nhất mà chúng ta đã thấy cho đến nay] cho biết mã thông báo nào được khớp và nơi kết thúc.

Sách từ cộng đồng lý thuyết chuyển mạch:

Kohavi, Chuyển mạch và lý thuyết tự động hữu hạn, 2 / e , 1978, tr. 611 nói:

Bởi vì sơ đồ trạng thái mô tả một máy xác định , quá trình chuyển đổi trạng thái tiếp theo phải được xác định duy nhất bởi trạng thái hiện tại và ký hiệu đầu vào được quét hiện tại.

Tôi thường giải thích duy nhất có nghĩa là "chính xác một", không phải "không nhiều hơn một". (Tức là, Kohavi dường như đang nói rằng chủ nghĩa quyết định đòi hỏi một chức năng tổng thể)

Sách từ cộng đồng lý thuyết tính toán:

Ở đây dường như phổ biến hơn để xác định DFA trước NFA và yêu cầu DFA phải có chức năng chuyển đổi tổng thể, nhưng sau đó xác định NPDA trước DPDA và định nghĩa "tính xác định" là hạn chế của mối quan hệ chuyển đổi thành không có nhiều hơn -một mục nhập cho mỗi cặp trạng thái / biểu tượng.

Điều này đúng với Hopcroft và Ullman, 1979, Lewis và Papadimitriou, 1981, và đặc biệt là Sipser, 2006, người sử dụng định nghĩa của DFA về mặt sư phạm để đưa ra các định nghĩa chính thức chính xác, và giải thích tầm quan trọng của họ và nói rõ ràng (tr.36):

hàm chuyển đổi, , chỉ định chính xác một trạng thái tiếp theo cho mỗi kết hợp có thể có của trạng thái và ký hiệu đầu vào.δ

Điều này dường như để theo sự phát triển lịch sử. Automata hữu hạn xác định đã được giới thiệu trong những năm 40 và 50. Rabin và Scott không giới hạn tự động đã được giới thiệu trong bài báo của Rabin và Scott, "Finite automata và các vấn đề quyết định của họ, IBM J. Rupr và Dvpt , 3 (2): 114-125, 1959. Theo các tác giả trước đó, Rabin và Scott xác định automata hữu hạn (mà họ gọi là automata thông thường ) là có chức năng chuyển tiếp "được xác định trên sản phẩm Cartesian của tất cả các cặp trạng thái và ký hiệu." (mà tôi sẽ hiểu là hàm tổng số).s×Σ

Điều thú vị là Rabin và Scott, cũng xác định automata hữu hạn không xác định theo hàm tổng! Trang 120, Định nghĩa 9:

Một không xác định (hữu hạn) automaton ... là một hệ thống nơi ... là một chức năng [!] Của với các giá trị trong tập hợp của tất cả các tập con của .MS×ΣS

Đó là: hàm chuyển đổi là tổng số không làm cho hệ thống xác định!

Sipser 2006 theo Rabin và Scott và sử dụng chức năng chuyển đổi tổng thể từ trạng thái / ký hiệu sang tập hợp sức mạnh cho các định nghĩa của ông về máy tự động hữu hạn không xác định, máy tính không xác định và máy Turing không xác định, nhưng bỏ qua chủ đề xác định PDA.

Cả Hopcroft và Ullman, 1979, và Lewis và Papadimitriou, 1981 đều sử dụng các chức năng một phần trong định nghĩa của họ về các thiết bị PDA xác định. Đầu tiên, họ xác định NPDA có mối quan hệ chuyển tiếp, và sau đó khi họ đến với các thiết bị PDA, Lewis và Papadimitriou nói (trang 135),

Máy tự động đẩy xuống có tính xác định , nói theo trực giác, nếu có nhiều nhất một chuyển đổi áp dụng cho mỗi cấu hình.

Trong khi Hopcroft và Ullman nói (trang 112):

PDA ... mang tính quyết định theo nghĩa là có thể di chuyển nhiều nhất từ ​​bất kỳ ID nào.


Bạn đang tự động xác định khi bạn thêm trạng thái . Chúng tôi luôn có thể chuyển đổi NFA thành DFA. Bạn nói đúng về một điều: hàm một phần hay hàm tổng? Hầu hết các nhà toán học có nghĩa là tổng hàm khi họ nói hàm. Họ nói hàm một phần khi chúng không có nghĩa là hàm tổng. Đó là lý do tại sao tôi nghĩ rằng chúng ta cần bao gồm định nghĩa chính thức cho câu hỏi. qerror
scaaahu

2
Phiên bản chức năng một phần là phiên bản được đưa ra trong Hopcroft và Ullman, nếu điều đó tạo ra sự khác biệt. Vì vậy, ý tưởng rằng một chức năng một phần vốn không phải là không có nghĩa là tiêu chuẩn.
jmite

1
@jmite Không phải là một phần chức năng ngụ ý không thuyết phục; đó là tổng số hàm ngụ ý tính xác định làm cho tổng số hàm là sự lựa chọn tốt hơn. Tất nhiên, đó là vấn đề ít nhiều tùy tiện trong các định nghĩa bạn đang sử dụng.
Patrick87

3
δ

1
Như bạn đã chỉ ra, phiên bản chức năng một phần có bản dịch dễ dàng thành tổng số phiên bản chức năng và theo như tôi có thể thấy bạn hoàn toàn không đạt được gì, về mặt sư phạm hoặc bằng cách khác cho phép chức năng dịch là một phần. Con rồng đặc biệt đề cập rằng chức năng là tổng số. Tại sao trên thế giới chúng ta tạo ra một cuộc tranh luận về một điều gì đó đã được xác định rõ ràng trong một cuốn sách giáo khoa tiêu chuẩn mà hầu hết mọi người tuân theo khi hoàn toàn không có gì để đạt được khi chọn một định nghĩa không chuẩn?
Alex thông minh

8

δ(q,a)qQaΣQΣ

ε

Về khả năng tính toán, NFA tương đương với DFA - có một thuật toán để chuyển đổi từ NFA sang DFA và DFA chỉ là một NFA tầm thường không sử dụng bất kỳ ngôn ngữ không phổ biến nào, vì vậy cả hai đều xác định bộ ngôn ngữ thông thường.


2
Điều này phụ thuộc vào định nghĩa; có một số tương đương với sức mạnh.
Raphael

3
+1 Tốt nhất để tuân theo định nghĩa này, IMHO, vì mọi người sẽ đồng ý rằng FA xác định chính xác một chuyển đổi cho mỗi cặp (trạng thái, ký hiệu) tạo thành một DFA hợp lệ.
Patrick87

1
Và định nghĩa này hoàn toàn sai khi bạn cố gắng mở rộng nó để quyết định liệu một ngôn ngữ tự do ngữ cảnh là xác định hay không xác định. Một automata đẩy xuống với các chuyển tiếp bị thiếu luôn có thể được chuyển đổi thành một automata đẩy xuống với chính xác một chuyển đổi cho mỗi biểu tượng trạng thái / đầu vào / biểu tượng ngăn xếp. Một automata đẩy xuống không đặc biệt với nhiều chuyển đổi có thể có trên mỗi trạng thái / biểu tượng đầu vào / biểu tượng ngăn xếp không nhất thiết có thể được chuyển đổi thành một automata đẩy xuống xác định. (Ví dụ: trong trường hợp ngôn ngữ được công nhận là không có bối cảnh không xác định.)
Logic lang thang

2
@jmite Chỉ cần xác định trim automata độc lập với DFA. Tôi nghĩ điều quan trọng hơn nhiều là các DFA tối thiểu có số lượng trạng thái phù hợp theo định lý Myhill-Nerode, mà bạn chỉ nhận được với các trạng thái chết.
Patrick87

4
ϵϵϵ

6

Có các định nghĩa về DFA dọc theo dòng

A|δ(q,a)|1qaδ(q,ε)δ(q,a)=aΣA

Trong trường hợp đó, bạn không cần tất cả các hiệu ứng chuyển tiếp. Nếu máy tự động không có chuyển đổi phù hợp với biểu tượng đầu vào tiếp theo, nó sẽ từ chối.

Đây là một bài tập hay để chỉ ra rằng cả hai định nghĩa đều tương đương nhau về mặt ngôn ngữ có thể được chấp nhận.


Tôi nghĩ rằng câu hỏi của OP cần được chỉnh sửa để bao gồm định nghĩa chính thức về DFA.
scaaahu

0

Trong định nghĩa của DFA, mọi tiểu bang nên có tất cả bảng chữ cái tính bằng £. Ví dụ: nếu £ = {a, b, c} và Q = {q0, q1, q2}, tất cả các trạng thái này phải có tất cả các ký hiệu a, b, c chuyển sang trạng thái khác hoặc cùng trạng thái.


1
Có gì khác biệt so với câu trả lời hiện có để bạn đăng câu trả lời mới?
xskxzr

0

Câu trả lời đơn giản nhất cho điều này là, bạn thêm trạng thái chết cho biểu tượng bên trái . Khi chuyển đổi từ NFA sang DFA, chúng tôi nhận được chuyển đổi cho một số biểu tượng, biểu thị chúng tôi tạo trạng thái Chết cho nó.

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.