Сначала выглядит, что бинарный поиск совершенно не параллелен.Но обратите внимание, что возможны только три результата:
- Вы попали в элемент
- Элемент, который искали, находится перед элементом, в который вы попали
- Элемент после
Итак, мы запускаем три параллельных процесса:
- Нажмите элемент
- Предположим, что элемент раньше, ищите здесь
- Предположим, элементпосле, ищите там
Как только мы узнаем результат первого из них, мы можем убить тот, который не найдет элемент.Но в то же время процесс, который искал в нужном месте, удвоил скорость поиска, то есть текущее ускорение составляет 2 из возможных 3.
Естественно, этот подход можно обобщить, если у вас есть большечем 3 ядра в вашем распоряжении.Важно отметить, что этот способ мышления - это то, что делается внутри аппаратного обеспечения.Посмотрите сумматоры для переноски, например.