Sự giác ngộ mà tôi phải đạt được sau khi nghiên cứu automata hữu hạn là gì?


247

Tôi đã xem lại Lý thuyết tính toán cho vui và câu hỏi này đã làm tôi khó chịu trong một thời gian (buồn cười không bao giờ nghĩ về nó khi tôi học Lý thuyết Automata khi học đại học). Vậy "tại sao" chính xác là chúng ta nghiên cứu automata hữu hạn xác định và không xác định (DFA / NFA)? Vì vậy, đây là một số câu trả lời tôi đã đưa ra sau khi giải trí nhưng vẫn không thấy đóng góp chung của họ cho khoảnh khắc 'aha':

  1. Để nghiên cứu những gì họ đang có và không có khả năng tức là những hạn chế
    • Tại sao?
  2. Vì chúng là các mô hình cơ bản của tính toán lý thuyết và sẽ đặt nền tảng của các mô hình tính toán có khả năng khác.
    • Điều gì làm cho chúng 'cơ bản'? Có phải là họ chỉ có một chút lưu trữ và chuyển trạng thái?
  3. Được rồi, vậy thì sao? Làm thế nào để tất cả những điều này góp phần trả lời câu hỏi về khả năng tính toán? Có vẻ như các máy Turing giúp hiểu điều này thực sự tốt và có những mô hình tính toán 'nhỏ hơn' như PDA, DFA / NFA / Regexes, v.v. Nhưng nếu người ta không biết FA thì họ đang bỏ lỡ điều gì?

Vì vậy, mặc dù tôi 'hiểu được' ở một mức độ nào đó, tôi không thể tự trả lời câu hỏi này? Làm thế nào tốt nhất bạn sẽ giải thích 'tại sao nghiên cứu D / N-FA'? Câu hỏi họ tìm cách trả lời là gì? Nó giúp ích như thế nào và tại sao nó là điều đầu tiên được dạy trong Lý thuyết Automata?

Tái bút: Tôi biết về các ứng dụng từ điển và trình so khớp mẫu khác nhau có thể được triển khai như vậy. Tuy nhiên, tôi không muốn biết nó có thể được sử dụng cho thực tế nhưng lý do sử dụng / phát minh / thiết kế của họ là gì trong thời kỳ đỉnh cao của việc nghiên cứu lý thuyết tính toán. Trong lịch sử nói điều gì đã khiến người ta bắt đầu với điều này và sự hiểu biết về 'aha' là gì để dẫn đến? Nếu bạn muốn giải thích tầm quan trọng của họ đối với sinh viên CS mới bắt đầu học Lý thuyết Automata, bạn sẽ làm thế nào?


10
Vì vậy, đây là một câu hỏi cấp độ nghiên cứu trong TCS?
Hendrik

13
Đó không phải là một câu hỏi nghiên cứu nhiều như người ta yêu cầu một viễn cảnh lớn về một chủ đề. Chúng tôi có một số câu hỏi như vậy ở đây. Thay vì bắt đầu một cuộc tranh luận trong các bình luận, tôi khuyến khích bạn nên đăng câu hỏi lên meta nếu bạn muốn thảo luận thêm về sự phù hợp của những câu hỏi đó.
Suresh Venkat

6
Tiến sĩ: Câu hỏi của bạn đã đưa ra một số câu trả lời rất tốt, vì vậy tôi cảm ơn bạn vì nó. Bạn đã trung thực trong các tuyên bố của mình và đó không phải là ý định của tôi để loại bỏ bạn hoặc câu hỏi của bạn. Trên thực tế, đó là một cách khác từ những gì bình luận của tôi gợi ý: Tôi đã thấy một số câu hỏi khác bị loại bỏ quá dễ dàng khi sử dụng trích dẫn này từ faq. Bạn nói đúng Suresh: đây không phải là nơi để bắt đầu một cuộc tranh luận. Lấy làm tiếc.
Hendrik

1
@HendrikJan - Đừng lo lắng! Văn bản ẩn tông. Tôi không bao giờ có nghĩa là như vậy. Tôi nghĩ rằng bạn đang hỏi tôi nếu đây là một câu hỏi nghiên cứu về phía tôi.
Tiến sĩ

16
Kudos để tiến sĩ và Hendrik cho một mức độ văn minh mà tôi hiếm khi gặp trên các diễn đàn công cộng.
Lucas

Câu trả lời:


342

