Tại sao chủ nghĩa không xác định là một khái niệm hữu ích?


23

Máy tự động là một mô hình trừu tượng của một máy tính kỹ thuật số. Máy tính kỹ thuật số là hoàn toàn xác định; trạng thái của chúng bất cứ lúc nào cũng có thể dự đoán được duy nhất từ ​​đầu vào và trạng thái ban đầu.

Khi chúng ta đang cố gắng mô hình hóa các hệ thống thực, tại sao lại bao gồm thuyết không thuyết phục trong lý thuyết Automata?


1
Có thể giúp hỏi ai là người mô tả ban đầu về NTM và mục đích / mục tiêu của họ lúc đó là gì.
usul

2
Lưu ý rằng thực tế là máy có tính xác định không phải lúc nào cũng có nghĩa là mã của chúng tôi. Bất cứ ai thực hiện đa nhiệm / đa luồng đều có thể chứng thực rằng thời gian xảy ra chuyển đổi nhiệm vụ thường không thể đoán trước trong bất kỳ thuật ngữ thực tế nào và chúng tôi phải thiết kế các khóa liên động rõ ràng để làm cho hành vi của họ có vẻ quyết định. (Về cơ bản, có các biến ẩn trong trạng thái.) Truyền thông đặt ra vấn đề tương tự. Tôi thực sự không biết liệu NDA có giúp giải quyết những vấn đề này hay không - Tôi là một kỹ sư phần mềm, không phải là nhà khoa học máy tính - nhưng trong thế giới thực, tiền đề của bạn là quá mức.
keshlam

Khi bạn nói về đa luồng, có thể nói, bạn có tính không xác định, ít nhất là nếu bạn xem xét kim loại và HĐH để tạo thành máy. Điều buồn cười là bản thân mã xác định.
Raphael


@keshlam Tôi đã thêm quan điểm của bạn vào câu trả lời của tôi, @ Tanmoy đọc cập nhật câu trả lời của tôi.
Grijesh Chauhan

Câu trả lời:


16

Có, bạn là máy tính chính xác là tự động xác định. Các mô hình không xác định hữu ích hơn cho mục đích lý thuyết, đôi khi giải pháp xác định không rõ ràng đối với định nghĩa (hoặc nói tuyên bố vấn đề) và rất khó tìm giải pháp. Sau đó, một cách tiếp cận là đầu tiên thiết kế một mô hình không xác định có thể tương đối dễ thiết kế và sau đó cố gắng chuyển đổi nó thành mô hình xác định. Dưới đây, tôi đã cố gắng chứng minh những gì tôi muốn nói với một ví dụ. Xem xét biểu thức chính quy:

(01)*01(0 + 1)*  

Bây giờ, giả sử, nếu bạn được yêu cầu vẽ DFA cho ngôn ngữ được tạo bởi RE ở trên.

Với kiến ​​thức của tôi về thiết kế FA, tôi biết rằng (1) khi một *món quà trong biểu thức chính quy chỉ ra tôi cần vòng lặp tương ứng trong các hoạt động nối FA (2) như a.bcó nghĩa là gì đó như : .(q0)─a→(q1)─b→(q2)

Vì vậy, với nỗ lực đầu tiên của mình, tôi sẽ vẽ một NFA như:

sung

Nghĩ rằng đây không phải là một giải pháp xác định nhưng trông FA rất đơn giản có thể dễ dàng thiết kế bằng cách sử dụng biểu thức chính quy định. Kiểu tương tự của tôi để thể hiện sự tương đồng giữa biểu thức chính quy ở trên và NFA của tôi như sau:

  1. Vòng lặp ở trạng thái q 0 nên dành cho(01)*
  2. 01(sau (01)*) cho(q0)─0→(q1)─1→(q2)
  3. (0 + 1)* đưa ra một vòng lặp tự ở trạng thái q 2 cho nhãn 0, 1

Theo sự tương tự của tôi, tôi nghĩ FA tôi đã vẽ ở trên tương đối đơn giản để rút ra từ RE đã cho. Và may mắn là trong lớp automata hữu hạn, mọi mô hình Không xác định có thể được chuyển đổi thành mô hình xác định tương đương. Chúng tôi có phương pháp thuật toán để chuyển đổi NFA thành DFA . Vì vậy, tôi có thể dễ dàng chuyển đổi NFA trên thành DFA:

