* El número de opciones en cada paso: Si tiene opciones *b *en cada paso, y la profundidad del árbol de búsqueda es *d *, entonces la complejidad puede ser o (b
* Las restricciones específicas y las técnicas de poda del problema: El retroceso a menudo implica la poda del espacio de búsqueda. Si puede podar ramas de manera efectiva que no conducirán a una solución, puede reducir significativamente el espacio de búsqueda y mejorar el rendimiento. La eficiencia de la estrategia de poda afecta en gran medida la complejidad del tiempo final.
* La naturaleza del problema: Algunos problemas son inherentemente más susceptibles de retroceso que otros.
Aquí hay un desglose de por qué es generalmente exponencial y algunos ejemplos:
* Naturaleza exponencial: El retroceso explora todas las combinaciones o permutaciones posibles hasta que se encuentre una solución. En el peor de los casos, podría tener que explorar una gran parte del espacio de búsqueda, lo que lleva a un crecimiento exponencial en el número de nodos visitados.
* Ejemplos y sus complejidades:
* n-ceaens Problema: Encontrar todas las posibles ubicaciones de N Queens en un tablero de ajedrez NXN de modo que no hay dos reinas amenazadas entre sí. La complejidad del tiempo es aproximadamente O (n!), En el peor de los casos. Las técnicas de poda pueden mejorar significativamente el rendimiento.
* Problema de vendedor ambulante (TSP): Encontrar la ruta más corta posible que visita cada ciudad exactamente una vez y regresa a la ciudad inicial. Un enfoque ingenuo de retroceso tendría una complejidad de tiempo de O (N!), Donde 'N' es el número de ciudades. Branch and Bound se usa como poda para una ejecución más rápida.
* Problema de suma de subconjunto: Determinar si existe un subconjunto de un conjunto dado de números cuya suma es igual a un valor objetivo. La complejidad del tiempo puede ser o (2
* Solver Sudoku: En el peor de los casos, un solucionador de Sudoku de retroceso podría probar una gran cantidad de posibilidades para cada celda vacía. Aunque teóricamente exponencial, las buenas heurísticas y las limitaciones hacen que Sudoku del mundo real se resuelva muy rápido.
* Coloración del gráfico: Asignando colores a los vértices de un gráfico de tal manera que no hay dos vértices adyacentes tienen el mismo color. El peor de los casos es exponencial, pero la eficiencia depende de cómo ordene los nodos.
* Factores que afectan la complejidad del tiempo:
* Profundidad de la recursión: Cuanto más profundo sea el árbol de búsqueda, más cálculos se requieren.
* Factor de ramificación: El número de opciones en cada nodo del árbol de búsqueda. Un factor de ramificación más grande conduce a un crecimiento exponencial más rápido.
* poda: La poda efectiva reduce el espacio de búsqueda, mejorando el rendimiento. La poda es el factor más importante a considerar.
En resumen:
Si bien es difícil dar una complejidad de tiempo precisa para retroceder en general, es seguro decir que generalmente es exponencial (o (b