Паралельний алгоритм знаходження максимуму часу за допомогою процесорів


11

На уроці нам було представлено алгоритм пошуку максимуму в масиві паралельно у часовій складності з ЕОМ.n 2O(1)n2

Алгоритм:

Дано масив довжиною n:

  1. Складіть масив прапора B довжиною n та ініціалізуйте його з нулями з комп'ютерів.n
  2. Порівняйте кожні 2 елементи і запишіть 1 в B з індексом мінімуму з комп’ютерів.n2
  3. знайдіть індекс з 0 в A з комп'ютерами.n

Лектор дражнив нас, що це можна зробити з комп'ютерами та з часовою складністю. lognnlognlogn

Після багато роздумів я не міг зрозуміти, як це зробити. Будь-яка ідея?

Відповіді:


9

Розділіть свій початковий масив на блоків довжиною . Покладіть кожен процесор, який відповідає за кожен блок, і знайдіть максимум, використовуючи звичайний алгоритм в часі . Тепер нам потрібно обчислити максимум масиву довжини . З’єднайте елементи та обчисліть максимуми попарно, щоб зменшити розмір масиву вдвічі. Повторіть це разів, щоб знайти максимум всього масиву.log n log n n / log n log nn/lognlognlognn/lognlogn

Ця ж ідея також показує, що ви можете обчислити максимум паралельно за постійний час, використовуючи комп'ютери для кожного . (Вправа.) ϵ > 0n1+ϵϵ>0


Метою було знайти максимум в час, а неO ( журнал n )O(1)O(logn)
NightRa

Візьміть на себе, щоб довести нижню межу для кількості комп’ютерів, помножених на часову складність. Ω(n)
Yuval Filmus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.