“Conocimiento software>Copia de seguridad de datos

¿Cuál es la complejidad del tiempo del algoritmo de retroceso?

2011/12/28
La complejidad del tiempo de un algoritmo de retroceso es generalmente Exponencial , aunque puede variar según el problema y sus limitaciones. No hay una sola complejidad de tiempo "para" para retroceder porque depende en gran medida de:

* 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 d ).

* 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 n ), donde 'n' es el número de elementos en el conjunto, ya que puede necesitar considerar todos los subconjuntos posibles.

* 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 d ) o o (2 n ) o o (n!)) En el peor de los casos. La complejidad del tiempo real está fuertemente influenciada por la estructura del problema, la eficiencia de cualquier estrategia de poda utilizada y el tamaño de la entrada. Es importante diseñar algoritmos de retroceso con poda efectiva para evitar explorar caminos innecesarios. En algunos casos, la poda puede ser tan efectiva que hace que el algoritmo sea mucho más rápido en la práctica de lo que sugeriría su peor complejidad exponencial. Sin embargo, para muchos problemas, incluso con la poda, el retroceso permanece inherentemente ineficiente para grandes tamaños de entrada.

Copia de seguridad de datos
¿En qué situación tendrían que hacer una recuperación de datos duros?
Cómo hacer copia de seguridad Exec 12.5 Usando incrementales Procedimientos Restaurar
System Restore Vs . Copia de Seguridad
La mejor manera de crear copia de seguridad y restauración de discos raíz
¿La capa de enlace de datos finaliza y enmarca un paquete?
Cómo hacer copia de seguridad y restauración de IE7 Historial Archivos
¿Por qué es importante el respaldo?
¿Qué tan útiles son las herramientas de recuperación de datos?
Conocimiento de la computadora © http://www.ordenador.online