Nỗ lực tính toán của thuật toán


9

Hãy xem xét vấn đề tối ưu hóa lồi không bị ràng buộc nghiêm ngặtĐặt x_ \ text {opt} biểu thị cực tiểu duy nhất của nó và x_0 là một xấp xỉ ban đầu nhất định cho x_ \ text {opt}. Chúng ta sẽ gọi một vectơ x một giải pháp \ epsilon- đóng của \ mathcal {O} nếu \ started {phương trình} \ frac {|| x - x _ {\ text {opt}} || _2} {| văn bản {opt} || _2} \ leq \ epsilon. \ end {phương trình}x opt x 0 x opt . x ϵ - O | | x - x chọn | | 2O:=minxRnf(x).xoptx0xopt.xϵO

||xxopt||2||x0xopt||2ϵ.

Giả sử tồn tại hai thuật toán lặp A1A2 để tìm một giải pháp ϵ đóng của O với các thuộc tính sau:

  1. Đối với bất kỳ ϵ>0, tổng nỗ lực tính toán, tức là nỗ lực cần thiết cho mỗi lần lặp × tổng số lần lặp, để tìm một giải pháp ϵ đóng là giống nhau cho cả hai thuật toán.
  2. Nỗ lực lặp lại cho A1O(n), , trong khi đó của A2O(n2).

Có những tình huống, trong đó người ta thích một thuật toán hơn cái kia? Tại sao?

Câu trả lời:


14

Thông thường rất khó nếu không thể thực hiện một phiên bản song song của thuật toán lặp mà làm tê liệt các lần lặp. Việc hoàn thành một lần lặp là một điểm trình tự tự nhiên. Nếu một thuật toán yêu cầu số lần lặp ít hơn nhưng mỗi lần lặp lại nhiều công việc hơn, thì nhiều khả năng thuật toán này có thể được thực hiện song song một cách hiệu quả.

Một ví dụ về điều này là lập trình tuyến tính, trong đó phương pháp rào cản kép (điểm bên trong) thường chỉ sử dụng vài chục lần lặp ngay cả đối với các vấn đề rất lớn, nhưng công việc trên mỗi lần lặp lại khá rộng. Trong so sánh các phiên bản khác nhau của phương pháp đơn giản thường yêu cầu nhiều lần lặp hơn, nhưng công việc trên mỗi lần lặp lại ít hơn. Trong thực tế, việc triển khai song song các phương pháp điểm bên trong đã cho thấy hiệu quả song song tốt hơn nhiều so với việc thực hiện song song phương pháp đơn giản.


7

Tôi có thể nghĩ về một số khả năng:

Nếu cả hai thuật toán đều giảm lỗi một cách đơn điệu với mỗi lần lặp, thì một số thuật toán có thể có nhiều lần lặp lại rẻ hơn vì nó mang lại cho bạn nhiều sự lựa chọn hơn khi nào nên dừng lặp lại.

Nếu là công việc và thời gian nhưng bộ nhớ , bạn có thể thích nếu lớn. thậm chí có thể đủ lớn để khiến bạn chọn vì việc sử dụng bộ nhớ có nhiều khả năng hạn chế bạn ở đây. O(n)O( n k ) A 2 kk=2 A 2A1O(n)O(nk)A2kk=2A2

Điều này có thể áp dụng cho dù chúng ta đang nói về tối ưu hóa hay bất kỳ loại vấn đề lặp nào khác.


Tôi đồng ý với bạn về các hạn chế không gian. Tôi đã tự hỏi nếu một người có thể làm cho một trường hợp chỉ trên cơ sở phức tạp thời gian.
Suresh
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.