Minha recorrência favorita aparece em algoritmos sensíveis à saída para calcular cascos convexos, primeiro por Kirkpatrick e Seidel , mas depois repetidos por outros. Seja o tempo para calcular o casco convexo de pontos no plano, quando o casco convexo tiver vértices. (O valor de não é conhecido antecipadamente, além do limite trivial .) O algoritmo de Kirkpatrick e Seidel produz a recorrência
que e en h h h ≤ n T ( n , h ) = { O ( n ) se n ≤ 3 ou h ≤ 3 T ( n 1 , h 1 ) + T ( n 2 , h 2 ) + O ( n ) caso contrário n 1 , n 2T(n,h)nhhh≤n
T(n,h)={O(n)T(n1,h1)+T(n2,h2)+O(n)if n≤3 or h≤3otherwise
n 1 + n 2 = n h 1 + h 2 = hn1,n2≤3n/4n1+n2=nh1+h2=h .
A solução é . Isso é um pouco surpreendente, pois não é o parâmetro que está sendo dividido igualmente. Mas, de fato, o pior caso de recorrência ocorre quando e são aproximadamente ; se de alguma forma magicamente for sempre constante, a solução seria .h h 1 h 2 h / 2 h 1 T ( n , h ) = O ( n )T(n,h)=O(nlogh)hh1h2h/2h1T(n,h)=O(n)
Eu usei uma variante dessa recorrência em um dos meus primeiros trabalhos de topologia computacional :
onde e . Novamente, a solução é , e o pior caso ocorre quando e são sempre divididos igualmente.
T(n,g)={O(n)T(n1,g1)+T(n2,g2)+O(min{n1,n2})if n≤3 or g=0otherwise
n1+n2=ng1+g2=gO(nlogg)ng