Mengapa ada kondisi keteraturan dalam teorema master?

15

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

f(n)=Ω(nlogba+ε)

untuk beberapa konstanta ε>0 dan jika

af(n/b)cf(n)      [ini adalah kondisi keteraturan]

untuk beberapa konstanta dan untuk semua cukup besar , maka ..c<1n

Dapatkah seseorang memberi tahu saya mengapa kondisi keteraturan diperlukan? Bagaimana teorema gagal jika kondisinya tidak terpenuhi?

Raphael
sumber
dapatkah Anda menulis apa masalahnya dan bagaimana kondisi peraturannya?
3
Saya tidak memiliki jawaban yang pasti untuk Anda, tetapi sepertinya jika kondisi keteraturan tidak berlaku, maka subproblem membutuhkan waktu lebih banyak dan lebih lama semakin kecil, sehingga Anda mendapatkan kompleksitas yang tak terbatas.
Saya tidak yakin bahwa kondisi keteraturan diperlukan untuk kesimpulan teorema untuk dipegang, tetapi saya pikir itu perlu untuk bukti yang digunakan. Dengan kondisi keteraturan Anda memiliki bukti yang cukup mudah, tanpa, setidaknya akan berbulu.

Jawaban:

10

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

.af(n/b)cf(n)

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)an/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

Kucing Unfun
sumber
3
Saya menggunakan format yang lebih bagus untuk teks matematika Anda. Anda dapat mengklik tautan "diedit" dan melihat apa yang saya lakukan.
Juho
7

a=1b=2

T(2n)=k=0nf(2k).
f(n)=Ω(nϵ)ϵ>0f(n/2)(1δ)f(n)δ>0). Anda mendapatkan kondisi keteraturan dari bukti, yaitu konsep yang dihasilkan dari bukti. Meskipun kondisi keteraturan tidak diperlukan (perhatikan contoh yang diberikan di Wikipedia,f(n)=n(2-cosn)), Anda tidak dapat menjatuhkannya sepenuhnya, seperti ditunjukkan contoh berikut. Mempertimbangkan
f(2n)=22catatan2n>22catatan2n-1=2n/2.
Membiarkan n=2m+1-1. Then
T(2n)=k=0mt=2k2k+1122k=k=0m22k+k=Θ(22m+m),f(2n)=22m.
So it's not true that T(2n)=Θ(f(2n)).

There is a more general theorem, Akra-Bazzi, in which the regularity condition is replaced by an explicit quantity that comes into the result.

Yuval Filmus
sumber
Sorry for resuming this old answer. Could you clarify why your function f violates the regularity condition?
Maiaux
Sometimes f(n/2)=f(n).
Yuval Filmus