Định lý không hoàn chỉnh của Gôdels (đầu tiên) và vấn đề dừng lại - Làm thế nào hạn chế?


8

Khi tôi lần đầu tiên nghe về những điều này, tôi đã rất thích thú vì tôi nghĩ rằng nó thực sự đặt ra giới hạn cho toán học và khoa học nói chung. Nhưng làm thế nào thực tế có liên quan là những điều này?

Đối với vấn đề dừng: Có nhiều hơn một số trường hợp được xây dựng giả tạo, trong đó người ta không thể quyết định liệu thuật toán sẽ chấm dứt hay không?

Đối với Định lý không đầy đủ: Có nhiều hơn một số trường hợp được xây dựng giả tạo, trong đó người ta không thể chứng minh / bác bỏ tuyên bố?

Tôi đang hỏi điều này bởi vì dường như trong hầu hết các lĩnh vực khoa học, thực sự không có vấn đề gì có những hạn chế cơ bản như vậy. Họ thậm chí còn ở đó? Tôi muốn biết nơi này thực sự đặt ra giới hạn và nơi thực sự có liên quan.


4
Kết quả vấn đề tạm dừng không nói rõ rằng bạn không thể quyết định liệu một TM đã cho không dừng lại. Nó nói rằng không có thuật toán chung nào có thể quyết định điều đó cho tất cả TM.
babou

2
Vâng, nhưng ý nghĩa thực tế của việc này là gì? Nó thực sự có liên quan hay nó chỉ quan trọng trong các trường hợp được xây dựng nhân tạo?
Nocta

Có lẽ một cái gì đó để xem xét là lập trình chức năng tổng thể, cho phép chỉ chấm dứt các chương trình. Sau đó, bạn có thể thấy mức độ thường xuyên các học viên phải rơi vào lập trình chức năng yếu (Turing hoàn thành) để giải quyết vấn đề. Đối với các ngôn ngữ lập trình mục đích chung có liên quan, tôi chỉ nghe nói về Idris - phần còn lại dường như là các định lý định lý.
Guildenstern

1
Nhiều vấn đề toán học thú vị và khó có thể được giải quyết dễ dàng nếu vấn đề tạm dừng có thể được giải quyết. Ví dụ, Định lý cuối cùng của Fermat. Mất 5 phút để viết một chương trình sẽ dừng lại khi và chỉ khi có giải pháp cho a ^ n + b ^ n = c ^ n với a, b, c> 0 và n> = 3. Nếu bạn chứng minh hoặc từ chối rằng nó dừng lại, đó là FLT đã được chứng minh. "Có vô số số nguyên tố sinh đôi" chỉ khó chứng minh hơn một chút nếu vấn đề tạm dừng được giải quyết.
gnasher729

2
Vui lòng giới hạn bản thân một câu hỏi cho mỗi bài đăng; hai định lý mà bạn tham khảo ít liên quan đến nhau. Phrasing của bạn cũng gợi ý rằng bạn không thực sự hiểu những gì họ nói (xem bình luận của babou); bạn phải đọc thêm Đây là những tuyên bố chính thức về toán học sâu sắc mà không thể nắm bắt một cách chính xác theo kiểu khoa học đại chúng.
Raphael

Câu trả lời:


9

Vấn đề tạm dừng là không thể giải quyết được có rất nhiều liên quan thực tế, đây là một ví dụ nhanh:

Viết phần mềm chống vi-rút rất khó: Chúng tôi không thể quyết định liệu một đoạn mã nhất định có độc hại hay không bởi vì nếu chúng tôi có thể quyết định vấn đề tạm dừng.

Để thấy điều này, hãy lấy một đoạn mã lấy đầu vào là máy Turing và một từ đầu vào w và thực hiện một cái gì đó độc hại khi và chỉ khi MMwMw

Điều này đang nói là không có phần mềm chống vi-rút hoàn hảo, không thể thực hiện được. Điều đó không có nghĩa là chúng ta không nên cố gắng viết sotware chống vi-rút, chỉ là chúng ta sẽ không bao giờ có thể viết một cái hoàn hảo. Trong thực tế, bất kỳ tuyên bố nào về việc quyết định chương trình nào làm là không thể giải quyết được (xem định lý của Rice ).

Đối với định lý của Godel, định lý của Goodstein là một ví dụ về một tuyên bố không thể chứng minh được bằng cách sử dụng các tiên đề Peano.


5
Với sự tôn trọng, tôi nghĩ câu trả lời này là một ví dụ hoàn hảo về việc không tạo ra sự khác biệt mà OP đang hỏi về: bạn đang sử dụng vấn đề tạm dừng theo cách không liên quan thực tế. Trong thực tế, không có lý do nào để một đoạn mã lành tính chứa các hướng dẫn thực hiện một hành động độc hại, vì vậy chúng ta không thể biết liệu các lệnh đó có được thực thi hay không; nếu chúng ở đó, mã có thể được coi là độc hại.
Harry Johnston

