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.


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).

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.