Cá nhân tôi rất thích vài Aha! khoảnh khắc từ nghiên cứu lý thuyết automata cơ bản. NFA và DFA tạo thành một mô hình thu nhỏ cho toàn bộ khoa học máy tính lý thuyết.

  1. Liệu không xác định dẫn đến hiệu quả? Có những ví dụ tiêu chuẩn trong đó máy tự động xác định tối thiểu cho một ngôn ngữ lớn hơn theo cấp số nhân so với máy tự động không xác định tối thiểu. Hiểu được sự khác biệt này đối với máy Turing là cốt lõi của khoa học máy tính (lý thuyết). NFA và DFA cung cấp ví dụ đơn giản nhất mà tôi biết nơi bạn có thể thấy rõ khoảng cách nghiêm ngặt giữa tính xác định và tính không xác định.
  2. Khả năng tính toán! = Độ phức tạp. Cả NFA và DFA đều đại diện cho các ngôn ngữ thông thường và tương đương với những gì họ tính toán. Họ khác nhau về cách họ tính toán.
  3. Máy tinh chỉnh ngôn ngữ. Đây là một cách khác nhau về những gì chúng ta tính toán và cách chúng ta tính toán. Bạn có thể nghĩ về các ngôn ngữ có thể tính toán (và các hàm) như định nghĩa một lớp tương đương của automata. Đây là một thay đổi quan điểm cơ bản trong TCS, nơi chúng tôi không chỉ tập trung vào cái gì, mà là cách tính toán và cố gắng chọn đúng "cách thức" khi thiết kế thuật toán hoặc hiểu không gian khác nhau trong việc nghiên cứu các lớp phức tạp.
  4. Giá trị của đại diện Canonical. DFA là ví dụ tinh túy về cấu trúc dữ liệu thừa nhận biểu diễn chính tắc. Mỗi ngôn ngữ thông thường có một DFA duy nhất, tối thiểu. Điều này có nghĩa là đưa ra một DFA tối thiểu, các hoạt động quan trọng như bao gồm ngôn ngữ, bổ sung và kiểm tra việc chấp nhận một từ trở nên tầm thường. Phát minh và khai thác các biểu diễn chính tắc là một mẹo hữu ích khi phát triển các thuật toán.
  5. Sự vắng mặt của các đại diện Canonical. Không có đại diện chính tắc được chấp nhận tốt của biểu thức chính quy hoặc NFA. Vì vậy, mặc dù quan điểm trên, đại diện kinh điển không phải lúc nào cũng tồn tại. Bạn sẽ thấy điểm này trong nhiều lĩnh vực khác nhau trong khoa học máy tính. (ví dụ, các công thức logic mệnh đề cũng không có biểu diễn chính tắc, trong khi ROBDD thì có).
  6. Chi phí của một đại diện Canonical. Bạn thậm chí có thể hiểu sự khác biệt giữa NFA và DFA như một định lý thuật toán không ăn trưa miễn phí . Nếu chúng tôi muốn kiểm tra sự bao gồm ngôn ngữ giữa hoặc bổ sung NFA, bạn có thể xác định và giảm thiểu nó và tiếp tục từ đó. Tuy nhiên, hoạt động "giảm" này có chi phí. Bạn sẽ thấy các ví dụ về chuẩn hóa với chi phí trong một số lĩnh vực khác của khoa học máy tính.
  7. Vô hạn! = Không thể giải quyết được. Một quan niệm sai lầm phổ biến là các vấn đề có tính chất vô định vốn dĩ không thể giải quyết được. Các ngôn ngữ thông thường chứa vô số chuỗi và có một số thuộc tính có thể quyết định. Lý thuyết về các ngôn ngữ thông thường cho bạn thấy rằng vô cùng đơn độc không phải là nguồn gốc của sự bất ổn.
  8. Giữ Infinity trong lòng bàn tay của bạn. Bạn có thể xem một máy tự động hữu hạn hoàn toàn dưới dạng cấu trúc dữ liệu để biểu diễn các bộ vô hạn. ROBDD là cấu trúc dữ liệu để biểu diễn các hàm Boolean, mà bạn có thể hiểu là đại diện cho các tập hữu hạn. Một máy tự động hữu hạn là một phần mở rộng tự nhiên, vô hạn của ROBDD.
  9. Bộ xử lý khiêm tốn. Một bộ xử lý hiện đại có rất nhiều trong đó, nhưng bạn có thể hiểu nó như một máy tự động hữu hạn. Chỉ cần nhận ra điều này đã khiến kiến ​​trúc máy tính và thiết kế bộ xử lý trở nên ít đáng sợ hơn đối với tôi. Nó cũng cho thấy rằng, trong thực tế, nếu bạn cấu trúc và thao tác các trạng thái của mình một cách cẩn thận, bạn có thể tiến rất xa với automata hữu hạn.
  10. Quan điểm đại số. Ngôn ngữ thông thường tạo thành một cú pháp cú pháp và có thể được nghiên cứu từ quan điểm đó. Tổng quát hơn, bạn có thể trong các nghiên cứu sau này cũng hỏi, cấu trúc đại số đúng tương ứng với một số vấn đề tính toán.
  11. Quan điểm kết hợp. Một máy tự động hữu hạn là một đồ thị có nhãn. Kiểm tra nếu một từ được chấp nhận sẽ giảm việc tìm đường dẫn trong biểu đồ được dán nhãn. Thuật toán Automata lên tới các phép biến đổi đồ thị. Hiểu cấu trúc của automata cho các phân nhóm ngôn ngữ thông thường khác nhau là một lĩnh vực nghiên cứu tích cực.
  12. Tam giác tình yêu đại số-ngôn ngữ-kết hợp. Định lý Myhill-Nerode cho phép bạn bắt đầu với một ngôn ngữ và tạo ra một máy tự động hoặc một cú pháp cú pháp. Về mặt toán học, chúng tôi có được một bản dịch giữa các loại đối tượng toán học rất khác nhau. Sẽ rất hữu ích khi ghi nhớ các bản dịch như vậy và tìm kiếm chúng trong các lĩnh vực khác của khoa học máy tính và để di chuyển giữa chúng tùy thuộc vào ứng dụng của bạn.
  13. Toán học là ngôn ngữ của hình ảnh lớn. Các ngôn ngữ thông thường có thể được đặc trưng bởi NFA (biểu đồ), biểu thức chính quy (ngữ pháp chính thức), máy Turing chỉ đọc (máy), đơn âm cú pháp (đại số), đại số Kleene (đại số), logic thứ hai đơn âm, v.v. Hiện tượng là quan trọng, các khái niệm lâu dài có nhiều đặc điểm toán học khác nhau, mỗi khái niệm mang lại những hương vị khác nhau cho sự hiểu biết của chúng ta về ý tưởng.
  14. Bổ đề cho các nhà toán học làm việc. Bổ đề bơm là một ví dụ tuyệt vời về một công cụ lý thuyết mà bạn có thể tận dụng để giải quyết các vấn đề khác nhau. Làm việc với Lemmas là cách thực hành tốt để cố gắng xây dựng dựa trên kết quả hiện có.
  15. Cần thiết! = Đủ. Định lý Myhill-Nerode cung cấp cho bạn các điều kiện cần và đủ để một ngôn ngữ được chính quy. Bổ đề bơm cho chúng ta những điều kiện cần thiết. So sánh hai và sử dụng chúng trong các tình huống khác nhau đã giúp tôi hiểu được sự khác biệt giữa các điều kiện cần và đủ trong thực hành toán học. Tôi cũng học được rằng một điều kiện cần và đủ có thể tái sử dụng là một điều xa xỉ.
  16. Quan điểm ngôn ngữ lập trình. Biểu thức chính quy là một ví dụ đơn giản và đẹp của ngôn ngữ lập trình. Trong phép nối, bạn có một sự tương tự của thành phần tuần tự và trong ngôi sao Kleene, bạn có sự tương tự của phép lặp. Khi xác định cú pháp và ngữ nghĩa của các biểu thức chính quy, bạn thực hiện một bước bé theo hướng lý thuyết ngôn ngữ lập trình bằng cách xem các định nghĩa quy nạp và ngữ nghĩa thành phần.
  17. Phối cảnh trình biên dịch. Bản dịch từ biểu thức chính quy sang máy tự động hữu hạn cũng là một trình biên dịch lý thuyết đơn giản. Bạn có thể thấy sự khác biệt giữa phân tích cú pháp, tạo mã trung gian và tối ưu hóa trình biên dịch, do sự khác biệt trong việc đọc biểu thức chính quy, tạo ra máy tự động, sau đó thu nhỏ / xác định máy tự động.
  18. Sức mạnh của việc lặp lại. Khi nhìn thấy những gì bạn có thể làm trong một máy tự động hữu hạn với một vòng lặp và không có vòng lặp, bạn có thể đánh giá cao sức mạnh của phép lặp. Điều này có thể giúp hiểu được sự khác biệt giữa các mạch và máy, hoặc giữa logic cổ điển và logic điểm cố định.
  19. Đại số và hệ số. Các ngôn ngữ thông thường tạo thành một cú pháp cú pháp, đó là một cấu trúc đại số. Automata hữu hạn hình thành những gì trong ngôn ngữ của lý thuyết thể loại được gọi là một đại số. Trong trường hợp máy tự động xác định, chúng ta có thể dễ dàng di chuyển giữa biểu diễn đại số và đại số, nhưng trong trường hợp NFA, điều này không dễ dàng như vậy.
  20. Quan điểm số học. Có một mối liên hệ sâu sắc giữa tính toán và lý thuyết số. Bạn có thể chọn hiểu điều này như một tuyên bố về sức mạnh của lý thuyết số và / hoặc tính phổ quát của tính toán. Bạn thường biết rằng automata hữu hạn có thể nhận ra một số ký hiệu chẵn và chúng không thể đếm đủ để khớp với dấu ngoặc đơn. Nhưng họ có khả năng số học đến mức nào? Máy tự động hữu hạn có thể quyết định các công thức số học Presburger. Thủ tục quyết định đơn giản nhất mà tôi biết đối với số học Presburger làm giảm công thức thành máy tự động. Đây là một cái nhìn thoáng qua từ đó bạn có thể tiến tới vấn đề thứ 10 của Hilbert và đó là giải pháp dẫn đến việc phát hiện ra mối liên hệ giữa phương trình Diophantine và máy Turing.
  21. Quan điểm logic. Tính toán có thể được hiểu từ một quan điểm hoàn toàn hợp lý. Automata hữu hạn có thể được đặc trưng bởi logic thứ hai yếu, đơn điệu trên các từ hữu hạn. Đây là ví dụ yêu thích, không tầm thường của tôi về đặc tính logic của một thiết bị tính toán. Lý thuyết phức tạp mô tả cho thấy rằng nhiều lớp phức tạp cũng có đặc điểm logic thuần túy.
  22. Automata hữu hạn đang ẩn náu ở những nơi bạn không bao giờ tưởng tượng được. (Hat-tip cho Martin Berger nhận xét về mối liên hệ với lý thuyết mã hóa) Giải thưởng Nobel về hóa học năm 2011 đã được trao cho việc phát hiện ra các tinh thể gần như. Toán học đằng sau các tinh thể gần như được kết nối với các chu kỳ nghiêng. Một lát gạch định kỳ cụ thể của máy bay được gọi là Ốp lát bánh xe, bao gồm hình diều và hình cánh cung. Bạn có thể mã hóa các hình dạng này theo 0 và 1 và sau đó nghiên cứu các thuộc tính của các chuỗi này, mã trình tự các mẫu. Trong thực tế, nếu bạn ánh xạ 0 đến 01 và 1 thành 0 và liên tục áp dụng bản đồ này cho chữ số 0, bạn sẽ nhận được, 0, 01, 010, 01001, v.v. Quan sát rằng độ dài của các chuỗi này tuân theo chuỗi Fibonacci. Các từ được tạo theo cách này được gọi là các từ Fibonacci. Một số chuỗi hình dạng nhất định được quan sát thấy trong Penrose nghiêng có thể được mã hóa thành các từ Fibonacci. Những từ như vậy đã được nghiên cứu từ góc độ lý thuyết tự động, và đoán xem, một số họ từ được chấp nhận bởi automata hữu hạn, và thậm chí cung cấp các ví dụ về hành vi trong trường hợp xấu nhất cho các thuật toán tiêu chuẩn như thuật toán tối thiểu hóa của Hopcroft. Hãy nói cho tôi biết bạn đang chóng mặt.

