Tại sao chúng ta nên nghiên cứu cả ba hình thức biểu diễn của automata hữu hạn?


9

DFA, NFA và epsilon NFA cả ba đều cho phép chúng tôi đại diện cho một ngôn ngữ thông thường cụ thể. Với bất kỳ biểu diễn nào chúng ta có thể đi đến cùng một biểu thức chính quy, vậy tại sao chúng ta cần nghiên cứu cả ba hình thức biểu diễn của automata hữu hạn? Có thể có một số lời giải thích về những gì NFA có thể làm mà DFA không thể, đó là NFA có thể giúp chúng tôi thiết kế những điều không chắc chắn. Ví dụ: trong việc thiết kế một trò chơi (cờ vua), chúng tôi có nhiều tùy chọn để di chuyển một quân cờ cụ thể từ một vị trí cụ thể có thể được biểu diễn dễ dàng bằng NFA. Nhưng việc sử dụng epsilon NFA là gì khi cùng sử dụng NFA hoặc DFA?


2
Có nhiều hơn ba. Đây chỉ là những cái thường được tìm thấy trong sách giáo khoa. Chuyển đổi Epsilon rất hữu ích để chứng minh các định lý, nhưng tôi không chắc chắn tôi đã thấy chúng được sử dụng trong các mô hình vì lợi ích riêng của chúng.
wvxvw

3
@wvxvw, thuật toán dịch một biểu thức chính quy thành NFA sử dụng chuyển đổi theo cách rất tự nhiên. Chúng không "chỉ để chứng minh", chúng khá tự nhiên trong một khung cảnh không xác định. ε
vonbrand

Câu trả lời:


13

Thêm ngữ pháp thông thường cho một phần tư. Co nhung nguoi khac...

ε

Các biểu thức chính quy (và cả các ngữ pháp thông thường) là các hình thức hoàn toàn khác nhau, xảy ra để mô tả cùng một bộ ngôn ngữ. Một lần nữa, bằng chứng của thực tế này khám phá các mối quan hệ chéo quan trọng, và là một ví dụ cho thấy các hình thức có thể trông rất khác nhau, dựa trên các khái niệm không giống nhau hoàn toàn, nhưng mô tả cùng các ngôn ngữ. Một lần nữa, trong một thiết lập khá đơn giản.

Để sử dụng "thế giới thực", bạn có thể bắt đầu bằng biểu thức chính quy và nhận DFA tối thiểu để tìm kiếm hiệu suất cao. Mạch kỹ thuật số về cơ bản là DFA, hiểu chúng là trung tâm trong kỹ thuật máy tính. Cuối cùng nhưng không kém phần quan trọng, thường các hệ thống có thể được mô hình hóa là "ở trạng thái" và "chuyển sang trạng thái khác" trên các kích thích bên ngoài, ngay cả khi hệ thống ở rất xa một DFA thực sự xem nó theo cách này có thể giúp hiểu được nó.

Được thêm vào sau: Như Raphael đã lưu ý, có thể hiệu quả hơn khi diễn giải NFA trực tiếp để tìm kiếm, bởi vì việc tạo DFA có thể tốn kém và NFA có thể nhỏ hơn nhiều.


1
"Có những người khác" - hàng chục ....
Raphael

1
Bạn có thể muốn đề cập rằng NFA có thể hữu ích (nếu DFA là lựa chọn thay thế duy nhất) bởi vì chúng có thể nhỏ hơn rất nhiều, nhưng sử dụng một để kiểm tra xem một từ có được chấp nhận không quá đắt.
Raphael

5

có rất nhiều lý do để nghiên cứu các hình thức / sự tương ứng khác nhau của DFA và NFA. Dưới đây là một vài điểm nổi bật được lựa chọn một số từ lý thuyết phức tạp tiên tiến.

  • NFA là một mô hình thú vị cho "tính toán song song". người ta có thể coi sự tiến bộ của các quốc gia thông qua NFA là phiên bản song song của tính toán DFA. vì vậy các tính toán DFA và NFA phản ánh một số sự khác biệt của tính toán tuần tự và tính toán song song. bằng cách so sánh cả hai bối cảnh, nó cũng giúp nghiên cứu sự phức tạp thuật toán vốn có của các vấn đề.

  • NFA thường được sử dụng trong các hệ thống khớp biểu thức chính quy (khá phổ biến trên các ngôn ngữ, đặc biệt là các ngôn ngữ hiện đại xuất hiện trong thời đại unix), thường cho phép mô tả các biểu thức chính quy được chuyển đổi thành NFA và sau đó có thể được chuyển đổi thành DFA để hỗ trợ tìm kiếm hiệu quả hơn.

  • có khá nhiều vấn đề mở còn tồn tại trong các lĩnh vực và chúng thường được nghiên cứu dựa trên sự tương ứng của DFA / NFA. xem ví dụ: có bất kỳ vấn đề mở nào còn lại trên các DFA (cstheory stackexchange). hơi ngạc nhiên, một số trong số chúng được gắn với các khu vực rất sâu của CS, bao gồm cả vấn đề P vs NP, tức là sự khinh thường giao nhau của DFA . ngoài ra một khu vực mở khác là ví dụ tính toán NFA tối thiểu cho DFA .

  • Ngoài ra, đối với một số hiểu biết liên quan, hãy xem câu hỏi bán kết / đánh giá cao này trên cstheory.se : Sự giác ngộ mà tôi phải đạt được sau khi nghiên cứu automata hữu hạn là gì?

  • có những ứng dụng rất đa dạng của DFA so với NFA và sự tương ứng giữa hai loại này thường được khai thác trong đó. khớp mẫu chuỗi được đề cập ở trên, nhưng các cấu trúc DFA / NFA thường được sử dụng trong nhận dạng giọng nói (tự động). xem ví dụ bài báo được trích dẫn nhiều này: Bộ chuyển đổi trạng thái hữu hạn có trọng số trong nhận dạng giọng nói / Mohri, Pereira, Riley


2

Các DFA có cách triển khai dễ dàng hơn NFA vì trạng thái tiếp theo của chúng được xác định bởi một hàm và NFA giúp người dùng dễ dàng thể hiện những gì họ muốn như một đầu ra, bởi vì NFA có thể chọn giữa nhiều đường dẫn. và epsilon-NFA là một phần mở rộng của NFA nơi chuyển đổi có thể được thực hiện mà không cần lấy bất kỳ ký hiệu đầu vào nào.


2
tóm tắt: NFA truyền đạt ý tưởng về tính không xác định, đó là một ý tưởng rất sâu sắc ("nhà phát minh" của nó, Michael O. Rabin và Dana S. Scott, đã giành giải thưởng Turing cho những ý tưởng này)
Ran G.

1

Có một điều khó chịu về số lượng trạng thái của DFA. Nó nổ tung, đôi khi .

Nói tóm lại, nếu số lượng trạng thái đơn giản là quá nhiều (vẫn hữu hạn nhưng chúng ta đang sống trong một thế giới vật chất.), Thì bạn phải tăng mức độ trừu tượng để đối phó với sự phức tạp trong chi phí của một số sự chậm lại. Các mô hình khác, như NFA và AFA, sẽ cung cấp các cách ngắn gọn hơn để thể hiện các ngôn ngữ thông thường.

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.