Ứng dụng thực tế của máy nhà nước hữu hạn


8

Tôi đang tìm kiếm các ứng dụng thực tế của Máy trạng thái hữu hạn như máy DFA, NFA, Moore, Mealy ...

Sẽ rất hữu ích nếu ai đó chỉ ra các ví dụ từ Linux Kernel. Tôi biết rằng DFA được sử dụng trong khớp chuỗi như thuật toán KMP.

Tầm quan trọng của máy NFA, Moore và Mealy là gì?


bạn có thể muốn kiểm tra Kỹ thuật điện cũng như cho máy Moore / Mealy
Ran G.

1
Tôi ghét phải là người phạm tội (được thôi, tôi thích là người phạm tội) nhưng tất cả các máy tính thực sự là máy chính xác hữu hạn. Pushdown automata, automata giới hạn tuyến tính và máy Turing là những bất khả thi về mặt vật lý (thực tế mà nói, tất nhiên tôi không thể chứng minh rằng không có một máy Turing thực sự nào trôi nổi trong không gian ở đâu đó). Thậm chí, chúng ta không thể tạo ra các máy tính có thể nhận ra các ngôn ngữ thông thường tùy ý.
Patrick87

Xem thêm nàynày câu hỏi qua tại Khoa học Máy tính lý thuyết .
Raphael

Câu trả lời:


8

Mỗi khi bạn thực hiện tìm kiếm (đặc biệt là "tìm kiếm mẫu") trong trình chỉnh sửa / công cụ yêu thích của bạn, mẫu sẽ được dịch sang một số dạng máy trạng thái hữu hạn, phù hợp.

Phần phân tích từ vựng của trình biên dịch / trình thông dịch của bạn (có, thậm chí cả vỏ của bạn) một lần nữa là một máy tự động hữu hạn phù hợp với các từ khóa và các mã thông báo khác được ngôn ngữ nhận ra.

Bất kỳ máy bán hàng tự động nào cũng là một máy tự động hữu hạn, nhận các đồng tiền có mệnh giá khác nhau và nhận ra khi đã nhập đúng số lượng (OK, máy bán hàng tự động ngày nay có thể có một CPU nhỏ bên trong khi thêm, nhưng kết quả cuối cùng là như nhau).


7

(các khái niệm về) DFA / NFA có một số ứng dụng trong lĩnh vực trình biên dịch và trong việc xây dựng các trình phân tích cú pháp. Chúng cũng được sử dụng để xác định các chuỗi theo biểu thức chính quy (nghĩa là tìm kiếm "mẫu" trên web hoặc qua cơ sở dữ liệu)

Máy Moore / Mealy, là các DFA cũng có đầu ra ở bất kỳ dấu tích nào của đồng hồ. Những người có nhiều ứng dụng. Trên thực tế, bất kỳ CPU, máy tính, điện thoại di động, đồng hồ kỹ thuật số và thậm chí cả máy giặt của bạn đều có một loại máy trạng thái hữu hạn trong đó, điều khiển nó.

Có lẽ tôi nên nói rõ: bất kỳ "máy tính" nào về cơ bản là một máy trạng thái hữu hạn.


4

Một ứng dụng chính là mô hình hóa các hệ thống. Về cơ bản, các hệ thống phần mềm đơn giản có thể được mô hình hóa thành Máy trạng thái hữu hạn. (Bằng phần mềm đơn giản, ý tôi là các ngôn ngữ có thể được biểu diễn bằng các biểu thức thông thường). Có rất nhiều hệ thống "đơn giản" như vậy, máy bán hàng tự động là ví dụ (như vzn đã chỉ ra).

Bằng cách tìm giao điểm của hai máy trạng thái hữu hạn, bạn có thể thiết kế một cách rất đơn giản các hệ thống đồng thời trao đổi thông điệp chẳng hạn. Ví dụ, đèn giao thông là một hệ thống bao gồm các nhánh con (các đèn giao thông khác nhau) hoạt động đồng thời.

