Combinatoria: ¿Cómo se puede encontrar toda la representación del coeficiente combinatorio de un número dado [matemática] n [/ matemática], es decir, todos los pares de números naturales [matemática] (a, b) [/ matemática] tal que [matemática] \ binom { a} {b} = n [/ matemáticas]?

La idea principal es: uno de by (ab) es pequeño. Si ambos son grandes, digamos> = 50, n sería muy grande. Por lo tanto, variaríamos sobre b digamos de 1 a 50 y luego sobre algunos valores de a y veremos si nos dan la respuesta deseada de n o no.

A continuación, no queremos movernos sobre muchos valores de a. Si corrijo que b sea 2, ¿qué tan grande podría ser? Alrededor de O (sqrt n). Si b era 3, a podría estar al máximo alrededor de O (raíz de cubo n) y así sucesivamente. Entonces, para b = 2, varíe hasta sqrt (n,) para b = 3, hasta cuberoot (n) y así sucesivamente.

En la práctica, lo que haría es variar a de 1 a sqrt (2 * n), b de 1 a 10. Y también b de 11 a 50 y a de 1 a 8 raíz de N (o un número fijo suficientemente grande) ) y verifique si algún par da la respuesta correcta o no. Este es el algoritmo O (sqrt N).

De hecho, se puede hacer mucho más rápido en realidad: para b fijo, no es necesario que varíe en un rango, solo los más relevantes. por ejemplo, para b = 2, puede moverse entre sqrt (n) – 20 a sqrt (n) + 20 y así sucesivamente.