O lớn của T (n) là gì?


7

Tôi có một bài tập về nhà mà tôi nên tìm công thức và thứ tự của được đưa ra bởiT(n)

T(1)=1T(n)=T(n1)T(n1)+1.

Tôi đã thiết lập rằng nhưng bây giờ tôi hơi bối rối. Có phải là câu trả lời đúng cho phần thứ hai?T(n)=1nT(n)O(1n)

Dựa trên định nghĩa của big-O, chúng ta có điều đó

O(g(n))={f(n)c,n0>0 s.t. 0f(n)cg(n) for all nn0}.

Điều này đúng với vì vậy, dựa trên định nghĩa, phải chính xác nhưng trong thế giới thực, điều đó là không thể thuật toán đó có thể nhanh hơn .f(n)=g(n)=1nO(1n)O(1)

Câu trả lời:


8

Có, tất cả các hàm thỏa mãn . Các định nghĩa có ý nghĩa ngay cả khi không phải là thời gian chạy của bất kỳ chức năng nào. Thật vậy, ký hiệu này xuất phát từ lý thuyết số, trong đó thường là một số thuật ngữ lỗi. Ngay cả trong khoa học máy tính, đôi khi các ký hiệu O lớn được sử dụng trong khi phân tích các thuật toán cho một cái gì đó ngoài thời gian chạy hoặc yêu cầu không gian.f(n)f(n)O(f(n))f(n)f(n)


Có vẻ như sự khác biệt là phát triển với khi tăng, nhưng số lượng thao tác để tính là nếu bạn đơn giản hóa thành hoặc nếu bạn sử dụng định nghĩa được cung cấp trực tiếp trong bài toán về nhà. T(n)1nnT(n)O(1)T(n)T(n)=1nO(n2)
Kevin

1
@Kevin Câu hỏi không nói gì về số lượng thao tác cần thiết để tính toán bất cứ điều gì: nó chỉ yêu cầu giải pháp cho mối quan hệ lặp lại. Các giải pháp cho các lần lặp lại không phải chạy theo thuật toán, giống như các số không phải là độ dài hoặc trọng số.
David Richerby
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.