Hãy xem những ví dụ sau: http://www.site.uottawa.ca/~bochmann/SEG-2106-2506/Notes/LTSA-examples/examples/

Bạn sẽ cần phải có bộ phân tích LTSA để chạy các ví dụ này. http://www.doc.ic.ac.uk/ltsa/


3

Đây là một tài liệu tham khảo trực tuyến rất tốt về các FSM và lý thuyết liên quan, 75p, với nhiều sơ đồ. có nhiều ứng dụng sau phần lý thuyết giữa, và trong nhiều bài tập với các ứng dụng mẫu, ví dụ p485:

ch12. Máy trạng thái hữu hạn của Keller, đại học Harvey Mudd, sách giáo khoa CS60 / CS, giới thiệu về sự trừu tượng

ứng dụng vô cùng đa dạng. ví dụ từ cuốn sách:

  • phân loại số
  • xem với bộ đếm thời gian
  • máy bán hàng tự động
  • đèn giao thông
  • máy quét mã vạch
  • bơm ga

giây 12.4 EE công trình, vd

  • yếu tố logic
  • lượng tử hóa đồng hồ
  • khóa kết hợp
  • dép tông
  • phụ gia
  • sổ đăng ký
  • xe buýt / ghép kênh

FSMs cũng được sử dụng trong phát hiện bài phát biểu để tìm âm vị , một trong những điểm chính của ứng dụng của thư viện này tuyệt vời trực tuyến trong đó có một số chi tiết trong trang con người và tài liệu hướng dẫn: AT & T thư viện FSM trực tuyến . xem phần "Thư viện FSM và các ứng dụng xử lý lời nói" (cũng liệt kê một số "ứng dụng" trừu tượng / lý thuyết hơn))

Vân vân!


1

Tôi sử dụng máy trạng thái khi viết trình điều khiển thiết bị. Coi chừng các máy trạng thái lớn có thể trở nên khó sử dụng. Cân nhắc sử dụng bộ macro này ( https://www.codeproject.com/Articles/37037/Macros-to-simulation-multi-tasking-blocking-code-at ) mà cách chuyển đổi trở nên đơn giản đến mức bạn không thậm chí cần một sơ đồ trạng thái. Điều này là do các macro cho phép bạn viết mã máy trạng thái của mình như thể nó là mã có cấu trúc. Tôi đã viết Thư viện thu phát của Cisco cho Nexus 7000 bằng cách sử dụng các macro này.


0

Trong thực tế, bạn sẽ thấy nó rõ ràng là một biến trạng thái nguyên (thường được gọi là 'trạng thái') đại diện cho một máy trạng thái rất thô thể hiện những hành động nào có thể gọi được bởi người dùng của một đối tượng. Nó thường là một phép liệt kê với các giá trị như: {chưa được khởi tạo, khởi tạo, ..., đã dừng}. Các máy trạng thái thường rõ ràng khi phân tích dữ liệu và sẽ được biểu thị bằng câu lệnh chuyển đổi trong một vòng lặp while trong đó ở đầu vòng lặp, ký tự tiếp theo được nhận. Đặc biệt, nếu phân tích cú pháp có ngữ pháp thông thường, một FSM chính xác không có tính năng nào khác thường được sử dụng. Nếu bạn đang sử dụng ngôn ngữ hỗ trợ các cuộc gọi đuôi, thì các FSM thường được thể hiện bằng cách đệ quy lẫn nhau (có thể làm cho mã được đọc giống như một đặc tả mã giả rất rõ ràng). Một tính năng thực sự hữu ích của một FSM là khả năng hoạt động đồng thời vì bạn chỉ cần nhớ trạng thái hiện tại, thay vì toàn bộ ngăn xếp thực thi. (tức là: chuyển đổi ngữ cảnh giữa hàng triệu trường hợp máy trạng thái).

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.