Tôi có thể tiếp tục. (Và tiếp theo Tôi nghi ngờ rằng tất cả mọi thứ tôi đề cập ở trên có thể được truyền đạt trong một vài bài giảng đầu tiên của một khóa học, hoặc thậm chí trong một khóa học đầu tiên. Đây là những phần thưởng dài hạn dựa trên khoản đầu tư ban đầu được thực hiện trong các bài giảng ban đầu của khóa học lý thuyết automata.

Để giải quyết tiêu đề của bạn: Tôi không luôn luôn tìm kiếm sự giác ngộ, nhưng khi tôi làm, tôi thích automata hữu hạn. Hãy khát đi, bạn ạ.


27
Danh sách đẹp. Tôi muốn thêm rằng automata cung cấp một viễn cảnh thú vị về lý thuyết mã hóa, được tiên phong bởi Schuetzenberger. Ngoài ra, lý thuyết đồng thời hiện đại và lý thuyết quá trình là một khái quát của lý thuyết automata trong đó automata có thể được sáng tác song song và đồng bộ hóa trên các hành động của họ.
Martin Berger

6
Ồ (+ 0,5 cho câu cuối cùng. :-)
LarsH

6
Chỉ cần tham gia TCS.SE chỉ để +1 này.
Tynam

5
Mặc dù biết khá nhiều thứ trong danh sách này, nhưng tôi vẫn cảm thấy được giác ngộ vì đã đọc nó. (Ngoài ra, (Và trên.) * Làm tôi cười thầm.)
CA McCann

2
Thành thật mà nói, tôi chưa bao giờ nghĩ về hầu hết những thứ này (và một số định lý tôi chưa từng nghe đến), và tôi đã tham gia một khóa học về lý thuyết tính toán. Có ai phải có một giáo viên hoặc chương trình giảng dạy đặc biệt tốt để chỉ ra những tiết lộ này không?
Ken Bloom

33

Có nhiều lý do lý thuyết tốt để nghiên cứu N / DFA. Hai điều lập tức xuất hiện trong tâm trí là:

  1. Máy Turing (chúng tôi nghĩ) nắm bắt mọi thứ có thể tính toán được. Tuy nhiên, chúng ta có thể hỏi: Bộ phận nào của máy Turing là "thiết yếu"? Điều gì xảy ra khi bạn giới hạn máy Turing theo nhiều cách khác nhau? DFA là một giới hạn rất nghiêm trọng và tự nhiên (lấy đi bộ nhớ). Các thiết bị PDA là một giới hạn ít nghiêm trọng hơn, v.v ... Về mặt lý thuyết, thật thú vị để xem bộ nhớ mang lại cho bạn điều gì và điều gì xảy ra khi bạn đi mà không có nó. Có vẻ như một câu hỏi rất tự nhiên và cơ bản với tôi.

  2. Máy Turing cần một băng vô hạn. Vũ trụ của chúng ta là hữu hạn, vì vậy trong một số ý nghĩa, mọi thiết bị điện toán đều là DFA. Có vẻ như một chủ đề quan trọng, và một lần nữa, tự nhiên để nghiên cứu.

Hỏi lý do tại sao người ta nên nghiên cứu DFA giống như hỏi tại sao người ta nên học định lý hoàn chỉnh của Godel khi điều thú vị thực sự là định lý không hoàn chỉnh của anh ta .

Lý do chúng là chủ đề đầu tiên trong lý thuyết automata là vì việc xây dựng các chế độ phức tạp hơn từ các chế độ ít phức tạp hơn là điều tự nhiên.


2
# 1 có ý nghĩa tốt và tôi nghĩ rằng tôi thấy lý do. Nhưng làm thế nào bạn sẽ giải thích lý do 'tiến lên' từ FA? Những người biết điều gì đó về ToC có thể quay lại nhìn lại và nghiền ngẫm về nó. Làm thế nào tốt nhất để giải thích "tại sao" cho những sinh viên bắt đầu học lý thuyết automata và chỉ biết FA? Có phải chúng ta chỉ nói rằng chúng ta đang bắt đầu với một máy bit vì chúng là cơ bản - tại sao? Làm thế nào tốt nhất để trả lời 'đó' tại sao? Sẽ đánh giá cao một số ánh sáng khi trả lời câu hỏi này cho tổng số noobs cho ToC :)
Tiến sĩ

2
Đối số "chuyển tiếp" xuất phát từ thực tế (như Sariel đã đề cập) rằng các máy trạng thái có lẽ là cơ bản nhất của các thiết bị máy tính. Bạn đang ở trong một trạng thái: một cái gì đó xảy ra, và sau đó bạn chuyển sang một trạng thái mới. Lưu ý rằng chuỗi markov (rất quan trọng trong học máy) chỉ là các FSM xác suất.
Suresh Venkat

31

Để thêm một viễn cảnh cho phần còn lại của câu trả lời: bởi vì bạn thực sự có thể làm công cụ với automata hữu hạn, trái ngược với máy Turing.

Bất kỳ tài sản thú vị nào của máy Turing là không thể giải quyết được. Ngược lại, với automata hữu hạn, mọi thứ đều thể quyết định được. Bình đẳng ngôn ngữ, bao gồm, trống rỗng và phổ quát đều có thể quyết định. Kết hợp với automata hữu hạn đó được đóng lại theo mọi thao tác bạn có thể nghĩ ra và các thao tác này có thể tính toán được, bạn có thể thực hiện khá nhiều thứ bạn muốn làm với automata hữu hạn.

Điều này có nghĩa là nếu bạn có thể chụp một cái gì đó bằng automata hữu hạn, bạn sẽ tự động có được rất nhiều công cụ để phân tích nó. Ví dụ, trong thử nghiệm phần mềm, các hệ thống và thông số kỹ thuật của chúng có thể được mô hình hóa thành automata hữu hạn. Sau đó, bạn có thể tự động kiểm tra xem hệ thống của bạn có thực hiện đúng thông số kỹ thuật hay không.

Do đó, máy Turing và automata hữu hạn dạy cho mọi người một sự tương phản thú vị và có mặt khắp nơi: sức mạnh mô tả đi đôi với khả năng dễ điều khiển hơn. Máy tự động hữu hạn không thể mô tả nhiều, nhưng ít nhất chúng ta có thể làm mọi thứ với chúng.


2
"... bạn thực sự có thể làm mọi thứ với automata hữu hạn, trái ngược với máy Turing." hiểu pt, tuy nhiên một trích dẫn nghe có vẻ mỉa mai hoặc không có ý nghĩa gì được đưa ra khỏi bối cảnh ...
vzn

27

Tiểu bang. bạn cần biết rằng người ta có thể mô hình hóa thế giới (đối với một số vấn đề nhất định) dưới dạng không gian trạng thái hữu hạn và người ta có thể nghĩ về tính toán trong cài đặt này. Đây là một cái nhìn sâu sắc đơn giản nhưng cực kỳ hữu ích nếu bạn thực hiện bất kỳ chương trình nào - bạn sẽ gặp trạng thái hết lần này đến lần khác và FA cho bạn cách nghĩ về chúng. Tôi coi đây là một cái cớ đủ để dạy một lớp hoàn chỉnh. Tất nhiên, trạng thái có thể là xác định hoặc không xác định. Do đó, DFA và NFA, nhưng bạn có thể chuyển đổi giữa chúng, v.v.

Điều thứ hai cần học là định lý Dừng. Điều này có liên quan đến định lý bất toàn Godel. (Bạn không thể xây dựng một cỗ máy có thể tính toán mọi thứ, và có những tuyên bố toán học mà bạn không thể chứng minh cũng không bác bỏ, và như vậy cần phải được coi là tiên đề. tiên tri - vâng cho chúng tôi!)

Bây giờ, tôi đã học đại học về toán và bạn đã quen với ý tưởng rằng bạn học những thứ bạn không biết tại sao bạn lại học (lý thuyết nhóm, lý thuyết đo lường, lý thuyết tập hợp, không gian Hilbert, v.v. , BTW]). Có một điều gì đó để nói về việc học cách học - lần tới bạn phải học một số phép toán bizarro (bởi vì bạn cần sử dụng nó để làm một cái gì đó ngoài kia trong thế giới thực) trông rất kỳ lạ khi bạn sải bước. Cụ thể, điều thứ ba cần học là sự trưởng thành về toán học - có thể tranh luận cẩn thận về mọi thứ, biết khi nào bằng chứng chính xác hay không, viết ra bằng chứng, v.v. Nếu bạn đã có nó, khóa học này rất dễ, và bạn cũng không quan tâm nhiều tại sao bạn đang học nó

