Có thực sự có thể chứng minh giới hạn dưới?


24

Với bất kỳ vấn đề tính toán nào, liệu nhiệm vụ tìm giới hạn thấp hơn cho tính toán như vậy có thực sự khả thi? Tôi cho rằng nó tập trung vào cách xác định một bước tính toán duy nhất và mô hình nào chúng ta sử dụng để chứng minh, nhưng cho rằng, chúng ta có thực sự chứng minh được giới hạn thấp hơn nói chung không? Ý tôi là chúng ta có thể chứng minh điều gì đó như "vấn đề không thể giải quyết nhanh hơn thời gian " thay vì "vấn đề có thể được giải quyết trong thời gian hay nhanh hơn" không?Xt(X)Xt(X)

Tôi đã cố gắng tìm thông tin cụ thể về giới hạn dưới và bằng chứng về chúng, nhưng tôi thực sự không thể tìm thấy bất kỳ mối quan tâm, bất kỳ đề xuất nào về sách / giấy tờ / trang web về chủ đề này?

Câu trả lời:


19

Chúng tôi hoàn toàn có thể chứng minh những điều như vậy.

Nhiều vấn đề có giới hạn dưới tầm thường, chẳng hạn như việc tìm tối thiểu một tập hợp số (không được sắp xếp / cấu trúc theo bất kỳ cách nào) mất ít nhất thời gian. Bằng chứng cho điều này rất đơn giản: một thuật toán giả định chạy trong thời gian không thể kiểm tra tất cả các số trong đầu vào. Vì vậy, nếu chúng tôi chạy thuật toán trên một số đầu vào, chúng tôi có thể quan sát rằng nó không bao giờ kiểm tra một yếu tố cụ thể của đầu vào. Thay đổi yếu tố đó đến mức tối thiểu, chúng ta có thể khiến thuật toán thất bại.nΩ(n)o(n)

Giới hạn dưới ít tầm thường hơn là giới hạn dưới để sắp xếp trong mô hình dựa trên so sánh. Bằng chứng cho điều đó đi dọc theo các dòng sau: đưa ra một đầu vào gồm số, cóđầu ra có thể (đầu vào có thể là bất kỳ hoán vị của danh sách được sắp xếp, vì vậy đầu ra cũng có thể là bất kỳ hoán vị của đầu vào). Nếu chúng tôi bị giới hạn chỉ thực hiện so sánh, thì thuật toán của chúng tôi (trung bình) cần thực hiện ít nhất để có thể đưa rađầu ra khác nhau.Ω(nlogn)nn!log2(n!)=Ω(nlogn)n!

Giới hạn dưới có thể mạnh hơn nữa. Có một số vấn đề (đáng chú ý là các vấn đề -hard) mà có giới hạn dưới theo cấp số nhân. Các vấn đề trong lớp này bao gồm tính toán các chiến lược tối ưu cho các trò chơi như cờ vua (tổng quát), cờ đam và cờ vây. Bằng chứng về điều này là thông qua Định lý phân cấp thời gian , trong đó nêu rõ (phải tuân theo một số hạn chế đối với ):EXPTIMEf

Với một hàm , tồn tại một vấn đề tính toán có thể được giải quyết trong thời gian nhưng không thể giải quyết kịp thời .fO(f(n))o(f(n)logn)

Về cơ bản, nếu bạn có thể nghĩ về một hàm thì tồn tại một vấn đề đòi hỏi nhiều thời gian để giải quyết.f

Cuối cùng, một con đường khác không nhất thiết phải chứng minh thời gian bị ràng buộc thấp hơn nhưng điều gì đó thậm chí còn mạnh mẽ hơn đang cho thấy sự không ổn định của một vấn đề (ví dụ như tạm dừng, thư tín).


Kích thước của đầu vào hoặc đầu ra là giới hạn dưới phổ biến nhất.
Raphael

14

Vâng nó có thể. Ví dụ kinh điển là thực tế là bất kỳ thuật toán sắp xếp dựa trên so sánh nào cũng yêu cầu so sánh để sắp xếp danh sách độ dài n .Ω(nđăng nhậpn)n

Tuy nhiên, giới hạn dưới dường như khó chứng minh hơn nhiều so với giới hạn trên. Để chứng minh rằng có một thuật toán sắp xếp yêu cầu so sánh , bạn chỉ cần thể hiện một thuật toán như vậy (hợp nhất sắp xếp - voila !). Nhưng đối với giới hạn thấp hơn, bằng cách nào đó bạn cần chứng minh rằng không có thuật toán nào trong một lớp cụ thể có thể giải quyết vấn đề của bạn. Các khó khăn trong việc thực hiện điều đó được chứng minh bằng thực tế rằng chúng tôi chỉ biết rằng LN LPN PP S P Một C EÔi(nđăng nhậpn) mặc dù chúng ta biết rằng ít nhất một trong số các vùi đó là nghiêm ngặt ( LP S P A C E theo định lý phân cấp không gian) và hầu hết mọi người nghĩ rằngtất cả đềunghiêm ngặt.

LNLPNPPSPMộtCE,
LPSPMộtCE

Mặt khác, Ryan Williams có một bài báo hay (và nói chuyện mà tôi đã nghe một vài lần) được gọi là Thuật toán cho Mạch và Mạch cho Thuật toán , trong đó ông cho rằng việc tìm ra giới hạn thấp hơn và tìm ra thuật toán không phải là tất cả khác nhau Ví dụ, ông trích dẫn bằng chứng về tính không ổn định của vấn đề tạm dừng là một ví dụ về thuật toán (máy Turing phổ dụng) được sử dụng chính xác để chứng minh ràng buộc thấp hơn (không thể giải quyết được).


