Phân tích khấu hao là gì? Và làm thế nào nó có thể giúp tôi đạt được các đảm bảo hiệu suất trong trường hợp xấu nhất trong các chương trình của mình?
Tôi đã đọc rằng các kỹ thuật sau đây có thể giúp lập trình viên đạt được các đảm bảo hiệu suất trong trường hợp xấu nhất (nghĩa là theo cách riêng của tôi: đảm bảo rằng thời gian chạy của chương trình sẽ không vượt quá thời gian chạy trong diễn viên tệ nhất):
- Các thuật toán ngẫu nhiên (ví dụ thuật toán quicksort là bậc hai trong trường hợp xấu nhất, nhưng việc sắp xếp ngẫu nhiên đầu vào mang lại sự đảm bảo xác suất rằng thời gian chạy của nó là tuyến tính)
- Trình tự các hoạt động (phân tích của chúng tôi phải tính đến cả dữ liệu và trình tự các hoạt động được thực hiện bởi khách hàng)
- Phân tích khấu hao (một cách khác để đảm bảo hiệu suất là khấu hao chi phí, bằng cách theo dõi tổng chi phí của tất cả các hoạt động, chia cho số lượng hoạt động. Trong cài đặt này, chúng tôi có thể cho phép một số hoạt động đắt tiền, trong khi vẫn giữ chi phí trung bình Nói cách khác, chúng tôi phân bổ chi phí cho một vài hoạt động đắt tiền, bằng cách chỉ định một phần của nó cho mỗi một số lượng lớn các hoạt động rẻ tiền)
Tác giả đã đề cập đến việc sử dụng thay đổi kích thước cấu trúc dữ liệu mảng cho Stack như một ví dụ về cách đạt được phân tích khấu hao nhưng tôi vẫn không hiểu phân tích khấu hao là gì và làm thế nào nó thực sự có thể được thực hiện (thuật toán cấu trúc dữ liệu?) Để đạt được điều tồi tệ nhất đảm bảo hiệu suất -cast