Cuando intentamos construir un algoritmo para un nuevo problema, dividir y conquistar (usando la recursividad) es uno de los primeros enfoques que intentamos. Pero en algunos casos, este enfoque parece infructuoso ya que el problema se vuelve mucho más complicado a medida que crece su aporte.
Mi pregunta es: ¿hay problemas para los que podamos probar que un enfoque de divide y vencerás no puede ayudar a resolver? En las siguientes líneas trato de hacer esto más formal.
Supongamos que es un problema determinado cuya entrada tiene un tamaño (por ejemplo, un problema que acepta una entrada y una matriz de números). Supongamos que tenemos un algoritmo recursivo para resolver . El tiempo de ejecución recursivo de ese algoritmo se calcula suponiendo un oráculo que puede resolver por cada en tiempo constante. Por ejemplo:
- El tiempo de ejecución recursivo de la búsqueda binaria es , ya que solo utiliza una comparación y dos llamadas recursivas.
- El elemento máximo en una matriz se puede encontrar en el tiempo recursivo .
- El tiempo de ejecución recursivo de tipo de fusión es , debido al paso de fusión.
El tiempo recursivo suele ser menor que el tiempo de ejecución real, lo que refleja el hecho de que el algoritmo recursivo es más simple que una solución directa y no recursiva para el mismo problema.
Ahora mi pregunta es:
¿Hay algún problema que pueda resolverse en el tiempo , pero que probablemente no tenga un algoritmo recursivo con tiempo de ejecución recursivo asintóticamente menor que ?
Algunas variantes específicas de esta pregunta son:
- ¿Hay algún problema en que no tenga algoritmo con tiempo de ejecución recursivo ? (¿Tal vez clasificando?)
- ¿Hay algún problema con un algoritmo exponencial que no tiene un algoritmo con tiempo de ejecución recursivo polinómico?
EDITAR: al contrario de lo que supongo, la ordenación tiene un algoritmo con tiempo de ejecución recursivo P O ( 1 ) . Por lo tanto, todavía está abierto, si hay un problema en que no tiene algoritmo con tiempo de ejecución recursivo .