Là giới hạn thời gian chạy trong P có thể quyết định? (câu trả lời: không)


64

Câu hỏi được hỏi là liệu câu hỏi sau đây có thể quyết định được không:

Sự cố   Cho một số nguyên và máy Turing M hứa sẽ ở trong P, thời gian chạy của M O ( n k ) có liên quan đến độ dài đầu vào n không?kMM O(nk)n

Một câu trả lời hẹp về "có", "không" hoặc "mở" có thể được chấp nhận (với tài liệu tham khảo, bản phác thảo bằng chứng hoặc đánh giá về kiến ​​thức hiện tại), nhưng câu trả lời rộng hơn cũng rất được hoan nghênh.

Câu trả lời

Emanuele Viola đã đăng một bằng chứng cho thấy câu hỏi này là không thể giải được (xem bên dưới).

Lý lịch

Đối với tôi, câu hỏi này xuất hiện một cách tự nhiên khi phân tích câu trả lời của Luca Tevisan cho câu hỏi Liệu thời gian chạy cho P có yêu cầu tài nguyên EXP để giới hạn trên không? Sàng là những ví dụ cụ thể được biết đến?

Câu hỏi cũng liên quan đến câu hỏi MathOverflow: Những vấn đề hấp dẫn nhất của Turing trong toán học là gì? , trong một biến thể trong đó từ "toán học" được đổi thành "kỹ thuật", công nhận rằng ước lượng thời gian chạy là một vấn đề kỹ thuật phổ biến liên quan đến (ví dụ) lý thuyết điều khiển và thiết kế mạch.

Do đó, mục tiêu rộng lớn khi đặt câu hỏi này là để đạt được sự đánh giá / trực giác tốt hơn về các khía cạnh thực tế của ước lượng thời gian chạy trong lớp phức tạp P là khả thi (nghĩa là yêu cầu tài nguyên tính toán trong P để ước tính), so với không khả thi (nghĩa là yêu cầu tài nguyên tính toán trong EXP để ước tính), so với chính thức không thể giải quyết được.

--- chỉnh sửa (trả lời sau) ---

Tôi đã thêm định lý của Viola vào wiki cộng đồng của MathOverflow "Các vấn đề hấp dẫn không thể giải quyết được". Đó là đóng góp đầu tiên của wiki liên quan đến lớp P phức tạp; điều này chứng thực tính mới, tính tự nhiên và phạm vi rộng của định lý Viola (và IMHO cũng vậy).

--- chỉnh sửa (trả lời sau) ---

Chuyên khảo tính toán khả thi và tính chất phức tạp có thể chứng minh được của Juris Hartmanis (1978) bao gồm nhiều tài liệu giống như bằng chứng của Emanuele Viola.


Để trả lời các câu hỏi được đặt ra trên weblog của Lance Fortnow và Bill GASARCH, với chủ đề "75 năm khoa học máy tính", bắt đầu "Tôi thường ước rằng Turing đã hỏi một cách tỉnh táo: các quy trình có thể kiểm chứng được có thể được thực hiện trong máy tính số? Chỉ ... thay vì Turing hỏi câu hỏi khó hơn định mệnh: Tử Các quy trình có thể được thực hiện trong tính toán số là gì?, câu hỏi tiếp theo sẽ là (khoảng) "Máy Turing có tồn tại được không trong NP, thành viên của P là không thể giải quyết được? "Điều này cho thấy tôi vẫn đang suy nghĩ về nó! :)
John Sidles

2
Mặc dù bằng chứng của I Emanuele Viola rõ ràng hơn, một câu hỏi tương tự đã được hỏi và trả lời trên Mathoverflow: mathoverflow.net/questions/28056/ phỏng
Alex ten Brink

Một số câu trả lời và ý tưởng về chủ đề này đã được chứng minh có liên quan đến một bài tiểu luận / bộ câu hỏi mà Dick Lipton đã đăng trên weblog của mình Godel's Lost Letter ; bài tiểu luận / bộ câu hỏi đó là "Bắt đầu với P = NP". URL: rjlipton.wordpress.com/2011/07/04/getting-on-base-with-pnp
John Sidles

