Divida e conquiste estratégia para design e análise de algoritmos
Onde governar a multidão é como governar a viúva, o placar também é. ------"A arte da guerra"
Ideia básica da estratégia de dividir para conquistar
Divida um grande problema que é difícil de resolver diretamente em alguns problemas menores e iguais , para que eles possam ser derrotados e divididos e conquistados.
Padrão de projeto de algoritmo de estratégia de dividir e conquistar
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 dos problemas que podem ser resolvidos por estratégias de dividir para conquistar
- O tamanho do problema pode ser facilmente resolvido, reduzindo-o até certo ponto
- O problema pode ser decomposto em vários problemas menores e idênticos
- As soluções dos subproblemas decompostos pelo problema podem ser combinadas na solução do problema
- Os sub-problemas decompostos pelo problema são independentes de cada outra
Recomendado por outros artigos neste blog
Projeto de algoritmo e análise de exercícios de algoritmo recursivo (parte 2)
Projeto de algoritmo e análise de exercícios de algoritmo recursivo (on)
Problema de triângulo digital no projeto e análise de algoritmos
Projeto de algoritmo e análise de ZOJ2104- Let the Balloon Rise
Projeto de algoritmo e análise de fila de prioridade e solução ZOJ1167