Si a alguien le importan los factores , con un análisis cuidadoso podemos probar que la complejidad temporal del algoritmo de Chao es .logO(nAlog(nA))
Prueba. En la capa uniforme del árbol de recursión, dividimos el conjunto en dos conjuntos de igual tamaño y , lo que da
y en la capa impar del árbol de recursión, dividimos el conjunto en dos conjuntos "igualmente sumados" y . Para ser precisos, podemos dividir un conjunto con la suma en dos conjuntos y con cada uno de ellos sumando , con como máximo un elemento restante. Podemos lidiar con ese elemento con programación dinámica trivial enSS1S2
Te(n,A)=To(n/2,A′)+To(n/2,A−A′)+O(nAlog(nA)),
SS1S2SAS1S2≤A/2O(A). Esto proporciona
donde. Por lo tanto, tenemos
donde , , y . Esto nos dará .
To(n,A)=Te(n1,A/2)+Te(n−n1,A/2)+O(nAlog(nA)),
n1=|S1|T(n,A)≤∑i=14T(ni,Ai)+O(nAlog(nA)),
∑4i=1ni≤n∑4i=1Ai≤A∀i, ni≤n/2, Ai≤A/2T(n,A)=O(nAlog(nA))