hình 2

Thật không may, phần này không phải lúc nào cũng có thể chuyển đổi một mô hình không xác định thành mô hình xác định, ví dụ lớp cho tự động đẩy xuống xác định là tập hợp con của lớp tự động đẩy xuống xác định " sơ đồ venn " và bạn luôn không thể chuyển đổi NPDA thành một thiết bị PDA.

Thông thường khi không thể chuyển đổi một giải pháp không xác định thành một giải pháp xác định sau đó với sự trợ giúp của giải pháp không xác định, chúng tôi xác định giải pháp xác định trong miền phụ (hoặc nói một phần miền) thay vì miền hoàn chỉnh. Hoặc chúng tôi xác định giải pháp theo một số cách khác (ví dụ: cách tiếp cận tham lam) mà khóa học có thể không cung cấp cho bạn một giải pháp tối ưu .

Đôi khi, tính không xác định là một cơ chế hiệu quả để mô tả một số vấn đề / giải pháp phức tạp một cách chính xác và hiệu quả, ví dụ, các máy không xác định có thể đóng vai trò là mô hình của thuật toán tìm kiếm và quay lui (đọc: Cách xử lý chuỗi trong mô hình không xác định bằng cách sử dụng backtrack ). Các mô hình xác định đối lập tốt hơn đại diện cho các giải pháp hiệu quả, tối thiểu hóa và ít dự phòng.

Ở đây tôi cũng muốn trích dẫn từ Wikipedia Sử dụng thuật toán không điều kiện :

Trong thiết kế thuật toán, các thuật toán không xác định thường được sử dụng khi vấn đề được giải quyết bằng thuật toán vốn đã cho phép nhiều kết quả (hoặc khi có một kết quả duy nhất với nhiều đường dẫn mà kết quả có thể được phát hiện, mỗi kết quả đều có thể được phát hiện, mỗi cách đều thích hợp hơn). Điều quan trọng, mọi kết quả mà thuật toán không xác định tạo ra là hợp lệ, bất kể lựa chọn nào thuật toán đưa ra trong khi chạy.

Một số lượng lớn các vấn đề có thể được khái niệm hóa thông qua các thuật toán không xác định, bao gồm câu hỏi chưa được giải quyết nổi tiếng nhất trong lý thuyết điện toán, P vs NP.

Như @keshlam cũng đã đề cập trong bình luận của mình : "Nondeterminism" trong thực tế được sử dụng để chỉ bất kỳ sự khó lường nào trong kết quả của một quá trình. Ví dụ, các chương trình đồng thời thể hiện hành vi không xác định - hai lần thực hiện của cùng một chương trình có cùng đầu vào có thể tạo ra kết quả khác nhau (nếu cơ chế kiểm soát tương tranh không được áp dụng). Đọc thêm về điều này trong "Hữu ích của chủ nghĩa không quyết đoán" .

Tôi cũng đề nghị bạn đọc các liên kết sau:
1. Sự khác biệt giữa tính không xác định và tính ngẫu nhiên là gì?
2. 9.2.2 Các mô hình không xác định so với xác suất: (a). Không điều kiện: Tôi không biết bản chất sẽ làm gì. (b). Xác suất: Tôi đã quan sát thiên nhiên và thu thập số liệu thống kê.
3. Lập trình không điều kiện


@Grijest: cảm ơn rất nhiều vì sự công phu to lớn như vậy phức tạp hơn P. Phải không?)
tanmoy

@tan Thực tế sử dụng từ "hiệu quả" là sai, Và vâng, bạn đúng rằng các mô hình không xác định có khả năng hơn so với mô hình xác định. Lớp các vấn đề được bao phủ bởi các mô hình xác định là tập hợp con của mô hình Không xác định.
Grijesh Chauhan

Vì vậy, trong đó các mô hình xác định bối cảnh là "hiệu quả" hơn so với mô hình không xác định (Như bạn đã đề cập)?
tanmoy

@tan Giả sử nếu bạn muốn thực hiện thao tác tiếp theo (ví dụ muốn chuyển FA sang RE hoặc giải thích bằng chứng cho việc bơm bổ đề, hoặc một số khác ..) thì mô hình Xác định cho bạn kết quả tốt hơn (vì vậy tôi đã nói hiệu quả).
Grijesh Chauhan

