Tại sao thời gian đa thức được gọi là hiệu quả của thang máy?


50

Tại sao trong khoa học máy tính, bất kỳ sự phức tạp nào có nhiều nhất là đa thức đều được coi là hiệu quả?

Đối với bất kỳ ứng dụng thực tế nào (a) , các thuật toán có độ phức tạp nhanh hơn các thuật toán chạy theo thời gian, giả sử, , nhưng thuật toán đầu tiên được coi là không hiệu quả trong khi thuật toán sau hiệu quả. Logic ở đâu?!nlognn80

(a) Giả sử, chẳng hạn, số lượng nguyên tử trong vũ trụ xấp xỉ .1080


3
Tôi không chắc chắn tôi đồng ý với tiền đề của bạn. Tôi nghĩ rằng hầu hết mọi người sẽ coi là khá kém hiệu quả (mặc dù tất nhiên điều đó phụ thuộc vào các hằng số và vào vấn đề đang được giải quyết). n80
sepp2k

16
Tôi sẽ xem xét cho bất kỳ rất không hiệu quả. Bạn có một ví dụ về phân tích tiệm cận được đưa đến một thái cực không hợp lý. Không có thuật toán tự nhiên (mà tôi biết) với thời gian chạy . Tuy nhiên, có các thuật toán tự nhiên với thời gian chạy cho một số vấn đề và các câu hỏi cơ bản trong lý thuyết phức tạp về việc liệu thuật toán đa thức cho các vấn đề đó có tồn tại hay không. ncc>3n802n
Joe

5
Tôi nghĩ rằng câu hỏi này không nên bị hạ thấp bởi vì mọi người không đồng ý với tiền đề (giả sử đó là lý do). Up- và downvote được coi là một dấu hiệu cho thấy chất lượng của câu hỏi, không phải nội dung của chúng (miễn là chúng thuộc chủ đề).
Alex ten Brink

8
@RanG. và trích dẫn đầy đủ là (nhấn mạnh của tôi): Luận án của Cobham cho rằng P là lớp các vấn đề tính toán "có thể giải quyết được" hoặc "có thể giải quyết được"; trong thực tế, một số vấn đề không được biết đến trong P có giải pháp thực tế và một số vấn đề trong P thì không, nhưng đây là một quy tắc hữu ích.
Joe

6
Trong tài liệu (của CS lý thuyết), từ "hiệu quả" là từ đồng nghĩa với "đa thức". Có lẽ điều này là khác nhau cho các lĩnh vực phụ khác (thực tế hơn).
Ran G.

Câu trả lời:


32

Một quan điểm khác về "hiệu quả" là thời gian đa thức cho phép chúng ta xác định khái niệm "hiệu quả" không phụ thuộc vào các mô hình máy. Cụ thể, có một biến thể của luận án Church-Turing gọi là "Luận án Turing Church hiệu quả" nói rằng bất kỳ vấn đề nào chạy trong thời gian đa thức trên loại mô hình máy cũng sẽ chạy trong thời gian đa thức trên một mô hình máy mạnh mẽ không kém khác.

Đây là một tuyên bố yếu hơn đối với luận án CT nói chung và 'bị loại' bởi cả thuật toán ngẫu nhiên và thuật toán lượng tử, nhưng không bị vi phạm theo nghĩa là có thể giải quyết vấn đề khó NP trong đa thời gian bằng cách thay đổi mô hình máy.

Đây cuối cùng là lý do tại sao thời gian đa thức là một khái niệm phổ biến trong lý thuyếtCS. Tuy nhiên, hầu hết mọi người nhận ra rằng điều này không phản ánh "hiệu quả thực tế". Để biết thêm về điều này, bài đăng của Dick Lipton về ' thuật toán thiên hà ' là một bài đọc tuyệt vời.


15
Một lý do thứ hai, thực tế cho việc chọn P là nó được đóng dưới phép cộng, nhân và lũy thừa với hằng số. Điều này thuận tiện khi soạn thảo thuật toán / máy móc; nếu các khối xây dựng là hiệu quả, kết quả là như vậy.
Raphael

Tôi chỉ tò mò, có ai biết liệu thuật ngữ "thuật toán thiên hà" có được sử dụng trong thực tế không?
Juan Bermejo Vega

Nó không phải là một thuật ngữ cũ. Nhưng tôi đã bắt đầu sử dụng nó :)
Suresh