Tôi nghĩ đây là những gì tôi theo sau ".. bằng cách nào đó bạn cần phải chứng minh rằng không có thuật toán nào trong một lớp cụ thể có thể giải quyết vấn đề của bạn.", Đây là phần tôi thấy hơi khó hiểu vì tôi không thể thực sự thấy được cách người ta có thể làm được bằng trực giác điều đó, nói chung ít nhất Như @Tom van der Zanden đã mô tả con số tối thiểu tôi hiểu, nhưng cách tiếp cận đó có chung chung không? Tôi có nghĩa là chung chung như có loại lập luận đó khi xây dựng các bằng chứng? Cảm ơn các liên kết là tốt.
hsalin 14/2/2015

1
@ user1288420 Bạn không đơn độc. Nếu bất cứ ai cũng có thể thấy bằng trực giác làm thế nào để chứng minh rằng không có thuật toán nào trong một lớp cụ thể có thể giải quyết một số vấn đề, chúng tôi sẽ có nhiều kết quả ràng buộc thấp hơn! Thông thường, bạn cần đưa ra một số thuộc tính mà mọi thuật toán trong lớp có và cho thấy rằng thuộc tính đó ngăn ngừa một số vấn đề được giải quyết. Ví dụ: mọi máy Turing chạy trong thời gian tuyến tính đều có thuộc tính mà nó thậm chí không thể đọc được tất cả các đầu vào của nó. Điều đó có nghĩa là nó không thể giải quyết hầu hết các vấn đề. Đó là chuyện nhỏ; Thật không may, các trường hợp thú vị hơn dường như là khó khăn vô cùng.
David Richerby 14/2/2015

3

n

Tuy nhiên, có một điểm trong câu hỏi yêu cầu thêm một số nhận xét liên quan đến giới hạn thấp hơn (hoặc giới hạn phức tạp nói chung).

Trên thực tế, sự lựa chọn của một bước tính toán là không liên quan, miễn là các bước tính toán có thể được coi là có một hướng trên không đổi (và giới hạn dưới). Kết quả phức tạp sẽ giống nhau vì nó được xác định đến một hằng số. Lấy 3 so sánh làm hoạt động đơn vị, hoặc chỉ một lần duy nhất, không có sự khác biệt.

Điều tương tự cũng đúng về kích thước của dữ liệu đóng vai trò tham chiếu để đánh giá chi phí tính toán. Lấy một số nguyên hoặc hai số nguyên làm đơn vị kích thước sẽ không có sự khác biệt.

Tuy nhiên, hai lựa chọn phải liên quan.

nđăng nhậpnÔi(đăng nhậpn)

Việc một hoạt động có thể được coi là có chi phí đơn vị có liên quan chặt chẽ đến dữ liệu nào có thể được coi là có kích thước đơn vị hay không. Và điều đó phụ thuộc vào mức độ trừu tượng mà bạn chọn cho mô hình tính toán của mình.


Tìm tất cả các lần xuất hiện của một mẫu trong chuỗi yêu cầu đọc toàn bộ chuỗi: nếu mẫu đó là "a", bạn không thể tìm thấy tất cả các lần xuất hiện mà không kiểm tra xem mỗi ký tự của chuỗi có phải không.
David Richerby 14/2/2015

1
@DavidR Richby Thật ra không phải lúc nào. Thuật toán Boyer-Moore bắt đầu từ cuối mẫu, do đó nhảy lên trong chuỗi. Nếu khớp đã thử thất bại, nó không phải đọc phần đầu của chuỗi. Và nó cũng có tối ưu hóa tương tự như thuật toán Knuth-Morris-Pratt để bỏ qua các nỗ lực bị ngừng hoạt động do cấu trúc của mẫu. Tất nhiên, có những mẫu yêu cầu đọc toàn bộ chuỗi.
babou 14/2/2015

@DavidR Richby Tại sao bạn hỏi, bạn biết điều đó?
babou 14/2/2015

Tôi không hiểu bình luận thứ hai của bạn. Câu trả lời ban đầu của bạn có một yêu cầu không chính xác. Tất nhiên tôi biết điều đó là không chính xác: đó là cách tôi có thể chỉ ra! Những người khác có thể không biết nó không chính xác, vì vậy sẽ khiến họ bối rối khi để lại câu trả lời như vậy.
David Richerby 14/2/2015

1
@DavidR Richby Quan điểm của tôi là bạn hiểu ý của tôi. Tôi nên nói có thể không chứ không phải là không . Điều này đã không kêu gọi một phong cách bình luận làm cho độc giả tin rằng tôi đang nói chuyện vô nghĩa. Và trong khi làm như vậy, bạn đã mắc chính xác một lỗi bất cẩn: bằng cách nêu " Tìm tất cả các lần xuất hiện của một mẫu trong chuỗi yêu cầu đọc toàn bộ chuỗi ", khi bạn nên nói " Tìm tất cả các lần xuất hiện của một mẫu trong chuỗi có thể yêu cầu đọc toàn bộ chuỗi ". Tôi chỉ có ý định nói rằng việc đọc đầu vào có thể không phải lúc nào cũng cần thiết, để giảm thiểu ví dụ trước đây của tôi.
babou 14/2/2015
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.