Sau đây là tối ưu bound:
Nếu p < = n/log n bạn có thể làm điều đó trong thời gian O (n/p) thời gian; nếu không thì đó là O (log n) tức là khi p> n/log n bạn không đạt được gì so với p = n/log n.
Proof - thấp hơn ràng buộc:
yêu cầu bồi thường 1: Bạn không bao giờ có thể làm nhanh hơn Ω (n/p), bởi vì vi xử lý p có thể đưa ra chỉ tăng tốc của p
yêu cầu bồi thường 2: Bạn không bao giờ có thể làm nhanh hơn hơn Ω (log n), bởi vì mô hình CREW (xem giấy không xác định); nếu bạn muốn kiểm tra nếu một mảng 0-1 có ít nhất một 1, bạn cần thời gian O (log n).
Proof - trên ràng buộc:
yêu cầu bồi thường 3: Bạn có thể tìm tối đa sử dụng n/log xử lý n và trong thời gian O (log n) thời gian
Proof: Nó rất dễ dàng để tìm tối đa sử dụng bộ vi xử lý n và log n thời gian; nhưng trên thực tế, trong thuật toán này hầu hết các bộ xử lý hầu như không hoạt động; bằng cách thích hợp, (xem ví dụ: sách phức tạp của Papadimitriou) số của chúng có thể được hạ xuống n/log n.
Bây giờ, được đưa ra ít hơn n/log n vi xử lý bạn có thể cho công việc được giao để xử lý K tới 1 bộ xử lý, điều này chia yêu cầu xử lý bởi K và nhân lên thời gian theo yêu cầu của K.
Hãy K = (n/log n)/p; thuật toán trước chạy trong thời gian O (K log n) = O (n/p), và yêu cầu n/(log n * K) = p bộ vi xử lý.
được sửa đổi: Tôi chỉ nhận ra rằng khi p < = n/log n, thuật toán dasblinkenlight vừa thể hiện cùng một thời gian chạy tiệm cận:
n/p + log p < = n/p + log (n/log n) < = n/p + log n < = n/p + n/p < = 2n/p = O (n/p)
để bạn có thể sử dụng thuật toán có độ phức tạp O (n/p) khi p < = n/log n và O (log n) nếu không.
'Nhanh nhất' có ý nghĩa gì ở đây? Nó sẽ không phụ thuộc vào chi phí tương đối của mã thực thi, đọc bộ nhớ, viết bộ nhớ, so sánh các con số, và cũng về cách hoạt động của bộ đệm ẩn? –
@aix: Bạn có thể đúng. Tôi không phiền nếu có ai đó đánh dấu nó để di chuyển ở đó. Cho đến lúc đó, tôi để nó ở lại đây. Nó vẫn là về lập trình sau khi tất cả. – ArjunShankar
@PaulHankin: Tôi đang nói về sự phức tạp ở đây. tức là thả tất cả các hằng số như '5ms' để đọc, '10ns' một chu kỳ, lần truy cập bộ nhớ cache, v.v. Chỉ cần xem xét các nội dung như 'đọc', 'viết', 'so sánh' dưới dạng 1 thao tác: http: //en.wikipedia.org/wiki/Analysis_of_algorithms – ArjunShankar