La mia ricorrenza preferita si presenta in algoritmi sensibili all'output per il calcolo degli scafi convessi, prima da Kirkpatrick e Seidel , ma in seguito ripetuti da altri. Sia il tempo di calcolare lo scafo convesso di n punti nel piano, quando lo scafo convesso ha h vertici. (Il valore di h non è noto in anticipo, a parte il limite banale h ≤ n .) L'algoritmo di Kirkpatrick e Seidel produce la ricorrenza
T ( n , h ) = ≤ 3 o h ≤ 3T(n,h)nhhh≤n.
doven1,n2≤3n/4en1+n2=neh1+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
La soluzione è . Questo è un po 'sorprendente, dal momento che h non è il parametro suddiviso uniformemente. Ma in realtà, il caso peggiore della ricorrenza si verifica quando h 1 e h 2 sono entrambi relativi a h / 2 ; se in qualche modo magicamente h 1 è sempre costante, la soluzione sarebbe T ( n , h ) = O ( n )T(n,h)=O(nlogh)hh1h2h / 2h1T( n , h ) = O ( n ) .
Ho usato una variante di questa ricorrenza in uno dei miei primi documenti di topologia computazionale :
dove
T( n , g) = { O ( n )T( n1, g1) + T( n2, g2) + O ( min { n1, n2} )se n ≤ 3 o g= 0altrimenti
e
g 1 + g 2 = g . Ancora una volta, la soluzione è
O ( n log g ) e ilcaso
peggiore siverifica quando entrambi
nn1+ n2= ng1+ g2= gO(nlogg)n che
sono sempre divise in modo uniforme.
g