Ngoại trừ những điều này, khóa học là một sự lãng phí hoàn toàn thời gian của bạn, giống như mọi thứ khác. Cụ thể, bạn có thể sống một cuộc sống hạnh phúc mà không cần biết thứ này. Nhưng điều này đúng theo nghĩa đen của tất cả các kiến ​​thức. Nhiều hơn hoặc ít hơn. Đối với tôi một khóa học ở trường đại học đáng giá thời gian của nó, nếu bạn nhìn thế giới khác đi sau khi học nó. Đây chắc chắn là một trong những khóa học thay đổi cách tôi nghĩ về thế giới. bạn có thể yêu cầu gì hơn nữa?


21

Mặc dù đó không thực sự là lý do ban đầu chúng được nghiên cứu, nhưng automata hữu hạn và các ngôn ngữ thông thường mà chúng nhận ra đủ khả năng để chúng được sử dụng như các khối xây dựng cho các lý thuyết toán học phức tạp hơn. Trong ngữ cảnh này, hãy xem các nhóm đặc biệt tự động (các nhóm trong đó các phần tử có thể được biểu diễn bằng các chuỗi bằng ngôn ngữ thông thường và trong đó các sản phẩm của các phần tử bằng bộ tạo nhóm có thể được tính bằng các bộ chuyển đổi trạng thái hữu hạn) và các phần tử con (phần con của không gian dịch chuyển có từ bị cấm tạo thành một ngôn ngữ thông thường). Vì vậy, có những lý do để nghiên cứu chúng ngay cả khi bạn quan tâm đến toán học thuần túy hơn là khoa học máy tính.