@tan Bạn có hiểu ngữ pháp mơ hồ không?
Grijesh Chauhan

9

Đó là nhiều cách khác: automata phát sinh đầu tiên, như là mô hình toán học. Và không thuyết phục là khá tự nhiên, bạn thường có một vài con đường mở ra trước mắt bạn. Thay vì một số cách lộn xộn để xác định rằng tất cả các con đường phải được theo dõi đến cuối theo một thứ tự nào đó, và có lẽ bị sa lầy bởi các nhánh vô hạn, và ... chỉ cần sử dụng thuyết không điều kiện.

Và trong khi các ngôn ngữ lập trình không phổ biến không phải là chủ đạo, chúng có một lịch sử phi lý, có lẽ bắt đầu với GCL của Dijkstra . Khi máy móc ngày càng có nhiều lõi (bộ xử lý độc lập), một số dạng không xác định đang thấm vào tất cả các chương trình.


Tôi nghĩ rằng phần đầu tiên của câu trả lời của bạn là thực sự sai. Tại sao bạn nghĩ automata phát sinh đầu tiên? Cả DFA và NFA đã được xác định hơn 10 năm sau khi Turing được xác định TM. Xem các cuộc thảo luận về cstheory
Artem Kaznatcheev

@ArtemKaznatcheev, mô hình máy Turing là một máy tự động, và nó chắc chắn có trước máy tính ít nhất một thập kỷ.
vonbrand

đúng, nhưng khi mọi người nói automata họ không có nghĩa là TM mà họ có nghĩa là automata trạng thái hữu hạn và các phần mở rộng trực tiếp của họ (PDA, NPDA, v.v.). Xem câu hỏi tôi đã liên kết cho một lịch sử ở đó và bạn sẽ thấy rằng cả TM và kiến ​​trúc von Neumann được phát triển độc lập với những gì chúng ta gọi là lý thuyết automata.
Artem Kaznatcheev

4
@ArtemKaznatcheev, DFA / NFA, PDA, LBA, TM đều là automata. Cũng như đầu dò (FA có đầu ra, PDA có đầu ra).
vonbrand

1
Đoạn cuối là sai. Prolog có trước GCL, và thậm chí vẫn còn xung quanh và khá chính thống. Prolog tất nhiên không được thiết kế trong môi trường chân không, dựa trên các ngôn ngữ lập trình không phổ biến trước đây như PLANNER. Khoản tín dụng có thể được chuyển đến Golomb và Baumert "Lập trình quay lui" từ năm 1965.
Bút danh

7

NFA có thể được sử dụng trong thực tế, hãy kiểm tra câu trả lời này trên stackexchange. Lý do là việc xây dựng powerset có thể được mô phỏng nhanh chóng, có thể nói như vậy. Để mô phỏng NFA trên máy tính xác định, chúng tôi chỉ theo dõi các trạng thái có thể có của NFA. Thông thường, con số này sẽ nhỏ và do đó mô phỏng sẽ nhanh. Điều này thực tế hơn nhiều so với việc chạy cấu trúc sức mạnh thực tế: máy tự động thu được có thể rất lớn, mặc dù trong thực tế, hầu hết các bộ sẽ hiếm khi đạt được.

Nondeterminism cũng quan trọng đối với độ phức tạp tính toán, trong đó nó được sử dụng để xác định NP lớp. (NP lớp cũng có các định nghĩa tương đương khác, ví dụ như sử dụng các nhân chứng.)


hiểu câu trả lời của bạn nhưng không thể nắm bắt nó một cách chính xác. Bạn có thể giải thích thực tế rằng làm thế nào việc xây dựng powerset có thể được thực hiện dễ dàng bằng cách sử dụng không thuyết phục?
tanmoy

"Nondeterminism cũng rất quan trọng đối với độ phức tạp tính toán, trong đó nó được sử dụng để xác định NP lớp." - điều đó chỉ hỗ trợ tầm quan trọng của tính không xác định nếu chúng ta cho rằng NP là một khái niệm hữu ích, điều này chỉ có khi tính không xác định là hữu ích.
Raphael

@Raphael NP-đầy đủ là một khái niệm quan trọng bất kể lập trường của bạn về tính không xác định.
Yuval Filmus

