2010-05-02 37 views

Trả lời

2

Hãy suy nghĩ theo cách này:
Trong mỗi "lần lặp" của đệ quy bạn thực hiện O (n).
Mỗi lần lặp lại có công việc n-1 để làm, cho đến khi n = trường hợp cơ sở. (Tôi giả sử trường hợp cơ sở là O (n) công việc)
Vì vậy, giả sử trường hợp cơ sở là một độc lập liên tục của n, có O (n) lặp đi lặp lại của đệ quy.
Nếu bạn có n lần lặp O (n) hoạt động, O (n) * O (n) = O (n^2).
Phân tích của bạn là chính xác. Nếu bạn muốn biết thêm thông tin về cách giải quyết các cuộc thám hiểm này, hãy nhìn vào cây Recursion. Chúng rất trực quan so với các phương pháp khác.

+0

Tôi đã quá nhiều vào toán học của nó tất cả những gì tôi nghĩ, và quên thực tế chúng tôi đang đối phó với một đệ quy. Có lẽ đó là lý do tại sao tôi không nhận được nó. Đối với những điều trên tôi đã nhận T (n) <= 2n đó có đúng không? –

+0

Không hoàn toàn hiểu những gì bạn đang yêu cầu, có rất nhiều trên – Rubys

+0

@Tony: Không có điều đó không đúng. T (n) có thể lớn hơn 2n cho n nhỏ. –

6

Bạn cũng cần trường hợp cơ sở cho mối quan hệ lặp lại của mình.

T(1) = c 
T(n) = T(n-1) + n 

Để giải quyết vấn đề này, trước tiên bạn có thể đoán giải pháp và sau đó chứng minh nó hoạt động bằng cảm ứng.

T(n) = (n + 1) * n/2 + c - 1 

Trường hợp cơ sở đầu tiên. Khi n = 1 điều này cho c theo yêu cầu.

Đối với n khác:

T(n) 
= (n + 1) * n/2 + c - 1 
= ((n - 1) + 2) * n/2 + c - 1 
= ((n - 1) * n/2) + (2 * n/2) + c - 1 
= (n * (n - 1)/2) + c - 1) + (2 * n/2) 
= T(n - 1) + n 

Vì vậy, các giải pháp công trình.

Để có được đoán ở nơi đầu tiên, nhận thấy rằng mối quan hệ tái phát của bạn tạo ra các triangular numbers khi c = 1:

T(1) = 1: 

* 

T(2) = 3: 

* 
** 

T(3) = 6: 

* 
** 
*** 

T(4) = 10: 

* 
** 
*** 
**** 

etc.. 

trực giác một tam giác là khoảng một nửa của một hình vuông, và trong ký hiệu Big-O hằng số có thể được bỏ qua vì vậy O (n^2) là kết quả mong đợi.

+0

Bạn có thể cho tôi biết cách bạn đạt được phương trình thứ ba mà bạn có trong câu trả lời của mình không? Bạn áp dụng kỹ thuật toán học nào cho nó? –

+0

@Tony: Đó là "phỏng đoán". Trong thực tế, đó là bởi vì tôi biết công thức cho các số tam giác - tôi đã không thực sự đoán nó, tôi đã biết nó. Nó thường dễ dàng hơn để "đoán" câu trả lời đúng và chứng minh rằng nó là chính xác thay vì lấy nó từ nguyên tắc đầu tiên. Đây là một kỹ thuật tiêu chuẩn để giải quyết các mối quan hệ tái phát. –

+0

@Tony: Thuật ngữ kỹ thuật cho dự đoán được giáo dục là "ansatz". Xem: http://en.wikipedia.org/wiki/Ansatz. Có một số thông tin về việc sử dụng cách đoán để giải quyết mối quan hệ lặp lại trong Wikipedia: http://en.wikipedia.org/wiki/Recurrence_relation.Các phương pháp khác có thể giải quyết các mối quan hệ lặp lại cũng được liệt kê ở đó. –

0

Có vẻ đúng, nhưng sẽ tùy thuộc vào trường hợp cơ sở T (1). Giả sử bạn sẽ thực hiện các bước n để lấy T (n) đến T (0) và mỗi lần n là bất kỳ từ 0 đến n với giá trị trung bình là n/2 sao cho n * n/2 = (n^2)/2 = O (n^2).

1

Giải pháp này khá dễ dàng cho giải pháp này. Bạn phải hủy đăng ký đệ quy:

T(n) = T(n-1) + n = T(n-2) + (n - 1) + n = 
= T(n-3) + (n-2) + (n-1) + n = ... = 
= T(0) + 1 + 2 + ... + (n-1) + n 

Bạn có phép tính số học tại đây và tổng là 1/2*n*(n-1). Về mặt kỹ thuật bạn đang thiếu điều kiện biên ở đây, nhưng với bất kỳ điều kiện biên liên tục nào bạn thấy rằng đệ quy là O(n^2).

Các vấn đề liên quan