(Tôi nghi ngờ bạn có thể rút ra kết luận tương tự đúng hơn bằng cách xem xét thay vào đó các bộ hướng dẫn có hiệu lực kết hợp có thể là lành tính hoặc độc hại, tùy thuộc vào sự kết hợp các hướng dẫn nào được thực thi, và sau đó lập luận rằng trong các trường hợp phù hợp, bạn không thể tìm ra sự kết hợp nào là có thể. Nhưng tôi không chắc chắn làm thế nào để kết hợp tất cả lại với nhau một cách chặt chẽ.)
Harry Johnston

@HarryJohnston Một khả năng là ngụy trang các hướng dẫn độc hại trong dữ liệu. Đối với một số chương trình, chúng tôi có thể không thể quyết định liệu dữ liệu này có được thực thi dưới dạng mã hay không, hoặc chỉ đơn giản là một chuỗi lành tính trông giống như các hướng dẫn độc hại. Tất nhiên trong các hệ điều hành chính (và thậm chí cả bộ xử lý), có một sự tách biệt bắt buộc giữa bộ nhớ thực thi chỉ đọc và bộ nhớ dữ liệu có thể ghi, nhưng có những tình huống không phải là trường hợp này.
WaelJ

@HarryJohnston: Điều đó sẽ đúng nếu chúng ta có thể truy vấn bit ác của hướng dẫn, nhưng chúng ta không thể. Phần mềm tùy ý của tôi đọc tệp cấu hình từ ~ / Tài liệu và hỗ trợ xóa cấu hình của chính nó. Có một đường dẫn thực thi trong đó "tập tin cần xóa" được đặt thành ~ / Tài liệu trước khi "xóa" được gọi, điều này cực kỳ độc hại, nhưng không có cách nào để nói "này, ứng dụng này có hai điều này, nó phải độc hại ! " mà không cần nhìn những gì nó đang làm với họ. Mà bạn không thể làm trong trường hợp chung, vì vấn đề tạm dừng.
Phoshi

@Phoshi: vâng, đó là một ví dụ về lập luận tôi mô tả trong bình luận thứ hai của mình. Theo suy đoán của tôi, có thể đưa ra những giả định khắt khe này với những giả định nhất định, mặc dù tôi không rõ ràng ra khỏi đầu mình cách tốt nhất để tiếp cận nó. OTOH, có thể là để làm cho nó nghiêm ngặt, bạn cần cho phép ứng dụng tự phân tích (nghĩa là kiểm tra mã của chính nó) và nó sẽ an toàn trong thực tế để không cho phép điều này.
Harry Johnston

6

Đối với vấn đề dừng: Có nhiều hơn một số trường hợp được xây dựng giả tạo, trong đó người ta không thể quyết định liệu thuật toán sẽ chấm dứt hay không?

có khá nhiều bối cảnh "gần như thực tế / được áp dụng" với nghiên cứu tích cực trong đó vấn đề tạm dừng đóng vai trò:

  • định lý tự động chứng minh . chứng minh các định lý của máy tính chạy vào cùng giới hạn không thể giải quyết được của vấn đề tạm dừng.

  • chứng minh chấm dứt chương trình cho các chương trình thực là một lĩnh vực nghiên cứu và hiển thị trong ví dụ logic trình biên dịch và phân tích chương trình.

  • Độ phức tạp Kolmogorov cố gắng nghiên cứu các giới hạn lý thuyết của các thuật toán nén dữ liệu. tìm một nén tối ưu (theo một nghĩa nào đó, nghĩa là tìm TM nén nhỏ nhất một chuỗi) là không thể giải quyết được.

  • không chắc chắn xuất hiện trong một số vấn đề vật lý. ví dụ hệ thống động lực .

  • một vấn đề cơ bản được nghiên cứu gọi là vấn đề "hải ly bận rộn" . vẫn còn lý thuyết nhưng ít trừu tượng hơn vấn đề tạm dừng và đặc biệt nghiên cứu về mối liên hệ của nó. các nhà nghiên cứu đã cố gắng giải quyết vấn đề này trong nhiều thập kỷ cho các TM "nhỏ" với một vài trạng thái / biểu tượng.

đây là một trích dẫn có liên quan / thú vị từ một bài báo gần đây nghiên cứu về vấn đề hải ly bận rộn "các vấn đề trong lý thuyết số từ cạnh tranh hải ly bận rộn" của Michel (tr.3):

Trên thực tế, vấn đề tạm dừng cho các máy Turing được phát hành trên một băng trống đã hoàn tất và điều này ngụ ý rằng vấn đề này cũng khó như vấn đề về tính khả thi của một tuyên bố toán học trong một lý thuyết logic như ZFC (Zermelo Fraenkel đặt lý thuyết với tiên đề của sự lựa chọn). Vì vậy, khi các máy Turing với ngày càng nhiều trạng thái và ký hiệu được nghiên cứu, có khả năng tất cả các định lý toán học sẽ được đáp ứng. Khi ngày càng có nhiều máy Turing không dừng được nghiên cứu để chứng minh là không dừng, người ta phải đối mặt với những vấn đề khó mở trong toán học, đó là những vấn đề mà kiến ​​thức toán học hiện tại không thể giải quyết.