2
@Tanmoy Nếu bạn không có kiến ​​thức không cần thiết, bạn không cần xây dựng quyền hạn, nhưng thật không may, máy tính thực sự mang tính quyết định. Tuy nhiên, có thể dễ dàng mô phỏng NFA trực tiếp hơn là chuyển đổi nó thành DFA trước. Kiểm tra câu trả lời tôi liên kết để biết thêm chi tiết.
Yuval Filmus

4

Bạn nói chính xác rằng automata là mô hình, do đó, có hai phần sử dụng không xác định có thể có:

  1. Sử dụng trong mô hình các vấn đề thực tế.

    Hơn nữa, automata không xác định có thể cung cấp các biểu diễn ngôn ngữ nhỏ gọn hơn. Ví dụ, người ta biết rằng có NFA có DFA tương đương tối thiểu lớn hơn theo cấp số nhân.

  2. Sử dụng trong lý thuyết.

    Sử dụng tính không xác định có thể đơn giản hóa các bằng chứng, xem ví dụ: chuyển đổi các biểu thức chính quy thành automata hữu hạn.


4

(Đây là cách viết lại một số câu trả lời khác nhưng dù sao tôi cũng sẽ đăng nó :)

Bạn viết: Máy tự động là một mô hình trừu tượng của máy tính kỹ thuật số.

Tôi không đồng ý! Mô hình Automata làm thế nào con người chúng ta chỉ định tính toán, không chỉ cách máy tính thực hiện nó. Nondeterminism chính xác là sự khác biệt. Thông số kỹ thuật của chúng tôi thường không đặc biệt.

Ví dụ, lấy hợp nhất sắp xếp . Sắp xếp hợp nhất là sắp xếp bằng cách chia các mục được sắp xếp thành hai nửa có kích thước gần bằng nhau, sắp xếp mỗi nửa bằng cách sử dụng sắp xếp hợp nhất và hợp nhất các kết quả được sắp xếp. Điều này hoàn toàn xác định ý tưởng sắp xếp hợp nhất, nhưng nó không mang tính quyết định: nó không chỉ định một thứ tự sắp xếp các nửa (đối với tất cả chúng ta quan tâm, nó có thể được thực hiện đồng thời), cũng không chỉ định một cách chính xác để xác định sự phân chia. Những chi tiết đó sẽ cần phải được điền vào để đi đến một phiên bản sắp xếp theo thứ tự xác định, có thể được thực hiện bởi một chương trình máy tính một luồng, nhưng tôi sẽ nói rằng chúng là một phần của một cách cụ thể để thực hiện sắp xếp hợp nhất, không phải ý tưởng hợp nhất sắp xếp chính nó.

Điều tương tự cũng đúng với các thuật toán nói chung - ví dụ: công thức nấu ăn. Một số người định nghĩa các thuật toán là xác định, trong trường hợp này, khái quát hơn và theo tôi, khái niệm tự nhiên hơn về 'thuật toán' cần một tên khác.

Ý tưởng làm việc với các thông số kỹ thuật không điều kiện đã được chính thức hóa bằng phương pháp lập trình của Dijkstra, bắt đầu bằng các thông số kỹ thuật chỉ cung cấp trước và sau điều kiện để chương trình đáp ứng, và phát triển một cách có hệ thống một chương trình bắt buộc, có tính xác định từ chúng. Dijkstra có lẽ đã nói: sắp xếp là vấn đề, mối quan hệ giữa trước và sau điều kiện chúng tôi đang cố gắng thiết lập; hợp nhất sắp xếplà một cách tiếp cận để làm điều đó, ở đâu đó giữa đặc tả vấn đề và giải pháp xác định; một thuật toán sắp xếp hợp nhất xác định là một giải pháp xác định cụ thể. Nhưng cách tiếp cận chung tương tự có thể được sử dụng để phát triển các chương trình đồng thời, trong đó chương trình cuối cùng vẫn không có tính xác định. Các chương trình như vậy có thể được chạy trong môi trường điện toán phân tán.


2