Mặc dù giới hạn trong P là không thể xác định được, nhưng điều đó không ngăn cản người ta cố gắng (bằng cách hạn chế bản thân hơn nữa). Một ví dụ nếu được đưa ra trong câu trả lời cstheory
Artem Kaznatcheev

1
Câu hỏi này đã truyền cảm hứng cho bài viết sau: arxiv.org/abs/1307.3648
David G

Câu trả lời:


83

(M,x)MnMxnMn2n3

Mxt=O(1)MO(n2)MMn3

MxMO(n2)O(n3)


4
Tại sao M phải tạm dừng trên x (nếu có) trong các bước O (1)?
Suresh Venkat

10
Mxn

2
Bằng chứng rất thông minh, đó là một biến thể của một số kết quả nổi tiếng hay bạn vừa nghĩ ra nó?
Antonio E. Porreca

3
Mn2n3

2
@ John: Miễn là không có tài liệu tham khảo được công bố, xem xét hướng dẫn này .
Raphael

29

Đây là một câu trả lời lại câu trả lời của Emanuele Viola với mục tiêu dễ hiểu hơn.

PH

(M,x)M(x)MxM

M*(y) = {
  n := |y|
  Simulate M(x) for n steps
  if ( M(x) has halted )
    Execute n*n arbitrary steps
  else
    Execute n*n*n arbitrary steps
}

Bây giờ chúng tôi quan sát các ý nghĩa sau đây:

M(x)n0N:M halts on x after at most n0 stepsy:nn0M(y) executes n2 arbitrary stepsTM(n)O(n2)

M(x)nN:M does not halt on x in less than n stepsy:M(y) executes n3 arbitrary stepsTM(n)Ω(n3)

H(M,x)P(M,2)PH


12

nCn+DC,DN

Cn+D


1
Không thiếu các hành vi bất thường của các TM một băng thời gian nhỏ. :)
Kaveh

4

Vấn đề cũng đã được giải quyết trong bài viết của tôi " Nội dung sâu sắc của Định lý Rice " POPL'2008, nơi tôi chứng minh rằng không có "cụm phức tạp" nào có thể quyết định được. Một cụm phức tạp là một lớp các chương trình đóng các chương trình wrt với hành vi độ phức tạp tương tự . Tôi cũng cung cấp các điều kiện cần thiết cho các thuộc tính bán quyết định.

Các chương trình chạy trong O (n ^ k) là một cụm phức tạp theo nghĩa trên, do đó bộ này không thể quyết định được.

Kết quả gần đây cũng đã được Mathieu Hoyrup mở rộng sang các cài đặt phụ (như P): Các thuộc tính có thể quyết định của các chức năng phụ (ICALP 2016).


2

Σ20

Σ20SSO(n2)Σ20S

Σ20φφ(x)kmψ(x,k,m)ψ

φ(x)O(n2)n

kn
m<nψ(x,k,m)

n2

cn2+cΠ10Σ20


-1