Máy tự động hữu hạn cũng đã được sử dụng trong việc thiết kế các thuật toán cho các loại đối tượng khác. Chẳng hạn, một thuật toán của Culik để kiểm tra xem một thiết bị tự động di động một chiều có thể đảo ngược được hay không liên quan đến việc xây dựng, sửa đổi và kiểm tra các thuộc tính của một số NFA nhất định. Và một bài báo FOCS năm 1986 của Natarajan đã chỉ ra cách giải quyết một vấn đề nhất định trong thiết kế dây chuyền lắp ráp cơ học bằng cách giảm nó thành một tính toán về automata hữu hạn.


18

Bạn đang hỏi (ít nhất) hai câu hỏi khác nhau: (a) Phần nào của lý thuyết xây dựng trên automata hữu hạn ngày nay? (b) Tại sao đầu tiên automata hữu hạn được phát triển? Tôi nghĩ cách tốt nhất để giải quyết vấn đề sau là xem xét các giấy tờ cũ, chẳng hạn như:

Đây là hai đoạn đầu tiên:

Máy Turing được coi là nguyên mẫu trừu tượng của máy tính kỹ thuật số; Tuy nhiên, các công nhân trong lĩnh vực này đã cảm thấy ngày càng nhiều rằng khái niệm về máy Turing quá chung chung để phục vụ như một mô hình chính xác của máy tính thực tế. Người ta biết rằng ngay cả đối với các phép tính đơn giản, không thể đưa ra một ưu tiên giới hạn trên số lượng băng mà máy Turing sẽ cần cho bất kỳ tính toán nào. Chính xác là tính năng này làm cho khái niệm của Turing không thực tế.

