Câu nói khá mơ hồ và thiếu chính xác. Có ít nhất ba cách liên quan để giải thích nó.
Điểm toán học theo nghĩa đen đằng sau đó là, nếu bạn chỉ quan tâm đến các trường hợp kích thước lên đến một giới hạn nào đó thì chỉ có rất nhiều trường hợp có thể xảy ra. Ví dụ, chỉ có nhiều đồ thị hữu hạn trên một trăm đỉnh. Nếu chỉ có một số lượng các trường hợp hữu hạn, về nguyên tắc, bạn có thể giải quyết vấn đề bằng cách chỉ cần xây dựng một bảng tra cứu tất cả các câu trả lời cho tất cả các trường hợp có thể. Bây giờ, bạn có thể tìm thấy câu trả lời bằng cách kiểm tra đầu tiên rằng đầu vào không quá lớn (mất thời gian không đổi: nếu đầu vào dài hơn k, không hợp lệ) và sau đó tra cứu câu trả lời trong bảng (mất thời gian không đổi: có một số mục cố định trong bảng). Tuy nhiên, lưu ý rằng kích thước thực tế của bảng có thể rất lớn. Tôi đã nói rằng chỉ có một số lượng đồ thị hữu hạn trên một trăm đỉnh và đó là sự thật. Chỉ là số lượng hữu hạn lớn hơn số lượng nguyên tử trong vũ trụ quan sát được.
Một điểm thực tế hơn là, khi chúng ta nói rằng thời gian chạy của một thuật toán là , mà chỉ có nghĩa rằng đó là tiệm c n 2 bước, đối với một số không đổi C . Đó là, có một số liên tục n 0 như vậy mà, cho tất cả n ≥ n 0 , thuật toán mất khoảng c n 2 bước. Nhưng có thể n 0 = 100 , 000 , 000Θ(n2) cn2Cn0n≥n0cn2n0=100,000,000và bạn chỉ quan tâm đến các trường hợp kích thước nhỏ hơn thế nhiều. Giới hạn bậc hai không triệu chứng có thể thậm chí không áp dụng cho các trường hợp nhỏ của bạn. Bạn có thể may mắn và nó có thể nhanh hơn với các đầu vào nhỏ (hoặc bạn có thể không may mắn và làm cho nó chậm hơn). Ví dụ: đối với nhỏ , n 2 < 1000 n, vì vậy bạn muốn chạy thuật toán bậc hai với hằng số tốt hơn thuật toán tuyến tính với hằng số xấu. Một ví dụ thực tế của điều này là các thuật toán nhân ma trận hiệu quả nhất (các biến thể của Coppersmith Trực Win giác , chạy trong thời gian O ( n 2.3729 ) ) hiếm khi được sử dụng trong thực tế vì O của Strassennn2<1000nO(n2.3729) Thuật toán ( n 2.8074 ) nhanh hơn trừ khi ma trận của bạn thực sự lớn.O(n2.8074)
Điểm thứ ba là, nếu nhỏ, n 2 và thậm chí n 3 nhỏ. Ví dụ, nếu bạn cần phải sắp xếp một vài ngàn mục dữ liệu và bạn chỉ cần sắp xếp chúng một lần, bất kỳ thuật toán sắp xếp là đủ tốt: a Θ ( n 2 )nn2n3Θ(n2)thuật toán vẫn chỉ cần vài chục triệu hướng dẫn để sắp xếp dữ liệu của bạn, điều này hoàn toàn không mất nhiều thời gian trên CPU có thể thực hiện hàng tỷ hướng dẫn mỗi giây. OK, cũng có truy cập bộ nhớ, nhưng ngay cả một thuật toán chậm sẽ mất ít hơn một giây, vì vậy có lẽ tốt hơn là sử dụng thuật toán đơn giản, chậm và làm cho đúng hơn là sử dụng thuật toán phức tạp, nhanh và thấy rằng nó nhanh như chớp nhưng lỗi và không thực sự sắp xếp dữ liệu đúng.