Giải quyết mối quan hệ lặp lại với n làm tham số


18

Xem xét sự tái phát

T(n)= =n⋅T(n)+cn

cho với một số hằng số dương và .n>2cT(2)= =1

Tôi biết định lý Master để giải quyết các đợt tái phát, nhưng tôi không chắc chắn về cách chúng ta có thể giải quyết mối quan hệ này bằng cách sử dụng nó. Làm thế nào để bạn tiếp cận tham số căn bậc hai?


5
Định lý Master không được áp dụng ở đây; không thể được viết là . Bạn đã thử cái gì khác? nnb
— Raphael

@Raphael: Tôi đã thử phương pháp thay thế, nhưng dường như bị mắc kẹt về giá trị nào tôi nên chọn để thay thế.
— người tìm kiếm

1
Làm thế nào về "mở ra sự tái phát một vài lần, quan sát một mô hình, đoán giải pháp và chứng minh nó "?
— Raphael

Vâng, đây là lần đầu tiên tôi bắt gặp loại này, có thể một số trợ giúp ở đây sẽ giúp tôi giải quyết các vấn đề tự nhiên trong tương lai một cách dễ dàng.
— người tìm kiếm

Vì bạn đề cập đến Định lý chủ, tôi giả sử bạn cần giải quyết mối quan hệ này cho các giới hạn tiệm cận và không thực sự cần biểu thức dạng đóng. Đưa ra dưới đây, có một số giải pháp tốt để tìm biểu thức dạng đóng, cũng cho độ phức tạp tiệm cận. Tuy nhiên, nếu bạn chỉ cần độ phức tạp tiệm cận, việc phân tích đơn giản hơn. Có một cái nhìn ở đây để có một lời giải thích tốt về việc tìm kiếm sự phức tạp tiệm cận, với một giải pháp trực quan tốt cho trường hợp vấn đề của bạn.
— Paresh

Câu trả lời:


9

Chúng tôi sẽ sử dụng đề xuất của Raphael và mở ra sự tái diễn. Sau đây, tất cả các logarit là cơ sở 2. Chúng tôi nhận được

nơiβ(n)là bao nhiêu lần bạn phải lấy căn bậc hai để bắt đầu với n, và đạt được 2. Nó chỉ ra rằngβ(n)=loglogn. Làm thế nào bạn có thể thấy điều đó? Xem xét: n

T(n)= =n1/2T(n1/2)+cn= =n3/4T(n1/4)+n1/2cn1/2+cn= =n7/số 8T(n1/số 8)+n3/4cn1/4+2cn= =n15/16T(n1/16)+n7/số 8cn1/số 8+3cnGiáo dục= =n2T(2)+cnβ(n).
β(n)β(n)= =đăng nhập⁡đăng nhập⁡n Vì vậy, số lần bạn cần phải thực hiện các căn bậc hai để đạt được 2 là giải pháp cho1
n= =2đăng nhập⁡nn1/2= =212đăng nhập⁡nn1/4= =214đăng nhập⁡nGiáo dục
, đó làloglogn. Vì vậy, giải pháp cho đệ quy làcnloglogn+112tđăng nhập⁡n≈1đăng nhập⁡đăng nhập⁡n. Để làm cho điều này hoàn toàn nghiêm ngặt, chúng ta nên sử dụng phương pháp thay thế và rất cẩn thận về cách mọi thứ được làm tròn. Khi tôi có thời gian, tôi sẽ cố gắng thêm phép tính này vào câu trả lời của mình.cnđăng nhập⁡đăng nhập⁡n+12n

"Bạn cần phải lấy căn bậc hai lần" - đó là một cái gì đó mới bắt đầu có thể được mong đợi để xem? Ngoài ra, kết quả của bạn không phù hợp với Yuval; nó chỉ nhằm mục đích không có triệu chứng? đăng nhập⁡đăng nhập⁡n
— Raphael

@Raphael: Yuval đã mắc lỗi, hiện anh ấy đã sửa. Tôi sẽ giải thích căn bậc hai trong câu trả lời của tôi.
— Peter Shor

