Perulangan favorit saya muncul dalam algoritma output-sensitif untuk komputasi lambung cembung, pertama oleh Kirkpatrick dan Seidel , tetapi kemudian diulang oleh yang lain. Misalkan menunjukkan waktu untuk menghitung lambung cembung dari n poin dalam pesawat, ketika lambung cembung memiliki h simpul. (Nilai h tidak diketahui sebelumnya, selain dari batasan sepele h ≤ n .) Algoritma Kirkpatrick dan Seidel menghasilkan rekurensi
T ( n , h ) = { O ( n ) jika T(n,h)nhhh≤n
jikan1,n2≤3n/4dann1+n2=ndanh1+h2=h.
T(n,h)={O(n)T(n1,h1)+T(n2,h2)+O(n)if n≤3 or h≤3otherwise
n1,n2≤3n/4n1+n2=nh1+h2=h
Solusinya adalah . Ini sedikit mengejutkan, karena h bukan parameter yang dibagi secara merata. Tapi pada kenyataannya, terburuk kasus kekambuhan terjadi ketika h 1 dan h 2 keduanya sekitar jam / 2 ; jika entah bagaimana secara ajaib h 1 selalu konstan, solusinya adalah T ( n , h ) = O ( n ) .T(n,h)=O(nlogh)hh1h2h / 2h1T( n , h ) = O ( n )
Saya menggunakan varian pengulangan ini di salah satu makalah topologi komputasi pertama saya :
mana
T( n , g) = { O ( n )T( n1, g1) + T( n2, g2) + O ( min { n1, n2} )jika n ≤ 3 atau g= 0jika tidak
dan
g 1 + g 2 = g . Sekali lagi, solusinya adalah
O ( n log g ) , dankasus
terburukterjadi ketika
n dan
g selalu dibagi secara merata.
n1+ n2= ng1+ g2= gO ( n logg)ng