Bạn nói đúng, chúng ta KHÔNG thể xây dựng một cỗ máy không xác định. Do đó, mục đích là không sử dụng khái niệm để xây dựng các máy móc tốt hơn. Thay vào đó, nondeterminism là một khái niệm hữu ích khi cố gắng hiểu tính toán. Ví dụ, bây giờ chúng ta biết rằng, từ góc độ tính toán, chủ nghĩa không điều kiện không phải là thứ gì đó mạnh hơn chủ nghĩa quyết định, có nghĩa là chúng ta có thể mô phỏng một cỗ máy không xác định bằng cách sử dụng một máy xác định. Tuy nhiên, từ góc độ phức tạp, ví dụ, không thuyết phục cho phép chúng ta suy luận và cố gắng hiểu mối quan hệ giữa khó khăn trong việc tìm giải pháp hiệu quả cho một vấn đề và khó khăn trong việc xác minh giải pháp (đó là vấn đề P so với NP nổi tiếng) . Và như vậy. Do đó, lý do chính để nghiên cứu chủ nghĩa không điều kiện là lý thuyết.


Bối cảnh không có bối cảnh so với bối cảnh không xác định?
alto

@alto Còn nó thì sao?
babou

@babou Tôi đã cố gắng chỉ ra rằng "chủ nghĩa không xác định không phải là thứ gì đó mạnh hơn chủ nghĩa quyết định", là một tuyên bố sai lầm. NPDA mạnh hơn các máy PDA.
vào

1
@alto: không, bạn đang hiểu nhầm câu nói. Từ góc độ tính toán, chúng hoàn toàn tương đương, vì loại vấn đề (hoặc ngôn ngữ nếu bạn muốn) mà bạn có thể giải quyết ĐỘC LẬP về số lượng tài nguyên tính toán được yêu cầu là như nhau. Và thực sự, bạn CÓ THỂ mô phỏng một cỗ máy không xác định với một máy xác định. Một lần nữa, thời gian và không gian cần thiết KHÔNG CÓ VẤN ĐỀ trong bối cảnh tính toán.
Massimo Cafaro

1
Về mặt lý thuyết, @MassimoCafaro không thể đồng ý nhiều hơn. Trong thực tế có vẻ như tôi thích ngụy biện về ngữ nghĩa.
alto

2

phát minh ra máy Turing là vào năm 1936 bởi Turing. Các mô hình giống như FSM đã được McCulloch và Forge , hai nhà sinh lý thần kinh giới thiệu , như là một mô hình cho hoạt động sinh học thần kinh vào năm 1943. từ trang lịch sử CS của Stanford :

Lịch sử thú vị về cách automata hữu hạn trở thành một nhánh của khoa học máy tính minh họa cho nhiều ứng dụng của nó. Những người đầu tiên xem xét khái niệm về một cỗ máy trạng thái hữu hạn bao gồm một nhóm các nhà sinh vật học, nhà tâm lý học, nhà toán học, kỹ sư và một số nhà khoa học máy tính đầu tiên. Tất cả họ đều có chung một sở thích: mô hình hóa quá trình suy nghĩ của con người, cho dù trong não hay trong máy tính. Warren McCulloch và Walter Pitts, hai nhà sinh lý học thần kinh, là những người đầu tiên trình bày một mô tả về automata hữu hạn vào năm 1943. Bài báo của họ, có tựa đề "Tính toán logic trong hoạt động thần kinh", đã đóng góp đáng kể cho nghiên cứu lý thuyết mạng thần kinh, lý thuyết về automata, lý thuyết về tính toán và điều khiển học. Sau đó, hai nhà khoa học máy tính, GH Mealy và EF Moore, khái quát hóa lý thuyết cho các máy mạnh hơn nhiều trong các bài báo riêng biệt, được xuất bản năm 1955-56. Các máy trạng thái hữu hạn, máy Mealy và máy Moore, được đặt tên để công nhận công việc của chúng.

không phải là nhà sử học CS, nhưng nghi ngờ rằng mô hình McCulloch-Pitts không bao gồm thuyết không thuyết phục và mô hình Mealy - Moore đã làm, trong một khái quát / trừu tượng tự nhiên của khái niệm chính thức / lý thuyết. lưu ý rằng các DFA và NFA có cùng sức mạnh đại diện để nếu một người muốn mô hình hóa các hệ thống thực thì có một sự lựa chọn. một điểm khác biệt cơ bản là NFA có thể nhỏ hơn nhiều so với DFA tương đương (ví dụ: có yếu tố tự nhiên là nén dữ liệu / thông tin). cũng có những khía cạnh tự nhiên / tương tự của sự song song trong nghiên cứu NFA.