3
Một ý tưởng khác để thấy rằng đệ quy lấy là như sau: Bằng cách lấy căn bậc hai của n, bạn giảm một nửa các chữ số cần thiết cho biểu diễn nhị phân của n . Vì vậy, đầu vào của bạn cần w = log n bit và bạn chia kích thước từ cho 2 cho mỗi cấp của đệ quy. Do đó bạn dừng lại sau khi đăng nhập w = log log n bước. Ôi(đăng nhập⁡đăng nhập⁡n)nnw=log⁡nđăng nhập⁡w= =đăng nhập⁡đăng nhập⁡n
— A.Schulz

10

Trong bình luận của bạn, bạn đã đề cập rằng bạn đã cố gắng thay thế nhưng bị mắc kẹt. Đây là một dẫn xuất hoạt động. Động lực là chúng ta muốn thoát khỏi những nhân ở phía bên tay phải, để lại cho chúng ta một cái gì đó trông giống nhưU(n)=U( √n. Trong trường hợp này, mọi thứ diễn ra rất độc đáo:Bạn(n)= =Bạn(n)+SomethTôing

Bây giờ hãy điều đơn giản hóa việc thậm chí còn hơn nữa, bằng cách thay đổi các bản ghi (kể từlg√

T(n)=n T(n)+nso, dividing by n we getT(n)n=T(n)n+1and letting n=2m we haveT(2m)2m=T(2m/2)2m/2+1
). Đặt S ( m )lg⁡n=(1/2)lg⁡n Aha! Đây là một sự tái diễn nổi tiếng với giải pháp S(m)=Θ(lgm) Quay trở lại vớiT(
S(m)=T(2m)2mso our original recurrence becomesS(m)=S(m/2)+1
S(m)= =Θ(lg⁡m)
, sau đó chúng ta có, với n = 2 m (và vì vậy m = lg n ), T ( n )T()n= =2mm= =lg⁡n Vậy T ( n ) = Θ ( n
T(n)n= =Θ(lglg⁡n)
.T(n)= =Θ(nlglg⁡n)

6

Nếu bạn viết bạn có T ( m ) = mm= =đăng nhập⁡n .T(m)= =m2⋅T(m2)+c⋅2m 

Bây giờ bạn biết cây đệ quy có cao của trật tự , và một lần nữa nó không khó để nhìn thấy nó của O ( 2 m ) ở mỗi cấp, vì vậy tổng thời gian chạy là: O ( ( log m ) ⋅ 2 m ) , trong đó kết luận O ( n ⋅ log log n ) cho n .Ôi(đăng nhập⁡m)Ôi(2m) Ôi((đăng nhập⁡m)⋅2m) Ôi(n⋅đăng nhập⁡đăng nhập⁡n) n

Trong tất cả khi bạn nhìn thấy hoặcn an, là tốt để kiểm tra logarit.nmộtb,một<b 

PS: Chắc chắn bằng chứng nên bao gồm nhiều chi tiết hơn bằng cách tôi bỏ qua chúng.


2

Hãy làm theo đề xuất của Raphael, với : T ( n ) = T ( 2 2 k )n= =22k

T(n)= =T(22k)= =22k-1T(22k-1)+c22k= =22k-1+2k-2T(22k-2)+c(22k+22k)= =⋯= =22k-1+2k-2+⋯+20T(220)+c(22k+22k+⋯+22k)= =22k-1+ck22k= =(cđăng nhập⁡đăng nhập⁡n+1/2)n.

Chỉnh sửa: Cảm ơn Peter Shor đã sửa chữa!


22kGiáo dục

22k

22knT(2)

1
T(n)= =⌈n⌉T(⌈n⌉)+cn

1

T(n)= =n T(n)+n= =n1/2(n1/4 T(n1/4)+n1/2)+n= =n1-1/4 T(n1/4)+2n.

k

T(n)= =n1-1/2kT(n1/2k)+kn.

n1/2k= =2k

n1/2k= =2⟹đăng nhập⁡n= =2k⟹k= =đăng nhập⁡đăng nhập⁡n.

k= =đăng nhập⁡đăng nhập⁡n

T(n)= =n2T(2)+nđăng nhập⁡đăng nhập⁡n.

2
Bạn có thể viết lại hình ảnh của bạn để MathJax? Chúng tôi không khuyến khích hình ảnh với văn bản là câu trả lời.
— Ác

1
@PKG Có vẻ như chỉnh sửa của bạn hơi khác và bạn cũng giải thích các bước, có thể bạn có thể tự trả lời.
— Ác
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 cookie và Chính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.