Tại sao automata đẩy xuống sử dụng một ngăn xếp?


7

Tôi đang tham gia một lớp lý thuyết máy tính và giáo sư của tôi đã nói với chúng tôi rằng một máy tự động đẩy xuống không thể sử dụng các cấu trúc dữ liệu ngoài một ngăn xếp (như một hàng đợi hoặc nhiều ngăn xếp). Tại sao vậy?

Câu trả lời:


15

Nếu bạn thay đổi ngăn xếp thành hàng đợi hoặc nhiều ngăn xếp, sức mạnh tính toán sẽ được tăng lên! (như bạn đã biết, chúng ta có thể mô hình hóa một hàng đợi với hai ngăn xếp). Nếu chúng ta sử dụng hàng đợi, nó có thể mạnh mẽ như một máy Turing. Tuy nhiên, sức mạnh tính toán của một máy tự động đẩy xuống không nhiều! Bạn có thể biết thêm về điều đó ở đây .


37

Có một số lớp có thể cho câu hỏi của bạn.

  • Tại sao các thiết bị phải có một ngăn xếp? -- Theo định nghĩa! Đó chỉ là cách nó được.
  • Nhưng tại sao chúng lại được định nghĩa như vậy? - Ai đó nghĩ rằng nó có thể trở nên thú vị. Và rõ ràng là nó đã làm, bởi vì nhiều người (đọc: toàn bộ lĩnh vực) đã đồng ý sử dụng định nghĩa đó.
  • Tại sao nó thú vị? - Xem câu trả lời của Revierpost .
  • Tại sao giáo viên của tôi chọn dạy PDA? - Đó là một vấn đề đa diện; xem ở đây cho một câu hỏi tương tự. Các câu trả lời mang qua.

Tôi muốn mở rộng trên viên đạn thứ hai một chút. Làm thế nào để định nghĩa khác nhau đến?

Nếu bạn kiểm soát hữu hạn với các mô hình bộ nhớ khác nhau, các lớp kết quả của automata có các khả năng rất khác nhau. Trên thực tế, đó là một phần rất lớn trong lý thuyết automata liên quan đến chính nó. Một khi bạn nhận ra rằng chơi xung quanh với các định nghĩa có thể dẫn đến các khái niệm thú vị, đó chỉ là điều tự nhiên đối với các nhà nghiên cứu - một nhóm tò mò! - để thử và khám phá không gian của các mô hình có thể.

Để liệt kê chỉ một vài ví dụ về ý tưởng mọi người đã có:

Và vân vân.

Lưu ý rằng bạn cũng có thể sửa đổi các yếu tố khác:

  • Bảng chữ cái - làm cho nó vô hạn, hoặc liên tục.
  • Hàm chuyển đổi - làm cho nó trở thành một mối quan hệ hoặc cho phép -transitions.ε
  • Trạng thái được đặt - làm cho nó vô hạn hoặc cho phép nhiều trạng thái bắt đầu.
  • Các đầu vào - làm cho chúng vô hạn, hoặc cây hoặc các chuỗi thời gian.
  • Hạn chế bổ sung - sử dụng băng nhưng chỉ cho phép di chuyển theo một hướng hoặc cho phép quét k lần (hướng xen kẽ hoặc luôn trái phải?)

Những điều thú vị có thể xảy ra!

Đó là nét đẹp của định nghĩa toán học: bạn thường nhận được một cái gì đó . Sau đó, bạn có thể dành nhiều tháng để tìm hiểu những gì bạn có. Có lẽ nó thú vị, có thể không. Có lẽ nó hữu ích (một câu hỏi đáng sợ sau khi nói chuyện!), Có thể không. Nhưng nó luôn luôn .


27

OmG và Raphael đã trả lời câu hỏi của bạn:

  • automata đẩy xuống sử dụng một ngăn xếp bởi vì chúng được xác định theo cách đó
  • nếu họ không sử dụng ngăn xếp, thứ bạn nhận được là một loại máy tự động khác nhau, với các thuộc tính khác nhau

Tại thời điểm này, bạn có thể hỏi: tại sao giáo sư của tôi trình bày máy tự động đẩy xuống, chứ không phải một số loại máy tự động khác? Điều gì làm cho máy tự động đẩy xuống, với một ngăn xếp, thú vị hơn một máy tự động với một số cấu trúc dữ liệu khác?

Câu trả lời là automata đẩy xuống không xác định có thể nhận ra chính xác các ngôn ngữ không ngữ cảnh , các ngôn ngữ được tạo bởi các ngữ pháp không ngữ cảnh , được giới thiệu sớm trong lịch sử khoa học máy tính, vào những năm 1950, như một kỹ thuật để mô tả cú pháp về ngôn ngữ: cả ngôn ngữ tự nhiên, như tiếng Anh hoặc tiếng Nga và ngôn ngữ máy tính như ngôn ngữ lập trình (ngôn ngữ lập trình đầu tiên họ mô tả là FORTRAN ).

