Các loại phân tích thời gian chạy khác ngoài trường hợp xấu nhất, trường hợp trung bình, vv?


22

Dưới đây là một số cách để phân tích thời gian chạy của thuật toán:

1) Phân tích trường hợp xấu nhất: Thời gian chạy trong trường hợp xấu nhất.

2) Phân tích trường hợp trung bình: Thời gian chạy dự kiến ​​trên một trường hợp ngẫu nhiên.

3) Phân tích khấu hao: Thời gian chạy trung bình trên chuỗi trường hợp xấu nhất.

4) Phân tích mượt mà: Thời gian chạy dự kiến ​​trong trường hợp nhiễu loạn ngẫu nhiên tồi tệ nhất.

5) Phân tích trường hợp chung: Thời gian chạy trên tất cả các trường hợp xấu nhất nhưng chỉ là một tập hợp con nhỏ.

Câu hỏi của tôi: Đây có phải là một danh sách đầy đủ?


2
Tôi đoán rằng loại danh sách này không bao giờ có thể được đầy đủ.
Tsuyoshi Ito

Câu trả lời:


8

Tối ưu sơ thẩm là một tính chất rất thú vị của các thuật toán. Người ta có thể khái quát các khái niệm về sự tối ưu của cá thể và đưa ra các khái niệm thú vị đáng ngạc nhiên bao gồm phân tích trường hợp xấu nhất và trường hợp trung bình.