3
Này, tôi đã xem hồ sơ của bạn và có vẻ như ai đó cố tình bỏ phiếu cho câu trả lời của bạn (mỗi nơi bạn chỉ có hai lượt tải xuống ) ... Câu trả lời này không sai , câu trả lời thêm thông tin hữu ích. +1
Grijesh Chauhan

0

Trước hết tôi muốn nói lời cảm ơn đến tất cả những người đã trả lời câu hỏi. Tất cả các câu trả lời đều quan trọng và thêm một số thông tin hữu ích. Nhưng vì đây là một câu hỏi khó đối với người mới bắt đầu và cần có đủ thời gian để hiểu rõ về nó, tôi sẽ cố gắng tóm tắt những gì tôi đã đạt được từ tất cả các câu trả lời và từ một số cuốn sách:

Thật ra tôi đã có một sự nhầm lẫn đó là về cơ chế của mô hình không điều kiện. Tôi luôn tự hỏi về cỗ máy không xác định vì nó là một cỗ máy phi cơ học không tồn tại trong thế giới thực. Tôi luôn so sánh Automata với các máy tính ngày nay hoàn toàn mang tính quyết định. Thực tế tôi không hiểu đúng về mô hình không xác định. Bây giờ tôi nghĩ rằng tôi hiểu khá rõ về mô hình không phá hủy: Một cỗ máy không xác định là một cỗ máy luôn đi theo con đường thực thi đó dẫn đến sự chấp nhận chuỗi (Không quay lui). Nhưng làm thế nào điều này có thể xảy ra trong cuộc sống thực? : Hoàn toàn không thể cho máy tính ngày nay thông minh như vậy để dự đoán tương lai. Vậy tại sao không thuyết phục gì cả?. Trả lời câu hỏi này khá khó. Tôi đã kết luận gì về câu hỏi đó là: Lý thuyết Automata đã tồn tại khi máy tính không tồn tại (Lý thuyết đầu tiên sau đó thực tế). Đây hoàn toàn là chủ đề lý thuyết và khái niệm về chủ nghĩa không thuyết phục được đưa ra bằng trực giác. Động lực của chủ đề 'Lý thuyết tự động' không phải là để đối phó với các máy tính thực tế. Nhưng khi máy tính thực tế đến sau đó sử dụng Lý thuyết tự động, chúng ta có thể định nghĩa chính xác các máy tính thực tế: những hạn chế của máy tính ngày nay là gì. Vấn đề thuật toán rất phức tạp đối với máy tính và rất không thực tế (Ở đây vai trò của thuyết nondererminism rất quan trọng có thể phân biệt hai lớp phức tạp P và NP). Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Đây hoàn toàn là chủ đề lý thuyết và khái niệm về chủ nghĩa không thuyết phục được đưa ra bằng trực giác. Động lực của chủ đề 'Lý thuyết tự động' không phải là để đối phó với các máy tính thực tế. Nhưng khi máy tính thực tế đến sau đó sử dụng Lý thuyết tự động, chúng ta có thể định nghĩa chính xác các máy tính thực tế: những hạn chế của máy tính ngày nay là gì. Vấn đề thuật toán rất phức tạp đối với máy tính và rất không thực tế (Ở đây vai trò của thuyết nondererminism rất quan trọng có thể phân biệt hai lớp phức tạp P và NP). Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Đây hoàn toàn là chủ đề lý thuyết và khái niệm về chủ nghĩa không thuyết phục được đưa ra bằng trực giác. Động lực của chủ đề 'Lý thuyết tự động' không phải là để đối phó với các máy tính thực tế. Nhưng khi máy tính thực tế đến sau đó sử dụng Lý thuyết tự động, chúng ta có thể định nghĩa chính xác các máy tính thực tế: những hạn chế của máy tính ngày nay là gì. Vấn đề thuật toán rất phức tạp đối với máy tính và rất không thực tế (Ở đây vai trò của thuyết nondererminism rất quan trọng có thể phân biệt hai lớp phức tạp P và NP). Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Nhưng khi máy tính thực tế đến sau đó sử dụng Lý thuyết tự động, chúng ta có thể định nghĩa chính xác các máy tính thực tế: những hạn chế của máy tính ngày nay là gì. Vấn đề thuật toán rất phức tạp đối với máy tính và rất không thực tế (Ở đây vai trò của thuyết nondererminism rất quan trọng có thể phân biệt hai lớp phức tạp P và NP). Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Nhưng khi máy tính thực tế đến sau đó sử dụng Lý thuyết tự động, chúng ta có thể định nghĩa chính xác các máy tính thực tế: những hạn chế của máy tính ngày nay là gì. Vấn đề thuật toán rất phức tạp đối với máy tính và rất không thực tế (Ở đây vai trò của thuyết nondererminism rất quan trọng có thể phân biệt hai lớp phức tạp P và NP). Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện. Các giải pháp cho những vấn đề không thực tế này là gì mà nó có thể được thực hiện tương đối nhanh hơn.etc. Đây là sự hữu ích của thuyết không điều kiện.

