algorithm - computing - parallel programming book
Encuentra una mediana en paralelo (1)
Si tiene una gran cantidad de números y cien computadoras, ¿cómo encontraría la mediana de los números?
Usa el algoritmo de selección.
- Divida la matriz de número en 100 particiones.
- Cada procesador debe usar el pivote general para dividir la matriz en dos grupos (izquierda / derecha)
- entonces cada procesador debe enviar el tamaño de esos 2 grupos al líder
- el líder debe calcular qué grupo es más pequeño y transmitir un mensaje para deshacerse de uno de esos grupos.
- vuelve al paso 2 hasta que encuentres la mediana
esta solución tiene un tiempo de ejecución promedio de O (n) para hacer un tiempo de ejecución asintótico de O (n), cada procesador debe dividir los números en grupos de 5 elementos, encontrar la mediana de cada grupo (usar ordenación de inserción) y enviar esas medianas De regreso al líder, el líder elegirá la mediana de esas medianas (usando el mismo algoritmo) y ese será el pivote
lea el artículo de la wiki - http://en.wikipedia.org/wiki/Selection_algorithm