Учитывая достаточно большой ввод, оно стоит .Всегда.
Пример. Наивный алгоритм поиска наибольшего числа в неупорядоченном «Списке» просто пересекает список.Чтобы найти запись, потребуется время O(n)
.
Это нормально, если у вас 100 или 1000 записей.
Что если у вас миллиард записей?Вы разделяете список на несколько процессоров, каждый находит максимум, и у вас появляется новый меньший список для работы.Вы можете разделить это снова => Параллельно, и быстрее.Я полагаю, что O(log(n))
, если вы эффективно разделите и уменьшите, и имеют n процессоров .
Дело в том, что если ваш ввод достаточно большой, O(n)
недостаточно хорошВ зависимости от того, что нужно сделать, O (n) может вырасти до слишком большого количества секунд, минут, часов по сравнению с тем, что вы хотели бы.
Примечание: Когда я говорю O(n)
или O(log(n))
выше, яссылаясь на время, необходимое для завершения поиска.то есть не 'общая работа', выполняемая всеми процессорами.Обычно распараллеливание алгоритма несколько увеличивает общую работу, выполняемую процессорами.