Phân tích tiệm cận
Thuật ngữ này đề cập đến việc phân tích hiệu suất thuật toán với giả định rằng dữ liệu mà thuật toán vận hành ( đầu vào ), theo thuật ngữ của giáo dân, "đủ lớn để làm cho nó lớn hơn sẽ không thay đổi kết luận". Mặc dù kích thước chính xác của các đầu vào không cần phải được chỉ định (chúng ta chỉ cần một trên ràng buộc), dữ liệu thiết lập riêng của mình có đến được xác định.
Lưu ý rằng cho đến nay chúng ta mới chỉ nói về phương pháp phân tích; chúng tôi đã không chỉ định chính xác đại lượng mà chúng tôi đang phân tích (độ phức tạp về thời gian? độ phức tạp về không gian?) và chúng tôi cũng không chỉ định số liệu nào mà chúng tôi quan tâm (trường hợp xấu nhất? trường hợp tốt nhất? trung bình?).
Trong thực tế, thuật ngữ phân tích tiệm cận thường đề cập đến độ phức tạp thời gian giới hạn trên của một thuật toán, tức là hiệu suất trong trường hợp xấu nhất được đo bằng tổng thời gian chạy, được biểu thị bằng ký hiệu big-Oh (ví dụ: thuật toán sắp xếp có thể là O(nlogn)
).
Phân tích khấu hao
Thuật ngữ này đề cập đến việc phân tích hiệu suất thuật toán dựa trên một chuỗi hoạt động cụ thể nhằm vào trường hợp xấu nhất - nghĩa là, phân tích khấu hao ngụ ý rằng chỉ số là hiệu suất trong trường hợp xấu nhất (mặc dù nó vẫn không cho biết đại lượng nào đang được đo lường ). Để thực hiện phân tích này, chúng ta cần xác định kích thước của đầu vào, nhưng chúng ta không cần đưa ra bất kỳ giả định nào về hình thức của nó.
Theo thuật ngữ của giáo dân, phân tích khấu hao là chọn một kích thước tùy ý cho đầu vào và sau đó "chơi qua" thuật toán. Bất cứ khi nào bạn phải đưa ra quyết định phụ thuộc vào đầu vào, thì con đường xấu nhất sẽ được thực hiện¹. Sau khi thuật toán hoàn thành, chúng tôi chia độ phức tạp đã tính toán cho kích thước của đầu vào để tạo ra kết quả cuối cùng.
¹ lưu ý: Nói chính xác, con đường xấu nhất có thể về mặt lý thuyết . Nếu bạn có một vectơ tự động tăng gấp đôi kích thước mỗi khi dung lượng của nó cạn kiệt, thì "trường hợp xấu nhất" không có nghĩa là giả định rằng nó sẽ cần tăng gấp đôi sau mỗi lần chèn vì các lần chèn được xử lý dưới dạng một chuỗi. Chúng tôi được phép (và thực sự phải) sử dụng trạng thái đã biết để loại bỏ một cách toán học nhiều trường hợp "thậm chí tệ hơn" có thể, ngay cả khi đầu vào vẫn chưa biết.
Sự khác biệt quan trọng nhất
Sự khác biệt quan trọng giữa phân tích tiệm cận và phân tích khấu hao là phân tích trước phụ thuộc vào chính đầu vào, trong khi phân tích thứ hai phụ thuộc vào trình tự hoạt động mà thuật toán sẽ thực hiện.
Vì thế:
- phân tích tiệm cận cho phép chúng ta khẳng định rằng độ phức tạp của thuật toán khi nó được đưa ra đầu vào trường hợp tốt nhất / xấu nhất / trung bình có kích thước tiếp cận N bị giới hạn bởi một số hàm F (N) - trong đó N là một biến
- Phân tích khấu hao cho phép chúng ta khẳng định rằng độ phức tạp của thuật toán khi nó được đưa ra một đầu vào là các đặc tính chưa biết nhưng kích thước đã biết N không tệ hơn giá trị của hàm F (N) - trong đó N là giá trị đã biết