Mi recurrencia favorita aparece en algoritmos sensibles a la salida para calcular cascos convexos, primero por Kirkpatrick y Seidel , pero luego por otros. Deje denotar el tiempo para calcular el casco convexo de n puntos en el plano, cuando el casco convexo tiene h vértices. (El valor de h no se conoce de antemano, aparte del límite trivial h ≤ n .) El algoritmo de Kirkpatrick y Seidel produce la recurrencia
T ( n , h ) = n ≤ 3 o h ≤T(n,h)nhhh ≤ n
donden1,n2≤3n/4yn1+n2=nyh1
T( n , h ) = { O ( n )T( n1, h1) + T( n2, h2) + O ( n )si n ≤ 3 o h ≤ 3de otra manera
norte1, n2≤ 3 n / 4norte1+ n2= n .
h1+ h2= h
La solución es . Esto es un poco sorprendente, ya que h no es el parámetro que se divide de manera uniforme. Pero, de hecho, el peor caso de la recurrencia ocurre cuando h 1 y h 2 son ambos acerca de h / 2 ; si de alguna manera mágicamente h 1 es siempre constante, la solución sería T ( n , h ) = O ( n ) .T( n , h ) = O ( n logh )hh1h2h / 2h1T( n , h ) = O ( n )
Utilicé una variante de esta recurrencia en uno de mis primeros trabajos de topología computacional :
donde n 1 + n
T( n , g) = { O ( n )T( n1, g1) + T( n2, g2)+O(min{n1,n2})if n≤3 or g=0otherwise
y
g 1 + g 2 = g . Nuevamente, la solución es
O ( n log g ) , y el
peor de loscasos ocurre cuando ambos
nn1+n2=nsol1+ g2= gO ( n logsol)norte como
se dividen siempre de manera uniforme.
sol