Xin hãy sửa cho tôi nếu có gì sai.


Thật sai lầm khi nói rằng một cỗ máy không xác định là một cỗ máy luôn đi theo con đường thực thi dẫn đến sự chấp nhận chuỗi . Nó không làm điều đó! Một máy không xác định là một máy có hoạt động cho phép một số lựa chọn không được truyền (= nondeterministic) được thực hiện trong khi thực hiện. Không có gì phi thực tế về những máy như vậy, ví dụ họ có thể yêu cầu môi trường đưa ra những lựa chọn đó. Những máy này sau đó được áp dụng cho các nhiệm vụ mà theo đó các lựa chọn nhất định sẽ tạo ra trạng thái chấp nhận.
Revierpost

@reinierpost: Vì vậy, bạn đang nói rằng các máy không xác định thực sự tồn tại trong cuộc sống thực.
tanmoy

Vâng. Dưới đây là một ví dụ: giả sử bạn đang lái xe và bạn không đưa ra bất kỳ quyết định nào trên tuyến đường cần tuân theo. Chẳng hạn, bạn có thể đang lái xe xung quanh một cách vô vọng, hoặc bạn có thể đang chỉ đường từ một hoa tiêu của con người hoặc một thiết bị điều hướng. Chiếc xe và bạn là một hệ thống không điều kiện để lái xe địa điểm. Bạn di chuyển qua giao thông và tiếp tục gặp phải những lựa chọn nên đi theo hướng nào. Đối với bạn và chiếc xe, những lựa chọn này là không nhất định: bạn không quyết định sẽ đi theo hướng nào, nhưng đưa ra quyết định đó, bạn sẽ đi theo nó.
Revierpost

@reinierpost: Có máy tính không xác định nào tồn tại không? Câu trả lời của tôi là KHÔNG. bởi vì nếu nó tồn tại thì các bài toán NP sẽ có độ phức tạp thời gian đa thức. phải không
tanmoy

Việc máy tính là xác định hay không xác định phụ thuộc vào cách bạn nhìn vào chúng. Khi một máy tính dừng lại và chờ người dùng làm gì đó và các hành động tiếp theo của nó sẽ phụ thuộc vào những gì người dùng làm, bạn có thể nói đó là một lựa chọn không xác định. Không, điều này không ngụ ý rằng P = NP.
rebierpost

0

không xác định là hữu ích bởi vì nó giúp bạn hiểu được tính quyết định, nhưng không phải là cách khác. Bạn có thể nói chủ nghĩa không xác định là ý tưởng lớn hơn. Một máy Turing xác định là một trường hợp đặc biệt của một máy không xác định. - Nondeterminism có thể giúp chúng ta hiểu tại sao, trên các nền tảng ngày nay, một số vấn đề khó có thể xác định được. Có một số vấn đề tính toán không có giải pháp hiệu quả trên nền tảng điện toán xác định, nhưng chúng tôi hiểu rằng có thể có các giải pháp hiệu quả trên các vấn đề không xác định. ... trạng thái, mã hóa, không phá hủy tất cả chúng đều được liên kết http://people.cs.umass.edu/~rsnbrg/teach-eatcs.pdf

Trong một máy Turing xác định, tập hợp các quy tắc quy định tối đa một hành động được thực hiện cho bất kỳ tình huống nào. Ngược lại, một máy Turing không xác định (NTM) có thể có một bộ quy tắc quy định nhiều hơn một hành động cho một tình huống nhất định. http://en.wikipedia.org/wiki/Non-deterministic_Turing_machine Nếu bạn có thể xây dựng một hộp phần mềm có thể quản lý chuyển đổi trạng thái tốt đến mức nó có thể xử lý nhiều hơn một hành động bạn có thể đạt được hiệu suất ngoài các máy xác định.