Trong vài năm qua, ý tưởng về một máy tự động hữu hạn đã xuất hiện trong tài liệu. Đây là những máy chỉ có một số lượng hữu hạn các trạng thái bên trong có thể được sử dụng cho bộ nhớ và tính toán. Sự hạn chế về độ chính xác dường như mang lại sự gần đúng hơn cho ý tưởng về một cỗ máy vật lý. Tất nhiên, các máy như vậy không thể làm được nhiều như máy Turing, nhưng lợi thế của việc có thể tính toán một hàm đệ quy chung tùy ý là đáng nghi ngờ, vì rất ít các chức năng này xuất hiện trong các ứng dụng thực tế.

Nói tóm lại, chúng được phát triển như một mô hình máy tính thực sự, có tài nguyên hữu hạn.


16

Một lý do khác là chúng là những mô hình lý thuyết tương đối thực tế . Một máy Turing, ngoài khả năng không thể sử dụng băng vô hạn, là loại phù hợp với những gì nó muốn lập trình cho máy tính (lưu ý rằng đây không phải là một sự tương tự tốt để bắt đầu!). Tuy nhiên, các thiết bị PDA và DFA hoàn toàn có thể trở thành mô hình của các chương trình thực tế theo nghĩa là một thiết kế của PDA / DFA thường có thể dễ dàng biến thành một chương trình thực sự. Thiết kế trình biên dịch, ví dụ, sử dụng chúng rộng rãi. Vì vậy, tại các điểm kết nối giữa lý thuyết và thực hành, chúng ta nắm được cách tất cả các mối quan hệ với nhau, và những gì chúng ta có thể và không thể làm.


