Giải bằng định lý chính


8

Giới thiệu về Thuật toán , phiên bản thứ 3 (tr.95) có một ví dụ về cách giải quyết sự tái diễn

T(n)=3T(n4)+nlog(n)

bằng cách áp dụng Định lý tổng thể.

Tôi rất bối rối bởi cách nó được thực hiện. Vì vậy, Bước đầu tiên là so sánh với .a=3,b=4,f(n)=nlog(n)
nlogba=nlog43=O(n0.793)f(n)

Tôi không có manh mối về cách họ so sánh điều này. Cuốn sách giải thích:

f(n)=Ω(nlog43+ϵ) , trong đó , trường hợp 3 áp dụng nếu chúng ta có thể chỉ ra rằng điều kiện đều đặn giữ cho f (n).ϵ0.2f(n).

Theo dõi bởi:

Đối với n đủ lớn, chúng ta có: af(nb)=3(n4)log(n5)(34)nlogn=cf(n) for c=34.

Trường hợp 3(n4) đến từ đâu?

Câu trả lời:


11

Nếu sự lặp lại của chúng ta có dạng , thì để sử dụng "trường hợp thứ ba" của phương thức Master, chúng ta phải có lệnh giữ sau:T(n)=aT(n/b)+f(n)

f(n)=Ω(nlogba+ϵ) cho một số và nếu cho một số hằng số và tất cả đủ lớn , sau đóϵ>0af(n/b)cf(n)c<1nT(n)=Θ(f(n))

Sự tái phát của chúng tôi được định nghĩa là

T(n)=3T(n/4)+nlogn.

Theo định nghĩa, chúng ta có, .a=3,b=4,f(n)=nlogn

Bây giờ chúng ta cần chỉ ra rằng lớn hơn đa thức . Đó là phần " " ở trên. Xác định đạt được điều này. Lý do là và .f(n)nlogbaf(n)=Ω(nlogba+ϵ)ϵ0.2log430.793f(n)=Ω(n0.793+ϵ)

Chúng tôi còn lại để chỉ ra rằng thỏa mãn điều kiện đều đặn. Đó là phần " cho một số hằng số và tất cả phần đủ lớn ".f(n)af(n/b)cf(n)c<1n

Chúng ta chỉ cần cắm các giá trị của để nhận:Tất cả những gì chúng tôi đã làm là lấy " " trong và cắm " ".a,b

af(n/b)=3(n/4)log(n/4).
nf(n)n/4

Để làm cho điều này dễ nhìn hơn, hãy để và quan sát rằng . Hoán đổi với ta có trong đó .k=n/4af(k)=aklogkkn/4

3(n/4)log(n/4)(3/4)nlogn=cf(n)
c=3/4

Điều này kết thúc các yêu cầu cần thiết của chúng tôi và chúng tôi có .T(n)=Θ(nlogn)


1
Cảm ơn bạn đã phản hồi chi tiết. Vậy, là đa thức hơn ? Có lẽ tôi đã hiểu nhầm ý nghĩa của "đa thức"n0.793n1logn
in

1
Đa thức trong trường hợp này là . n10.793=n0.217
JeffE

@newprint Lớn hơn chỉ có nghĩa là sự khác biệt giữa hai ít nhất là một sức mạnh (có thể là phân số) của , không phải là một số chức năng nhỏ hơn, chẳng hạn như . Cụ thể, đó chính xác là điều kiện cho "trường hợp thứ ba", rằng . Đó là yếu tố thêm làm cho nó lớn hơn về mặt đa thức . Và như JeffE đã chỉ ra, trong trường hợp này, . n(logn)f(n)=Ω(nlogbnnϵ)nϵϵ=.217
Joe

Chúng ta có thể chọn không? Theo như tôi hiểu thì đã là vậy tại sao chúng ta cần thêm ? ϵ=0.00000001f(n)Ω(n0.793)0.2
Yos

Không phải Omega lớn bị ràng buộc thấp hơn về thời gian chạy nên có thể nói là "không có triệu chứng bằng hoặc lớn hơn" thay vì "lớn hơn đa thức so với .."?
mLstudent33
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.