Respuesta a Gangadhar (lo siento, no hay suficiente espacio en el cuadro de comentarios):
me gusta su respuesta acerca de divide y vencerás, pero tengo una advertencia para agregar. Mapreduce no maneja muy bien el aspecto recursivo de los algoritmos de división y conquista porque la combinación de subproblemas para ciertos algoritmos de d/c depende eventualmente de la reducción a una clave. Tome el merge sort algorithm por ejemplo (ignorando por el momento que la ordenación es trivial en Hadoop debido a las propiedades clave de ordenamiento de su implementación de Mapreduce): usaría su asignador para dividir sus datos en dos partes, usando una identificación arbitraria para una clave. su fase de reducción fusionaría las listas de valores para sus respectivas claves juntas.
7 3 2 4 1 5 8 9 would map to
1->[[7],[3]] 2->[[2],[4]] 3->[[1],[5]] 4->[[8],[9]] would reduce to
3,7 2,4 1,5 8,9 would map to
1->[[3,7],[2,4]] 2->[[1,5],[8,9]]
etc.
se ve que el número de teclas se reduce en dos (o lo que sea factor de fragmentación que utiliza para su algoritmo de d/c) y, finalmente, debe bajar a una de las claves para una lista ordenada. Esto es malo para el paralelismo.
Por lo tanto, el aspecto dividido de dividir y conquistar es claramente necesario para mapreduce, pero también necesitamos paralelismo de datos en nuestra fase de conquista de modo que el resultado sea una colección de elementos paralelos de datos. FFT es un buen ejemplo de un algoritmo de división y conquista que funciona bien con mapreduce.