Mặc dù nó không hoàn toàn nằm trong phạm vi của phân tích thuật toán truyền thống, nhưng nó rất thú vị theo đúng nghĩa của nó. Ý tưởng trong một bài báo của Afshani-Barbay-Chan (FOCS '09), người thảo luận về một thuật toán hình học xem xét hiệu suất thuật toán không theo thứ tự đầu vào (có liên quan đến vấn đề cụ thể của họ).

Điều này có thể được xem là khái quát hóa như sau: Đối với mỗi phân vùng thuật toán, các đầu vào thành các lớp tương đương và coi hiệu suất thuật toán là một số thống kê tập thể so với hiệu suất trung bình cho mỗi lớp tương đương này.

Phân tích trường hợp xấu nhất chỉ đơn giản xem đầu vào là các lớp tương đương riêng lẻ và tính thời gian chạy tối đa. Phân tích trường hợp trung bình xem xét lớp tương đương tầm thường, là một lớp duy nhất bao gồm tất cả các đầu vào. Trong bài báo Afshani-Barbay-Chan, thuật toán của họ là tối ưu nếu đầu vào được phân vùng thành các lớp hoán vị (nghĩa là hiệu suất không rõ thứ tự).

Không rõ điều này có dẫn đến bất kỳ mô hình phân tích thuật toán mới nào không. Khóa học của Tim Roughgarden có một số ví dụ động lực tuyệt vời và bao gồm các phương pháp khác nhau để phân tích các thuật toán.


Ananth, cảm ơn rất nhiều vì liên kết đến khóa học của Tim. Đó chính xác là thứ mà tôi đang tìm kiếm.
umar

14

Tôi có hai cái nữa cho danh sách, có phần giống nhau.

  1. Phân tích tham số biểu thị thời gian chạy dưới dạng hàm của hai giá trị thay vì một, sử dụng một số thông tin bổ sung về đầu vào được đo trong cái gọi là '`tham số' '. Như một ví dụ lấy bài toán Set độc lập. Thời gian chạy tốt nhất cho trường hợp chung là dạng cho một số hằng số . Nếu bây giờ chúng ta lấy tham số là treewidth của biểu đồ và biểu thị nó bằng tham số , thì Tập độc lập có thể được tính trong thời gian . Do đó, nếu treewidth nhỏ so với tổng kích thước của đồ thị , thì thuật toán tham số này nhanh hơn nhiều.1 < c < 2 k O ( 2 k n O ( 1 ) ) k nO(cnnO(1))1<c<2kO(2knO(1))kn

  2. Phân tích nhạy cảm đầu ra là một kỹ thuật được áp dụng cho các vấn đề xây dựng và cũng tính đến kích thước của đầu ra trong biểu thức thời gian chạy. Một ví dụ điển hình là vấn đề xác định các điểm giao nhau của một tập hợp các đoạn đường trong mặt phẳng. Nếu tôi không nhầm, bạn có thể tính các giao điểm trong thời gian trong đó là số giao điểm.kO(nlogn+k)k


8

Phân tích thích ứng đo thời gian chạy của các thuật toán thời gian đa thức đối với vô số tham số. Ví dụ: bạn muốn một thuật toán sắp xếp chạy trong thời gian, nhưng nhanh hơn nhiều khi đầu vào gần như được sắp xếp. Một phân tích thích ứng của thuật toán sắp xếp sẽ tính đến số lần đảo ngược cặp, số lần chạy, trong đó một lần chạy là một phần liên tiếp được sắp xếp tối đa của đầu vào hoặc entropy của đầu vào.O(nlogn)

Nó trông giống như Phân tích tham số cho các thuật toán đa thức thời gian, và có vẻ như phân tích nhạy cảm đầu ra nằm trong danh mục này.


Serge, cảm ơn vì liên kết đến bài đăng trên blog của Glencora, rất nhiều bình luận thú vị ở đó.
umar

7

Ngoài ra còn phân tích " xác suất cao " (đối với các thuật toán ngẫu nhiên), trong đó đối với bất kỳ trường hợp cụ thể nào bạn lo lắng về việc thuật toán của bạn sẽ hoạt động tốt như thế nào trong hầu hết thời gian, nhưng hoàn toàn có thể từ bỏ một phần nhỏ thời gian. Điều này là phổ biến trong học lý thuyết.


4

Bạn có thể thêm tính ngẫu nhiên vào thuật toán của mình và kết hợp nó với tất cả những điều trên. Sau đó, bạn sẽ nhận được, ví dụ, thời gian chạy dự kiến ​​trong trường hợp xấu nhất (trường hợp xấu nhất, nhưng tính trung bình trên tất cả các chuỗi có thể xảy ra của các đồng xu ngẫu nhiên trong thuật toán) và thời gian chạy trong trường hợp xấu nhất với xác suất cao (một lần nữa, trường hợp xấu nhất, nhưng xác suất trên các đồng xu ngẫu nhiên lật trong thuật toán).


3

Phân tích sinh học là một cách để so sánh hai thuật toán (Spyros Angelopoulos, Pascal Schweitzer: Paging và cập nhật danh sách theo phân tích phỏng đoán. J. ACM 60, 2013): Roughly, Thuật toán A tốt hơn Thuật toán B trên các đầu vào có độ dài n nếu có bijection f của các đầu vào có độ dài n sao cho A thực hiện trên đầu vào x ít nhất bằng B trên f (x).


1

Phân tích cạnh tranh

Được sử dụng để so sánh các thuật toán trực tuyến với các thuật toán ngoại tuyến hiệu suất. Xem trang wikipedia . Vấn đề cập nhật danh sách là một ví dụ cổ điển.


1
Nhưng nó không được sử dụng để phân tích "thời gian chạy của thuật toán" .
Jukka Suomela

0

Phân tích cạnh tranh Trong thuật toán thay thế Trang , một phương pháp áp đảo phương pháp khác bằng cách thiếu trang ít hơn. Thiếu trang ít hơn minh họa "thời gian chạy ít hơn". Bên cạnh đó, phân tích cạnh tranh là một phương pháp để so sánh hai phương pháp tương đối. Một cuốn sách tham khảo hay là "PHÂN TÍCH TRỰC TUYẾN VÀ PHÂN TÍCH CẠNH TRANH" từ Allan Borodin.

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.