Các định nghĩa của một thuật toán chạy trong thời gian đa thức và trong thời gian đa thức mạnh


18

Wikipedia định nghĩa nó là

Một thuật toán được gọi là thời gian đa thức nếu thời gian chạy của nó bị giới hạn trên bởi một biểu thức đa thức trong kích thước của đầu vào cho thuật toán, tức là cho một số k không đổi.T(n)=O(nk)

Thuật toán chạy trong thời gian đa thức mạnh nếu [8]

  • số lượng các phép toán trong mô hình tính toán số học được giới hạn bởi một đa thức về số lượng các số nguyên trong trường hợp đầu vào; và

  • không gian được sử dụng bởi thuật toán được giới hạn bởi một đa thức trong kích thước của đầu vào.

Trong Bernhard Korte, Jens Vygen, Tối ưu hóa kết hợp :

Định nghĩa 1.4.

Một thuật toán với đầu vào hợp lý được cho là chạy trong thời gian đa thức nếu

  • có một số nguyên k sao cho nó chạy trong thời gian , trong đó n là kích thước đầu vào vàO(nk)
  • tất cả các số trong các tính toán trung gian có thể được lưu trữ với các bit .O(nk)

Một thuật toán với đầu vào tùy ý được cho là chạy trong thời gian đa thức mạnh nếu

  • có một số nguyên k sao cho nó chạy trong thời gian cho bất kỳ đầu vào nào bao gồm n số vàO(nk)
  • nó chạy trong thời gian đa thức cho đầu vào hợp lý.

Xin hãy sửa tôi nếu tôi sai. Sau đây là những khác biệt theo nghĩa đen mà tôi nhận thấy:

  • Đối với các thuật toán thời gian đa thức, định nghĩa của Korte và Vygen là "định nghĩa của Wikipedia + không gian lưu trữ đa thức".

  • Đối với các thuật toán thời gian đa thức mạnh, định nghĩa của Korte và Vygen và Wikipedia đều yêu cầu thời gian đa thức trong kích thước lưu trữ đầu vào. Nhưng K và V cũng yêu cầu thời gian đa thức về số lượng số trong bất kỳ đầu vào nào, trong khi Wikipedia cũng yêu cầu không gian lưu trữ đa thức trong kích thước đầu vào.

Vậy định nghĩa của K và V và Wikipedia cho hai khái niệm này có tương ứng không? Những khác biệt và mối quan hệ khác là gì giữa chúng?

Cảm ơn và trân trọng!


Phần wikipedia ngay sau khi defn có một lời giải thích khá tốt, nó không đủ rõ ràng? nó có liên quan đến việc có bao nhiêu bit đại diện cho các số và các số rất lớn có thể ảnh hưởng đến các phép đo phức tạp "hướng lên". nghĩ rằng các khuyết điểm với K & V là tương đương "gần". đối với các đầu vào hợp lý, người ta cần một bằng chứng rằng số học trên các số hữu tỷ không tăng kích thước của chúng theo một cách lớn. nghĩ rằng điều này có thể được hiển thị bằng cách tìm LCD của tất cả các đầu vào và thực hiện tất cả các số học bằng số với màn hình LCD.
vzn

@vzn: lời giải thích trong Wikipedia (1) phù hợp với số học so với máy Turing nhưng khá nông về mục đích và định nghĩa mạnh mẽ, và (2) hoàn toàn sai về những gì GCD minh họa.
alexei

Câu trả lời:


5

Trước khi định nghĩa chính thức, hãy xem xét phân loại "mạnh / yếu" nhằm mục đích phân biệt.

Đầu tiên, hãy cân nhắc việc chạy một trong hai trên Máy Turing. Cả hai sẽ chạy trong một số bước đa thức về độ dài của đầu vào được mã hóa nhị phân. Do đó, số lượng các phép toán số học được thực hiện bởi cả hai sẽ phải là đa thức về độ dài của đầu vào được mã hóa nhị phân . Do đó, đối với cả thời gian chạy của Turing Machine sẽ tăng lên một cách đa thức khi số lượng giá trị đầu vào hoặc cường độ của chúng tăng lên. Để nhấn mạnh cái sau, lưu ý rằng ngay cả người mạnh cũng sẽ thực hiện nhiều bước TM hơn trên cường độ lớn hơn (ít nhất nó cần phải đọc các bit thừa). Trong mọi trường hợp, người ta không trở thành cấp số nhân (như trường hợp với thời gian giả đa thức không liên quan). Chỉ với một máy Turing, một sự khác biệt cơ bản dường như không thể phát hiện được.

Bây giờ hãy xem xét việc chạy từng trên một máy số học trong đó bất kỳ hoạt động nào là một hoạt động số học trên toàn bộ số và các hoạt động số học là . Khi bạn tăng cường độ của các số đầu vào, độ dài của đầu vào được mã hóa nhị phân sẽ tăng lên và thời gian chạy của thuật toán yếu sẽ tăng lên, tuy nhiên thời gian chạy của thuật toán mạnh sẽ không thay đổi, bởi vì có thể bị ràng buộc bởi số các số đầu vào mà bạn không thay đổi (ví dụ: nhân ma trận so với GCD của Euclid).O(1)

Tập hợp các thuật toán chạy theo số lượng các phép toán số học đa thức về số lượng đầu vào được xác định rõ, nhưng trùng lặp với lớp các thuật toán có số bước TM theo cấp số nhân theo độ dài của đầu vào được mã hóa nhị phân (xem ví dụ ). Do đó, đối với tập hợp này, các thuộc tính trong đoạn thứ hai sẽ không giữ được. Để loại trừ giao lộ không mong muốn, chúng tôi thêm một điều kiện cho không gian TM đa thức [*].

Trong [1] điều này được nêu theo hai cách:

  • Thuật toán chạy trong thời gian đa thức mạnh nếu thuật toán là thuật toán không gian đa thức và thực hiện một số phép toán số học cơ bản được giới hạn bởi một đa thức về số lượng đầu vào.
  • Thuật toán đa thức là thuật toán không gian đa thức (trong mô hình máy Turing tiêu chuẩn của chúng tôi) và thuật toán thời gian đa thức trong mô hình số học (xem câu hỏi này để làm rõ).

O(n3)O(n2)

[*] Điều kiện thứ hai được nêu ở khắp mọi nơi là không gian đa thức, trong khi yêu cầu thời gian đa thức có ý nghĩa hơn đối với tôi. Các cựu là bao gồm nhiều hơn, nhưng lạ. Có thuật toán đa thức mạnh nào mất nhiều thời gian hơn đa thức không? Lưu ý rằng ví dụ bình phương lặp lại không tốn thời gian đa thức hay không gian đa thức.

[1] Grötschel, Martin; László Lovász, Alexander Schrijver (1988). "Độ phức tạp, phép lạ và tính toán số". Thuật toán hình học và tối ưu hóa kết hợp. Mùa xuân. Sđt 0-387-13624-X.

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.