Saya telah membaca Pengantar Algoritma oleh Cormen et al. dan saya membaca pernyataan teorema Tuan mulai dari halaman 73 . Dalam kasus 3 ada juga kondisi keteraturan yang perlu dipenuhi untuk menggunakan teorema:
... 3. Jika
untuk beberapa konstanta dan jika
[ini adalah kondisi keteraturan]
untuk beberapa konstanta dan untuk semua cukup besar , maka ..
Dapatkah seseorang memberi tahu saya mengapa kondisi keteraturan diperlukan? Bagaimana teorema gagal jika kondisinya tidak terpenuhi?
Jawaban:
Bukan bukti kuat, tapi penjelasan "dari atas kepalaku".
Bayangkan kekambuhan sebagai pohon. Kasus ketiga mencakup skenario ketika simpul akar mendominasi waktu berjalan tanpa gejala, yaitu sebagian besar pekerjaan sedang dilakukan dalam simpul sangat di atas pohon perulangan. Maka waktu berjalan adalah Θ ( f ( n ) ) .aT(n/b)+f(n) Θ(f(n))
Untuk memastikan root benar - benar berfungsi lebih baik, Anda perlu
Ini mengatakan bahwa (jumlah pekerjaan yang dilakukan di root) harus setidaknya sebesar jumlah pekerjaan yang dilakukan di tingkat bawah. (Kekambuhan ini disebut sebuah kali pada n / b input.)f(n) a n/b
Misalnya untuk pengulangan pekerjaan pada level di bawah root adalah seperempat lebih besar dan hanya dilakukan dua kali ( n / 4 + n / 4 ) dibandingkan n sehingga root mendominasi .T(n)=2T(n/4)+n (n/4+n/4) n
Tetapi bagaimana jika fungsi tidak memenuhi kondisi keteraturan? Misalnya bukan n ? Maka pekerjaan yang dilakukan pada level yang lebih rendah mungkin lebih besar daripada pekerjaan yang dilakukan di root sehingga Anda tidak yakin bahwa root mendominasi.cos(n) n
sumber
There is a more general theorem, Akra-Bazzi, in which the regularity condition is replaced by an explicit quantity that comes into the result.
sumber