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?
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?
Câu trả lời:
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.
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.
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ồm
Đặ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:
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.
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 .)
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.
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 .
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 .
(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ố).
Đ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 .
Đó 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.
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.
Có các định nghĩa về DFA dọc theo dòng
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.
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.