Tôi không chắc chắn các liên kết bị cáo buộc đến thực tế là hữu ích. Rõ ràng là chúng ta không thể xây dựng một cỗ máy không xác định (ít nhất là ngày nay) nên nó hoàn toàn là một cấu trúc lý thuyết.
Raphael

Chúng ta có thể xây dựng một cỗ máy không xác định bằng cách để cho các quyết định không xác định được thực hiện bởi một cái gì đó bên ngoài máy.
rebierpost

@ rebierpost, quan trọng hơn là chúng ta có thể xây dựng các máy không xác định như các máy xác định, mà không phát sinh chi phí theo cấp số nhân. xem Định lý Savitch. vi.wikipedia.org/wiki/Savitch's_theorem
Tom

@ Raphael, một số tài liệu tham khảo về thế giới thực rất quan trọng. Tại sao bộ nhớ đệm hoạt động? Bởi vì các sự kiện trong thế giới thực, cuối cùng là nguồn gốc của tất cả dữ liệu, xảy ra theo một phân phối bình thường. xem địa phương tạm thời: durablescope.blogspot.co.at/2009/11/ từ
Tom

@ rebierpost, và cái gì đó bên ngoài là thứ mà Turing gọi là cỗ máy tiên tri. Tôi nghĩ rằng bạn có thể nghĩ rằng nếu đó là dữ liệu từ bộ nhớ cache hoặc một cái gì đó giống như một máy nhiều băng hoặc thậm chí chạm vào bộ nhớ truy cập ngẫu nhiên.
Tom

0

Tại sao khái niệm không xác định hữu ích?

Chủ nghĩa quyết đoán có xu hướng mạnh mẽ để phá vỡ các đối xứng. Xu hướng này thậm chí còn mạnh hơn đối với tính xác định tuần tự, nhưng khái niệm biểu đồ định hướng theo chu kỳ và thứ tự tôpô của biểu đồ đó cho phép bỏ qua sự khác biệt giữa tính xác định và tính xác định tuần tự. Không xác định là một siêu tập hợp của chủ nghĩa quyết định, cho phép bảo tồn nhiều đối xứng hơn. Khi thiết kế giải pháp cho một vấn đề, bắt đầu với giải pháp không xác định cho phép duy trì các đối xứng hữu ích, và giữ cho mô tả của giải pháp nhỏ và gọn. Việc phá vỡ các đối xứng sau đó có thể được ủy quyền cho giai đoạn sau trong quá trình thực hiện, đồng thời chuyển đổi giải pháp không xác định sang giải pháp xác định.

Thông thường tính không xác định có nghĩa là khái niệm hàm một phần được thay thế bằng khái niệm quan hệ. Trong trường hợp đó, một máy không xác định có thể chạy cả tiến và lùi theo thời gian, trong khi nói chung điều này là không thể đối với một máy xác định. Thay vào đó, nếu chúng ta làm việc với tổng số hàm cho tính xác định và tổng hàm đa trị cho tính không xác định, thì tính đối xứng không còn tốt nữa, nhưng nó vẫn có thể được thực hiện để hoạt động.


Bạn có thể cho một ví dụ cụ thể? Tôi thấy thật khó để thấy những gì bạn có nghĩa là "đối xứng" ở đây.
Raphael

@Raphael Làm thế nào về việc đảo ngược (01) * 01 (0 + 1) * thành (0 + 1) * 10 (10) * sao cho nó nhận ra chuỗi đầu vào đảo ngược và áp dụng đối xứng này cho máy không xác định bằng cách đảo ngược tất cả mũi tên và hoán đổi trạng thái bắt đầu và kết thúc? Tôi không chắc chắn liệu có những ví dụ thú vị hơn đáng kể cho các máy trạng thái hữu hạn hay không, nhưng tôi có thể thử đưa ra một ví dụ thú vị cho một chiếc PDA thay thế.
Thomas Klimpel

Tôi đã viết về câu trả lời của mình cho một câu hỏi tương tự trong một bài đăng trên blog về Khả năng đảo ngược của quan hệ nhị phân, ma trận thay thế và các hàm một phần .
Thomas Klimpel
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.