đây là những phân tích / góc độ / kết quả mới có hệ thống hơn về câu hỏi này và những câu hỏi liên quan, đưa ra khái niệm "tính xác minh thuật toán" và một dạng tương tự Rice-thm cho lý thuyết phức tạp. Một phần có liên quan từ bản tóm tắt được trình bày và có nhiều định lý liên quan khác liên quan đến khả năng chứng minh của P vs NP, v.v.

  • Tại sao khái niệm về độ phức tạp tính toán lại khó đối với toán học có thể kiểm chứng / Hromkovic

    Đầu tiên, chúng tôi chứng minh định lý của Rice về tính không thể thực hiện được, cho rằng mỗi vấn đề ngữ nghĩa không cần thiết về các chương trình hầu như không thể giải quyết được trong các thuật toán "AV" có thể kiểm chứng bằng thuật toán. Sử dụng điều này, chúng tôi cho thấy rằng có vô số thuật toán (chương trình là thuật toán có thể chứng minh được) mà không tồn tại bằng chứng chứng minh rằng chúng hoạt động trong thời gian đa thức hoặc chúng không hoạt động trong thời gian đa thức. ...

    Lưu ý rằng, nếu P! = NP có thể chứng minh được trong toán học AV, thì với mỗi thuật toán A, có thể chứng minh rằng "A không giải quyết SATISFIABILITY hoặc A không hoạt động trong thời gian đa thức". Thật thú vị, cuối cùng chúng tôi đã chỉ ra rằng có các thuật toán tồn tại mà không thể chứng minh rằng chúng không hoạt động trong thời gian đa thức, cũng như chúng không giải quyết SATISFIABILITY. Hơn nữa, có một thuật toán giải SATISFIABILITY mà người ta không thể chứng minh trong toán học AV rằng nó không hoạt động trong thời gian đa thức.

    Hơn nữa, chúng tôi cho thấy P = NP ngụ ý sự tồn tại của các thuật toán X mà yêu cầu "X giải quyết SATISFIABILITY trong thời gian đa thức" là không thể chứng minh được trong toán học AV.


-3

Giải pháp từ Viola có thể được khái quát hóa cho bất kỳ thời gian chạy nào (ngoài poly): Bạn có thể giảm vấn đề tạm dừng đối với nó như sau. Cho một ví dụ (M, x) của sự cố tạm dừng, xây dựng một máy M mới hoạt động như sau: trên các đầu vào có độ dài n, nó mô phỏng M trên x cho các bước f (n) hoặc cho đến khi M dừng lại, trong đó f (n ) là bất kỳ hàm tăng tùy ý (lớn hơn hằng số) của n. (Quan sát: M ′ đọc dần dần đầu vào, để tránh lãng phí thời gian tuyến tính [O (n)] chỉ để đọc không cần thiết tất cả đầu vào, nếu nó đủ lớn và M dừng lại.)

Nếu M dừng trên x thì thực hiện theo các bước T = O (1), vì vậy thời gian chạy của M sẽ là O (1). Nếu M không bao giờ dừng thì thời gian chạy của M là O (n ^ 2 * f (n)).

Do đó, bạn có thể quyết định nếu M chấp nhận x bằng cách quyết định xem thời gian chạy của M là O (1) hay O (n ^ 2 * f (n)).

Sau đó, mã phụ trợ từ Raphael có thể được khái quát hóa tương ứng bằng cách:

Đặt (M, x) là bất kỳ trường hợp nào của Sự cố dừng, đó là chúng ta phải quyết định xem M có dừng trên x không. Xây dựng một máy Turing xác định (DTM) M * hoạt động như sau:

  1. M * (đầu vào) = {
  2. n: = 0
  3. Đọc ký hiệu đầu tiên từ đầu vào
  4. Vòng:
  5. n: = n + 1
  6. Mô phỏng M (x) cho các bước f (n) hoặc cho đến khi M (x) tạm dừng
  7. Đọc ký hiệu tiếp theo từ đầu vào
  8. Lặp lại cho đến khi end_of_input hoặc cho đến khi M (x) tạm dừng
  9. }

Bây giờ chúng tôi quan sát các ý nghĩa sau đây:

M dừng lại trên x sau nhiều nhất k (không đổi) bước => T (M *) = O (1) và

M không bao giờ dừng lại trên x => T (M *) = O (n ^ 2 * f (n))

Do đó, ngay cả việc quyết định xem thời gian chạy của DTM tùy ý có đơn giản là lớn hơn hằng số hay không cũng khó như Dừng vấn đề. □


2
MO(n)M

Đối với n đủ lớn, nếu M (x) tạm dừng, thì mô phỏng của nó cũng dừng lại và trở về M * trong các bước n0 (không đổi).
André Luiz Barbosa
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.