10

Kiểm tra Trò chơi "Trình cộng nhị phân sống" tại đây: http://courstltc.blogspot.com/2012/12/living-binary-adder-game.html Tôi đã từng trình bày trò chơi này cho các học sinh của mình trong các chương đầu về DFA / NFA. Nó minh họa hai điều quan trọng trong Lý thuyết Automata:

  1. Làm thế nào để biến một quá trình tinh thần thành một cơ học đơn giản
  2. Trừu tượng thực sự có nghĩa là gì. Hai trạng thái, như trạng thái C và Z ở trên, có thể là bất cứ điều gì: bóng bán dẫn trong máy tính, cơ chế thủy lực hoặc hai người chơi!

Điều này, đôi khi mang lại khoảnh khắc "Aha" cho các học sinh của tôi.


9

Khái niệm về DFA rất hữu ích để thiết kế các giải pháp hiệu quả cho nhiều loại vấn đề. Một ví dụ là kết nối mạng. Mỗi giao thức có thể được thực hiện như một máy trạng thái. Thực hiện giải pháp theo cách này làm cho mã đơn giản hơn và đơn giản hơn có nghĩa là tỷ lệ lỗi thấp hơn. Điều đó cũng có nghĩa là các thay đổi đối với mã dễ dàng hơn và có tác động thấp hơn, một lần nữa có tỷ lệ lỗi thấp hơn.

