Một số vấn đề mà chúng ta biết chúng ta có một thuật toán tối ưu là gì?


15

Một số vấn đề không tầm thường mà chúng ta biết thuật toán hiện tại chúng ta có là một vấn đề tối ưu không có triệu chứng? (Đối với máy turing)

Và điều này được chứng minh như thế nào?


11
Một máy turing là một mô hình khó khăn cho giới hạn dưới. Thay đổi defn có thể thay đổi đa thức trong thời gian chạy, vì vậy bạn cần phải cụ thể hơn một chút.
Suresh Venkat

Làm thế nào để bạn xác định không tầm thường?
funkstar

1
Như Suresh nói, loại TM bạn sử dụng có ảnh hưởng. Tôi đoán rằng đối với ngôn ngữ của palindromes (những từ bạn có thể đọc ngược), chúng ta có một TM 1 băng tối ưu, thực hiện các bước để quyết định ngôn ngữ. Và đối với các TM 2 băng, nó có thể quyết định theo thời gian tuyến tính, do đó cũng khá tối ưu. O(n2)
Bruno

Câu trả lời:


18

Bất kỳ thuật toán nào mất thời gian tuyến tính và phải đọc toàn bộ đầu vào của nó phải tối ưu không có triệu chứng. Tương tự, như Raphael nhận xét, bất kỳ thuật toán nào có thời gian chạy có cùng thứ tự với kích thước đầu ra là tối ưu.


10
Tương tự, bất kỳ thuật toán nào có thời gian chạy có cùng thứ tự với kích thước đầu ra là tối ưu.
Raphael

9
Tôi tin rằng câu trả lời này và bình luận theo sau nó là trạng thái hoàn chỉnh của nghệ thuật.
Jeffε

9
Chà, điều này thật đáng thất vọng
sture

1
Đối với hồ sơ, bình luận của Jɛ ff E dường như đề cập đến câu trả lời của Shir bên dưới.
András Salamon

1
Tôi đã đề cập đến câu trả lời của Max, không phải của Shir và nhận xét của Raphael về câu trả lời của Max.
Jeffε

8

Nếu thước đo độ phức tạp mà bạn đang xem xét là độ phức tạp của truy vấn, nghĩa là số lần máy phải xem đầu vào để giải quyết một vấn đề cụ thể, thì có nhiều vấn đề chúng tôi có thuật toán tối ưu. Lý do cho điều này là các giới hạn thấp hơn cho độ phức tạp truy vấn dễ dàng đạt được hơn các giới hạn thấp hơn về độ phức tạp thời gian hoặc không gian, nhờ một số kỹ thuật phổ biến bao gồm phương pháp đối nghịch .