Đây là một vấn đề lớn tại thời điểm đó. Điều khiển họchành vi là tất cả các cơn sốt. Máy tính đã bắt đầu được áp dụng thương mại. Một trong những lĩnh vực họ được áp dụng là xử lý ngôn ngữ . Làm thế nào chúng ta có thể mô tả ngôn ngữ?

Vâng, nó bao gồm các cách nói (những điều mọi người nói hoặc viết ra), bao gồm các chuỗi các mục (từ hoặc âm thanh). Một người muốn nói điều gì đó sẽ phát ra những lời nói đó; một người khác nhận được chúng, và có ý nghĩa với chúng. Điều gì xảy ra nếu chúng ta muốn làm cho một máy tính làm điều tương tự? Chúng ta sẽ cần tìm cách mô tả một ngôn ngữ có thể được dạy cho máy tính. Chúng ta sẽ cần một cách để tạo ra những cách nói hợp lệ mà máy tính có thể sử dụng và cách nhận ra những cách nói mà máy tính có thể sử dụng - như những cách nói thực sự là những cách nói của ngôn ngữ mà con người sử dụng, như tiếng Anh hoặc tiếng Nga.

Mô tả về các thiết bị có thể làm những việc như vậy đã tồn tại: có máy móc nhà nước và các loại automata khác nhau. Tuy nhiên, Noam Chomsky , một nhà ngôn ngữ học toán học tại MIT tham gia vào một dự án dịch thuật cơ học , nhận ra các máy trạng thái không đủ mạnh để mô tả các ngôn ngữ tự nhiên như tiếng Anh, vì chúng không thể mô tả hiện tượng đệ quy trong ngôn ngữ . Anh ta cần một cái gì đó tương tự, nhưng với sức mạnh để mô tả đệ quy, và đi đến ngữ pháp không ngữ cảnh . Ông đã chứng minh rằng những thứ này thực sự có thể mô tả nhiều ngôn ngữ hơn các máy trạng thái có thể, nhưng ít hơn một số kỹ thuật khác - một kết quả được gọi là hệ thống phân cấp Chomsky. Ông hy vọng họ sẽ mô tả các ngôn ngữ như tiếng Anh và tiếng Nga.

Ngữ pháp không ngữ cảnh tạo ra cách nói. Chomsky nghĩ rằng về cơ bản họ đã mô tả cách một người tạo ra câu khi nói. Bạn cũng cần một thiết bị để mô tả cách phát âm được nhận ra. Đó là những gì automata đẩy xuống dành cho. Họ có thể nhận ra chính xác những phát ngôn được tạo ra bởi một ngữ pháp không ngữ cảnh. Vì vậy, họ được cho là mô tả về cơ bản cách con người nhận ra câu khi nghe.

Ngay sau đó, người ta đã phát hiện ra rằng các ngôn ngữ không ngữ cảnh thực sự không có khả năng mô tả cú pháp ngôn ngữ hoàn toàn - bạn cần tất cả các loại máy móc bổ sung để thực hiện đúng. Điều này đúng cho cả ngôn ngữ tự nhiên và ngôn ngữ nhân tạo. (Thành thật mà nói, tôi nghĩ Chomsky có nghĩa là đưa ra các ngôn ngữ đẩy xuống rõ ràng , ngoại trừ anh ta không nhận ra sự khác biệt, và nếu anh ta có, nó sẽ cứu chúng tôi rất nhiều rắc rối.)

Tuy nhiên, ngôn ngữ không ngữ cảnh và automata đẩy xuống là những thiết bị toán học rất đơn giản và thanh lịch, và hệ thống phân cấp Chomsky là một kết quả đơn giản và thanh lịch, vì vậy chúng rất hữu ích trong giáo dục để giải thích những điều cơ bản về mô tả và nhận dạng ngôn ngữ dựa trên máy tính ( ngôn ngữ chính thức lý thuyết ). Vì lý do này, chúng tiếp tục là một phần tiêu chuẩn của chương trình khoa học máy tính lý thuyết và nhiều kỹ thuật được sử dụng trong thực tế dựa trên chúng, vì vậy chúng thực sự là kiến ​​thức cần thiết nếu bạn muốn nghiên cứu bất cứ điều gì liên quan đến xử lý ngôn ngữ tự nhiên, ngôn ngữ lập trình thực hiện và các chủ đề liên quan đến ngôn ngữ khác.

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.