Tôi đã làm việc thông qua một bài tập về nhà Khoa học Máy tính gần đây liên quan đến đệ quy và ký hiệu big-O. Tôi tin rằng tôi hiểu điều này khá tốt (chắc chắn không hoàn toàn, mặc dù!) Nhưng có một câu hỏi đặc biệt đó là đem lại cho tôi những vấn đề nhất. Điều kỳ lạ là bằng cách nhìn nó, nó có vẻ là một trong những đơn giản nhất trên bài tập về nhà.Đệ quy và Big O
Cung cấp tốc độ tăng trưởng tốt nhất sử dụng ký hiệu lớn-Oh cho giải pháp cho sự tái diễn sau đây?
T (1) = 2
T (n) = 2T (n - 1) + 1 với n> 1
Và các lựa chọn là:
- O (n log n)
- O (n^2)
- O (2^n)
- O (n^n)
Tôi hiểu rằng O lớn hoạt động như một giới hạn trên, để mô tả số lượng tính toán nhiều nhất, hoặc thời gian chạy cao nhất, chương trình hoặc quá trình đó sẽ mất. Tôi cảm thấy như đệ quy đặc biệt này nên là O (n), vì, nhiều nhất, đệ quy chỉ xảy ra một lần cho mỗi giá trị n. Vì n không có sẵn, nó tốt hơn thế, O (nlogn), hoặc tệ hơn, là ba tùy chọn khác.
Vì vậy, câu hỏi của tôi là: Tại sao không phải là O (n) này?
Tôi tiếp tục đọc là "T (1) = (2 T (n))", nhưng tôi nghĩ bạn có nghĩa là "T (1) = 2 và T (n) = [...]". Chính xác? –
Bạn có thể đặt từng mệnh đề trên một dòng mới không? – leppie
Vâng, bởi vì khi tôi đọc nó ngay bây giờ, kết quả đi: 2, 5, 11, 23, vv ... – Powerlord