Tuy nhiên, nhược điểm là biện pháp phức tạp này hầu như được sử dụng rất nhiều trong xử lý thông tin lượng tử vì nó cung cấp một cách dễ dàng để chứng minh khoảng cách giữa năng lượng tính toán lượng tử và cổ điển. Thuật toán lượng tử khét tiếng nhất trong khung này là thuật toán của Grover . Cho một chuỗi nhị phân tồn tại một i duy nhất sao cho x i = n , bạn bắt buộc phải tìm i . Về mặt kinh điển (không có máy tính lượng tử), thuật toán tầm thường nhất là tối ưu: bạn cần truy vấn chuỗi này trung bình n / 2 lần để tìmx1,,xnixi=nin/2 . Grover cung cấp một thuật toán lượng tử mà không như vậy trong O ( itruy vấn chuỗi. Điều này cũng đã được chứng minh là tối ưu.O(n)


2
Thật vậy, độ phức tạp của truy vấn là cơ sở cơ bản cho câu trả lời của Max. Đối với hầu hết các vấn đề, bất kỳ thuật toán nào có thể chứng minh "phải đọc toàn bộ đầu vào" hoặc ít nhất là một phần không đổi của đầu vào.
Jeffε

6
  • Nếu bạn sẵn sàng thay đổi mô hình của mình, khá nhiều giới hạn thấp hơn trong cấu trúc dữ liệu sẽ chặt chẽ. Xem Giới hạn dưới cho Cấu trúc dữ liệu cho con trỏ để tham chiếu tốt cho giới hạn thấp hơn trong cấu trúc dữ liệu.
  • Từ bị ràng buộc để sắp xếp trong mô hình so sánh mà một số người đã đề cập ở đây, bạn có thể có được một ràng buộc tương tự cho vấn đề vỏ lồi bằng cách xem xét trường hợp đầu vào được tạo thành từ các điểm dọc theo biểu đồ một hàm tăng trong góc phần tư thứ nhất của mặt phẳng.Ω(nlogn)

2
+1 để đề cập đến cấu trúc dữ liệu. Nhưng tôi không nghĩ có thể có được giới hạn dưới hữu ích cho vỏ lồi thông qua các giới hạn so sánh thấp hơn để sắp xếp. Lý do là mô hình so sánh không đủ mạnh để tính toán vỏ lồi. Thay vào đó, sử dụng một mô hình mạnh hơn như cây quyết định đại số trong đó thân tàu có thể được tính toán, và sau đó điều chỉnh giới hạn dưới để sắp xếp theo mô hình mạnh hơn này.
David Eppstein

Làm cho ý nghĩa, cảm ơn đã làm rõ!
Abel Molina

3
  1. Sắp xếp so sánh bằng cách sử dụng so sánh (sắp xếp hợp nhất, để đặt tên một) là tối ưu, bằng chứng chỉ đơn giản là tính chiều cao của cây với n ! lá.O(nlogn)n!

  2. Giả sử phỏng đoán trò chơi độc đáo, Khot, Kindler, Mossel và O'donnell đã chỉ ra rằng nó hoàn thành NP để xấp xỉ Max-Cut tốt hơn thuật toán của Goemans và Williamson. Vì vậy, theo nghĩa đó, G & W là tối ưu (giả sử rằng ).PNP

  3. Một số thuật toán phân tán có thể được hiển thị là tối ưu đối với một số điều kiện (ví dụ: tỷ lệ bộ xử lý đối nghịch), nhưng vì bạn đã đề cập đến máy Turing, tôi đoán đó không phải là loại ví dụ bạn đang tìm kiếm.


2
Việc mục 2 trả lời câu hỏi hay không phụ thuộc vào ý nghĩa của người hỏi bởi tối ưu, mặc dù tôi nghi ngờ rằng người hỏi đang hỏi theo nghĩa đó (nếu không, có rất nhiều, rất nhiều kết quả gần đúng mà thậm chí không yêu cầu UGC). Hơn nữa, tôi không nghĩ rằng mục 1 hoặc 3 trả lời câu hỏi.
Tsuyoshi Ito

@TsuyoshiIto, thật khó để đoán chính xác người hỏi có ý gì, đó là điều khiến tôi thử trả lời theo nhiều hướng khác nhau với hy vọng đạt được điều gì đó hữu ích cho anh ấy / cô ấy. Điều gì khiến bạn nói rằng (1) không phải là một câu trả lời hợp lệ?
Shir

2
Người hỏi đặc biệt yêu cầu một thuật toán tối ưu cho máy Turing .
Tsuyoshi Ito

6
Là "sắp xếp so sánh" thực sự là một "vấn đề"? Hay đó là một vấn đề hạn chế về mô hình tính toán?
Jeffε

3

Giả sử bạn đang đưa đầu vào và được yêu cầu để quyết định xem máy RAM M chấm dứt vào đầu vào x sau khi t bước. Theo định lý phân cấp thời gian, thuật toán tối ưu để quyết định điều này là mô phỏng việc thực hiện M ( x ) cho các bước t , có thể được thực hiện trong thời gian O ( t ) .w=M,x,tMxtM(x)tO(t)

(Lưu ý: đối với máy Turing, mô phỏng việc thực hiện thực hiện các bước O ( t log t ) ; chúng tôi chỉ biết giới hạn dưới của Ω ( t ) . Vì vậy, điều này không hoàn toàn tối ưu cho máy Turing cụ thể).MO(tlogt)Ω(t)

Có một số vấn đề khác có chứa phiên bản của vấn đề tạm dừng là trường hợp phụ. Ví dụ, quyết định có một câu là kết quả của các WS1S mất thời gian 2 O ( | θ | ) và điều này là tối ưu.θ2↑↑Ôi(|θ|)


3

Tôi không chắc ý của bạn là "không tầm thường", nhưng làm thế nào về điều này. . Ngôn ngữ này là không bình thường do đó, bất kỳ TM quyết định nó phải chạy trong Ω ( n log n ) . Thuật toán đơn giản (vượt qua mọi 0 khác) là tối ưu.L= ={02k|k0}Ω(nđăng nhậpn)


3

Nếu bạn cho phép các vấn đề cấu trúc dữ liệu động, chúng tôi biết một số thuật toán tối ưu thời gian siêu tuyến tính. Đây là trong mô hình thăm dò tế bào, mạnh như RAM từ, tức là đây không phải là mô hình bị hạn chế như cây quyết định đại số.

Một ví dụ là giữ tiền tố dưới các cập nhật động. Chúng tôi bắt đầu với một dãy các số và mục tiêu là giữ cấu trúc dữ liệu cho phép các hoạt động sau:Một[1],Giáo dục,Một[n]

  • Thêm để Một [ i ] , với iΔΔMột[Tôi]TôiΔ
  • Tính tổng tiền tố , cho iΣj= =1TôiMột[Tôi]Tôi

Bạn có thể dễ dàng hỗ trợ cả hai thao tác trong thời gian với cấu trúc dữ liệu dựa trên cây nhị phân tăng cường với A [ i ] ở các lá. Patrascu và Demaine cho thấy điều này là tối ưu: đối với bất kỳ cấu trúc dữ liệu nào, có một chuỗi n bổ sung và truy vấn tổng tiền tố phải mất tổng thời gian Ω ( n log n ) .Ôi(đăng nhậpn)Một[Tôi]nΩ(nđăng nhậpn)

Một ví dụ khác là công đoàn tìm : bắt đầu với một phân vùng của thành độc thân, và giữ một cấu trúc dữ liệu cho phép hai hoạt động:{1,Giáo dụcn}

  • Liên minh: đã cho j , thay thế phần chứa i và phần chứa j bằng liên kết của chúngTôijTôij
  • Tìm: đã cho , xuất ra một phần tử chính tắc từ phần chứa iTôiTôi

Ôi(α(n))αnΩ(nα(n))


1

Nhiều thuật toán phát trực tuyến có giới hạn trên khớp với giới hạn dưới của chúng.


0

có hai thuật toán tìm kiếm hơi giống nhau mà [sự hiểu biết của tôi] là tối ưu dựa trên một ràng buộc cụ thể về thứ tự / phân phối đầu vào. tuy nhiên các bài thuyết trình về các thuật toán thường không nhấn mạnh sự tối ưu này.

  • phần vàng tìm kiếm để tìm tối đa hoặc tối thiểu (cực trị) của một hàm không chính thống. giả sử đầu vào là một hàm unimodal. tìm thấy nó trong thời gian logarit trung bình. như tôi nhớ có thể đã có một bằng chứng về sự lạc quan trong cuốn sách Cấu trúc & Giải thích các chương trình máy tính của abelson & sussman.

  • tìm kiếm nhị phân tìm thấy một điểm trong thời gian logarit trung bình trong một danh sách được sắp xếp, nhưng yêu cầu đầu vào phải được sắp xếp.

Tôi đang trích dẫn wikipedia ở trên nhưng nó không có bằng chứng rằng chúng là tối ưu, có thể một số tài liệu tham khảo khác chứng minh sự tối ưu có thể được tìm thấy bởi khán giả.


-1

Nhiều thuật toán thời gian tuyến tính có giới hạn trên khớp với giới hạn dưới của chúng.


3
Được gắn cờ như một bản sao.
Jeffε

Thuật toán thời gian tuyến tính và thuật toán phát trực tuyến là các lĩnh vực khác nhau.
Bin Fu

1
Điều đó đúng, nhưng bạn nên kết hợp các câu trả lời thành một.
Suresh Venkat

Một số ví dụ về thuật toán thời gian tuyến tính tối ưu có thể là
Bin Fu

1
cũng không rõ tại sao đây không phải là một bản sao của câu trả lời phức tạp truy vấn.
Artem Kaznatcheev
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.