Memecahkan relasi yang berulang

8

Saya ingin membuktikan bahwa kompleksitas waktu dari suatu algoritma adalah polylogarithmic dalam skala input.

Relasi pengulangan dari algoritma ini adalah , di mana .T(2n)T(n)+T(na)a(0,1)

Tampaknya untuk beberapa tergantung pada . Tapi saya tidak bisa membuktikan ketidaksetaraan ini. Bagaimana mengatasi hubungan pengulangan ini?T(n)logβnβa

Saya hanya ingin mendapatkan polylogarithmic batas atas di n.

Qiang Li
sumber
1
a<1, Saya berasumsi? Juga, apakah Anda memeriksa pertanyaan referensi kami ? Saya tidak berpikir kasus spesifik yang Anda tanyakan secara eksplisit dibahas di sana tetapi ada banyak teknik yang dijelaskan.
David Richerby
1
Tidak ada teorema "master" untuk tipe ini yang saya sadari; lih pertanyaan saya ini dan ini . (cc @DavidRicherby)
Raphael

Jawaban:

4

Dugaan Anda salah. Bahkan, tidak sulit untuk menunjukkan asumsi ituT(n)>0 untuk semua n>0, kemudian T(n)=Ω(logkn)untuk semua k. Memang, untuk menahan ini kita perlu itu cukup besarn kami akan memiliki

(1+ak)logkn=logkn+logknalogk(2n),
atau 1+akklognlogn+log2, yang berlaku selama [1+akk1]lognlog2, dan khususnya untuk yang cukup besar n.

Apa urutan pertumbuhan yang benar T(n)? Untuk mencoba dan mencari tahu, tulisS(n)=T(2n). Perulangan sekarang menjadi

S(n+1)=S(n)+S(an).
Untuk yang besar n, kami harapkan S(n+1)S(n) menjadi sangat dekat S(n), dan secara heuristik kita harapkan itu S memuaskan S(n)=S(an). Persamaan ini tampaknya agak sulit untuk dipecahkan, tetapi solusi perkiraannya adalahS(n)=nΘ(logn). Mengganti kembali, kami menyimpulkan bahwa urutan pertumbuhanT(n) harus seperti (logn)Θ(loglogn).
Yuval Filmus
sumber
Tampaknya logk(2n)=(log2+logn)k. Batas bawah tidak berlaku.
Qiang Li
@QiangLi Terima kasih telah menemukan kesalahan. Namun batas bawah memang berlaku, begitu argumen diubah.
Yuval Filmus