24

Về lý thuyết, chúng tôi quan tâm đến hành vi tiệm cận và mô tả các lớp vấn đề và thuật toán dựa trên hành vi tiệm cận của chúng. Các từ khóa ở đây là tiệm cận . nhanh hơn , nghĩa là bắt đầu từ (theo cách gọi này là: septillion!), Giả sử hệ số không đổi đơn vị Điều khoản đặt hàng.O(n80)O(nlogn)n>1208925819614629174706176

Tuy nhiên, trong thực tế, sự chú ý được trả cho cả số mũ và hệ số không đổi. Trong thực tế, kích thước đầu vào không thể tăng lên thành vách ngăn, vì vậy, vâng, cho tất cả các mục đích sẽ là lựa chọn ưu việt cho . Các yếu tố khác cũng quan trọng trong thực tiễn: song song, mô hình truy cập bộ nhớ (ví dụ: địa phương).nlognn80

Ví dụ, hầu hết các thư viện để nhân số nguyên, ví dụ, GMP sẽ triển khai hỗn hợp các thuật toán và chọn thuật toán kém hơn dựa trên kích thước đầu vào, chọn các thuật toán thực tế vượt trội dựa trên kích thước đầu vào, mặc dù các thuật toán này có thể kém hơn về mặt triệu chứng. Một số thuật toán "kém" không có triệu chứng sẽ nhanh hơn trên các kích thước đầu vào nhất định và sẽ được chọn qua các thuật toán tối ưu.

Một ví dụ khác, thuật toán nhân ma trận nhanh nhất được biết đến là thuật toán Coppersmith-Winograd chạy trong (có những cải tiến gần đây; nhiều hơn ở đây ). Tuy nhiên, nó không bao giờ được thực hiện vì (1) khó (2) hệ số không đổi là khổng lồ. Tất cả các gói đại số tuyến tính sử dụng Strassen ít tối ưu hơn .O(n2.3737)

Lý thuyết TL; DR quan tâm đến hành vi tiệm cận để so sánh các thuật toán khi giới hạn kích thước đầu vào đi vào số lượng lớn tùy ý.


Họ "chọn thuật toán kém"? Ý bạn là "chọn thuật toán ưu việt"?
bitmask

Một ví dụ điển hình khác là sắp xếp chèn so với sắp xếp nhanh. Sắp xếp chèn là trong khi sắp xếp nhanh là . Tuy nhiên, trên các đầu vào nhỏ, giả sử 10 mục, sắp xếp chèn nhanh gấp khoảng hai lần so với sắp xếp nhanh! Trong thực tế, sắp xếp nhanh được tối ưu hóa sử dụng sắp xếp chèn cho các mảng nhỏ. Θ(N2)O(nlgn)
Robert S. Barnes

Tại sao chúng ta không coi thuật toán lập phương không có triệu chứng là "xấu" và thuật toán bậc hai không có triệu chứng "tốt"? Câu trả lời này đặt ra câu hỏi.
djechlin

2

Câu trả lời này sẽ xem xét bối cảnh "bức tranh lớn hơn" của câu hỏi của bạn. Khoa học máy tính thực sự là một ngành khoa học tương đối trẻ và hơi cởi mở và nó chưa có câu trả lời hay thậm chí là tốt cho một số câu hỏi cơ bản & cơ bản. Câu hỏi cơ bản "tính toán hiệu quả" là chính xác hoặc gần như được chính thức hóa trong CS (tùy theo ý kiến) là vấn đề P vs NP nổi tiếng (hoặc vấn đề P vs Exptime liên quan chặt chẽ), và nó vẫn mở sau hơn bốn thập kỷ được giới thiệu ban đầu bởi Cook / Levin ~ 1970 và công việc mãnh liệt của các nhà khoa học máy tính vĩ đại nhất thế giới (và nhiều nhà toán học cũng quan tâm đến vấn đề này là cơ bản).