nói cách khác, vấn đề tạm dừng thực sự mã hóa / gói gọn thách thức của việc cố gắng chứng minh các định lý toán học mới trong toán học / CS và do đó có thể được coi là cực kỳ sâu sắc / thực tế / được áp dụng theo nghĩa này. (tuy nhiên trong khi một số người coi quan sát này là rõ ràng hoặc tầm thường, thì điều này thường không phải là một ý kiến ​​thường được tổ chức / lên tiếng.)


Ngoài ra, ví dụ Penrose lập luận rằng tính không ổn định là yếu tố ngăn cản AI trong tâm trí mới của Hoàng đế
vzn

một bối cảnh lớn khác mà sự không chắc chắn xuất hiện là trong một số câu hỏi toán học cơ bản. có lẽ cơ bản / nổi tiếng nhất là vấn đề thứ 10 của Hilberts , Diophantine eqns trong đa thức. Ngoài ra, tính không ổn định xuất hiện trong một số câu hỏi về fractals, ví dụ như bộ Mandelbrot, v.v.
vzn

5

Tôi đang trả lời một trong hai câu hỏi của bạn, liên quan đến vấn đề tạm dừng.

Đầu tiên, tính không ổn định của vấn đề tạm dừng không nói rõ rằng bạn không thể quyết định liệu một TM đã cho không dừng lại. Nó nói rằng không có thuật toán chung nào có thể quyết định điều đó cho tất cả TM.

Đây là một tuyên bố về các mô hình của chúng tôi về những gì tạo nên tính toán. Nhưng, theo luận điểm của Turing-Church, đó là tất cả những gì chúng ta phải thể hiện sự tính toán.

Về sự liên quan, nó dựa trên các máy Turing được chế tạo nhân tạo. Nhưng sau đó, tất cả các TM đều khá giả tạo và được xây dựng chỉ để khẳng định một số sự thật về tính toán. Cho dù một số TM có liên quan nhiều hơn những người khác trong thực tế cũng là một câu hỏi quan trọng như giới tính của các thiên thần, hoặc số lượng chúng có thể đứng trên đầu kim.

Tính không ổn định của vấn đề tạm dừng cho chúng ta biết rằng có những câu hỏi chung không thể giải quyết bằng một kỹ thuật chung áp dụng cho tất cả các trường hợp. Ý tôi là câu hỏi chung là một câu hỏi tùy thuộc vào một số tham số, trong đó câu trả lời được tìm thấy cho một số giá trị của các tham số.

Hãy nhớ lại rằng mục đích của phần lớn toán học của chúng tôi là tìm ra các kỹ thuật chung để giải quyết một vấn đề gia đình. Một ví dụ điển hình là độ phân giải của phương trình. Tính không ổn định của vấn đề tạm dừng cho chúng ta biết rằng điều này không phải lúc nào cũng có thể.

Ví dụ, nó có thể được sử dụng để chỉ ra rằng không có kỹ thuật chung để quyết định liệu một ngữ pháp không ngữ cảnh có mơ hồ hay không.

Tuy nhiên, câu hỏi của bạn là một câu hỏi hợp lệ. Có thể đó là một vấn đề không thể giải quyết được vì bạn chỉ làm cho nó hơi quá chung chung. Có thể, bằng cách hạn chế nó một chút, bạn có thể làm cho nó có thể quyết định cho phân họ hữu ích và vẫn đủ lớn.

Tôi không có một ví dụ ngoạn mục trong tâm trí, nhưng tôi chắc chắn phải có một số.

Tôi nhớ lại một trường hợp thực sự của một vấn đề phân tích chương trình đã được chứng minh NP-đầy đủ (trừ khi nó không thể giải quyết được, tôi không nhớ rõ). Chống lại tất cả lời khuyên, một nghiên cứu sinh quyết định giải quyết nó bằng mọi cách. Ông thực sự đã có thể chỉ ra rằng một số hạn chế đối với vấn đề, không quan trọng lắm trong thực tế, đã biến nó thành một vấn đề rất dễ xử lý, do đó cho phép sử dụng các công cụ phân tích và tối ưu hóa chương trình khác nhau.


4
Một ví dụ mà tôi nghĩ sẽ phù hợp với câu trả lời của bạn là tối ưu hóa trình biên dịch. Tính không ổn định của vấn đề tạm dừng có nghĩa là, chẳng hạn, không có thuật toán nào có thể thực hiện loại bỏ mã chết hoàn hảo hoặc tạo ra khả năng thực thi nhanh nhất có thể cho một tệp nguồn cụ thể. Nhưng điều này không ngăn cản các trình biên dịch thực hiện rất tốt những điều này, trong hầu hết các trường hợp, trong thực tế.
David Richerby
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.