Estrategia de dividir y conquistar para el diseño y análisis de algoritmos
Donde gobernar a la multitud es como gobernar a la viuda, también lo es la puntuación. ------"El arte de la guerra"
Idea básica de la estrategia de divide y vencerás
Divida un gran problema que sea difícil de resolver directamente en algunos problemas más pequeños, iguales , para que puedan ser derrotados, divididos y conquistados.
Patrón de diseño de algoritmo de la estrategia de divide y vencerás
Divide_and_Conquer(P){
if (|P|<=n0 ) return adhoc(P);
divide P into smaller substances P1,P2,…,Pk;
for (i=1; i<=k; k++)
yi=Divide_and_Conquer(Pi) //递归解决Pi
Return merge(y1,y2,…,yk) //合并子问题
}
Características de los problemas que se pueden resolver mediante estrategias de divide y vencerás
- El tamaño del problema se puede resolver fácilmente reduciéndolo hasta cierto punto.
- El problema se puede descomponer en varios problemas idénticos más pequeños.
- Las soluciones de los subproblemas descompuestos por el problema se pueden combinar en la solución del problema.
- Los sub-problemas descompuestos por el problema son independientes de uno al otro
Recomendado por otros artículos de este blog
Diseño de algoritmos y análisis de ejercicios de algoritmos recursivos (abajo)
Diseño de algoritmos y análisis de ejercicios de algoritmos recursivos (encendido)
Problema del triángulo digital en el diseño y análisis de algoritmos
Diseño y análisis de algoritmos de ZOJ2104- Let the Balloon Rise
Diseño y análisis de algoritmos de cola de prioridad y solución ZOJ1167