Nói cách khác, ngay cả với định nghĩa sơ bộ về "hiệu quả" là thời gian P và một trong những giải thưởng khoa học có giá trị cao nhất - cụ thể là giải thưởng 1 triệu đô la gắn liền với vấn đề trong hơn 10 năm - khoa học máy tính thậm chí có thể chứng minh rằng một số vấn đề (gần với đường biên này) phải hoặc không phải có thuật toán hiệu quả (Ptime). Do đó, định nghĩa chính xác về "hiệu quả" chính xác hơn thời gian P là không cần thiết hoặc thậm chí có thể tại thời điểm này. Nếu / khi phỏng đoán P vs NP được giải quyết theo cách này hay cách khác, một định nghĩa chặt chẽ hơn về "hiệu quả" có thể hoặc có lẽ sẽ có thể xảy ra.

Hơn nữa, người ta có thể cảm thấy rằng định nghĩa Ptime về "hiệu quả" thậm chí có thể hơi "cẩu thả", và hầu hết các nhà khoa học máy tính có thể sẽ đồng ý, và hầu hết tất cả đều nghĩ rằng phỏng đoán P vs NP là quan trọng nhất để giải quyết, điểm mà họ thậm chí có thể coi khẳng định hoặc quan sát này là tầm thường .... nói cách khác, có thể nói, đây là một công việc đang tiến triển / chúng tôi đang nghiên cứu về nó . (trên thực tế các nhà khoa học máy tính chính thống thậm chí còn đi xa hơn, chỉ nửa đùa nửa thật, thường xuyên đề cập đến khoảng cách & thiếu sự tiến bộ / tách biệt dứt khoát là đáng xấu hổ .)

Trong thực tế, thậm chí còn có một phỏng đoán liên quan chặt chẽ / mạnh hơn đáng kể so với P vs NP, cụ thể là NP vs P / poly, điều này cũng không thể được giải quyết bằng khoa học máy tính tại thời điểm này. nó phỏng đoán rằng các vấn đề về thời gian NP không thể được giải quyết bằng bất kỳ mạch "cỡ P" nào, tức là thậm chí không bị hạn chế đối với các mạch có thể được tạo bởi các thuật toán / máy Turing.

Về việc P vs NP có thể khó đến mức nào - có một số lý do chắc chắn để nghĩ rằng nó có thể ít nhất cũng khó như phỏng đoán Riemann rất cũ trong toán học (nay đã 1,5 thế kỷ ), bởi vì cả hai đều có cùng giải thưởng $ 1M một thập kỷ, và chưa được giải quyết / đầu tiên.

Vì vậy, nói cách khác, để xác định chính xác thuật toán nào thực sự "hiệu quả" thực sự là một trong những vấn đề mở quan trọng nhất và khó nhất hiện có trong khoa học lý thuyết và toán học .

Trong thực tế, câu hỏi về "cái gì được tính toán hiệu quả" thực sự thậm chí còn tinh tế hơn, bởi vì có một biến thể của luận án Church-Turing được gọi là luận án CT P-time, và không biết liệu điện toán lượng tử có thực sự vi phạm nó hay không. Với kết quả đột phá của Shor về P-time QM, bao thanh toán được coi là một bước ngoặt đáng kể trong nghiên cứu này. Nói cách khác, vấn đề về những gì được tính toán một cách hiệu quả thực sự có nguồn gốc từ tất cả các nguyên tắc vật lý sâu sắc, và liên quan đến việc liệu máy tính lượng tử có thể tính toán hiệu quả hơn tính toán cổ điển hay không, cũng là một vấn đề mở trong lý thuyết CS và vật lý tiên tiến.

Vì vậy, người ta thậm chí có thể thêm rằng P vs NP và câu hỏi về tính toán hiệu quả có thể có tầm quan trọng cơ bản hoặc quan trọng đối với - ngoài CS và toán học - vật lý .

[1] Vấn đề P vs NP, wikipedia

[2] Vấn đề giải thưởng Millenium

[3] Lớp P / Poly, wikipedia

[4] Thuật toán của Shor


chỉnh sửa: P vs Pspace, không phải P vs ExpTime
vzn

-2

Các thuật toán thời gian đa thức được coi là hiệu quả chỉ so với thời gian không đa thức khó nhất, đặc biệt là cái gọi là NP-Complete. Xem hình ảnh: Sơ đồ Euler cho các vấn đề về P, NP, NP-đầy đủ và NP-hard .


1
"so với thời gian phi đa thức khó nhất, đặc biệt là cái gọi là NP-Complete" - Các bài toán hoàn thành NP không được biết là không đa thức, và chúng chắc chắn không phải là khó nhất.
Raphael
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.