Một số người cảm thấy khó khăn khi xem một giao thức mạng là một máy trạng thái nhưng những người có thể thực hiện bước nhảy lại thấy nó rất bổ ích về mặt lợi nhuận.


Nghe có vẻ rất ăn nhập nhưng bạn có thể giải thích thêm một chút không? nó khó có thể tưởng tượng một giao thức mạng như một máy nhà nước. cảm ơn bạn.
hkoosha

3

Trên thực tế, các sinh viên của tôi đôi khi hỏi chính xác điều này - sau khi dành một phần lớn của học kỳ cho máy tự động hữu hạn và cuối cùng đến máy Turing. Tại sao phải dành quá nhiều thời gian cho một chủ nghĩa hình thức yếu hơn khi có sẵn một thứ mạnh hơn? Vì vậy, tôi giải thích sự đánh đổi vốn có trong sức mạnh biểu cảm so với sự phức tạp phân tích. Các mô hình phong phú hơn thường khó phân tích hơn. Sự phân đôi giữa DFA và TM là cực kỳ, vì vấn đề thành viên là không đáng kể đối với người này và không thể giải quyết cho người kia. Một ví dụ ít cực đoan hơn sẽ là DFA so với PDA. Vấn đề thành viên cho sau này hóa ra có thể giải quyết được một cách hiệu quả, nhưng giải pháp không hề tầm thường. Chúng ta thấy điều này xảy ra trong nhiều ngành toán học và khoa học: nghiên cứu một mô hình đơn giản để có được sự hiểu biết hoàn chỉnh nhất có thể, điều này thường dẫn đến hiểu biết sâu sắc về các mô hình phức tạp hơn.


-4

Tôi thấy một số câu trả lời gọi FM là "ít hơn" so với máy Turing.

Một trọng tâm chính trong lớp Sau đại học tôi đã đặt tương đương của họ, không phân biệt. Đối với mọi mô hình FSM mà chúng tôi đã nghiên cứu, chúng tôi phải chứng minh tính tương đương của chúng với Turing Machines. Điều này được thực hiện bằng cách triển khai Máy Turing trong FSM. IIRC, chúng tôi cũng đã nghiên cứu một số mô hình điện toán khác không thực hiện TM, nhưng tôi quên những cái đó là gì. Vấn đề là, nếu bạn có thể triển khai TM, bạn có thể chạy bất kỳ chương trình TM nào trên mô hình, được cung cấp một băng tương tự đủ lớn cho vấn đề đang chạy.

Lực đẩy của câu trả lời cho câu hỏi là: TM là mô hình tính toán cơ bản, nhưng không thực tế lắm khi nói đến việc xây dựng các máy móc hữu ích. Do đó mô hình FSM.

Điều này đã được mang về nhà một cách trực quan cho tôi khi, cùng khoảng thời gian đó (1984), tôi phát hiện ra ngôn ngữ FORTH. Công cụ thực thi của nó được xây dựng dựa trên sự hiện thực hóa hoàn toàn của một máy tính xếp chồng kép. Đi sâu hơn tôi thích công cụ này cùng trình biên dịch biểu thức

Mặc dù, đối với tôi, tác động thực sự của FSM là khám phá cuốn sách "Lý thuyết về tự động hữu hạn" của Trakhtenbrot và Korzynski (?) Khi tôi 18 tuổi, một khám phá về cơ bản mang lại cho tôi sự nghiệp.


1
Tôi cho rằng mặc dù bạn đã không chứng minh được sự tương đương giữa Máy tự động hữu hạn không hữu hạn và máy Turing. Đây là đối tượng cụ thể mà OP đã hỏi và phần còn lại của chúng tôi đang gọi là "ít hơn".
Vijay D

2
Và FA không giống như một FSM.
Suresh Venkat
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.