Là một phương pháp thống kê được sử dụng trong lập trình cho phép bạn đánh giá độ phức tạp của thuật toán để giải quyết vấn đề, sử dụng phân tích về tính hiệu quả tiềm năng và mức độ dễ hiểu của nó đối với người dùng cuối. Phương pháp này được phát triển bởi tác giả James MacMillan Conway vào giữa thế kỷ 20. Conway đã chứng minh hai kết quả quan trọng: thứ nhất, đối với một số loại bài toán có nhiều mô hình về độ phức tạp tính toán, do đó, đối với một bài toán nhất định, có thể không rõ lớp con nào có thể được ánh xạ tới lớp khác; thứ hai, anh ấy đã chỉ ra cách phân loại các thuật toán theo độ phức tạp tính toán của chúng bằng cách đo số lần lặp cần thiết để chọn bất kỳ phần tử nào trong đầu ra cho đến khi phần tử mong muốn được đưa vào. Nói tóm lại, thuật toán được đánh giá bằng số lần nó phải thử các phương án với hy vọng đoán được câu trả lời đúng để có được câu trả lời đó. Tuy nhiên, với phương pháp ước tính độ phức tạp của thuật toán này, câu hỏi đặt ra là liệu điểm của thuật toán là giá trị tối đa được tính toán hay là giá trị trung bình/kỳ vọng, vì có thể có trường hợp điểm kỳ vọng thấp hơn nhiều so với điểm tối đa. tính toán. Vấn đề này đã được giải quyết một phần trong ước tính đã sửa đổi về độ phức tạp của thuật toán, độ phức tạp tăng trưởng, cung cấp giới hạn trên về thời gian chạy dự kiến.