Чи можливо (слэш можна навести приклад), щоб зменшити обчислювальну складність проблеми, використовуючи паралельний алгоритм, який не потребує кількості процесорів відносно вхідного розміру?
Чи можливо (слэш можна навести приклад), щоб зменшити обчислювальну складність проблеми, використовуючи паралельний алгоритм, який не потребує кількості процесорів відносно вхідного розміру?
Відповіді:
Якщо ви маєте на увазі процесори O (1), то ні, складність обчислень не може бути зменшена.
Просто розшикуйте роботу кожного процесора та виконайте його на одному. Якщо ви турбуєтеся про синхронізацію, то один процесор може легко імітувати це.
Існує поле з грубозернистими паралельними алгоритмами, де час роботи (та інші витрати обчислювальних ресурсів) розглядають як функцію незалежних параметрів n (розмір вводу) та p (кількість процесорів), часто під природним припущенням n >> стор .
Хороший вихідний пункт - це google для "об'ємно-синхронного паралелізму".
Вас може зацікавити цей документ:
Суперлінійна продуктивність у паралельних обчисленнях у режимі реального часу Селімом Акл.
Він наводить приклади обчислювальних задач, у яких "послідовне рішення більш ніж у разів повільніше, ніж n -процесорне паралельне рішення"; це робиться шляхом творчої інтерпретації поняття "обчислювальна проблема".
Але НЕ змінюється складність.
"ви не можете обчислити його з 1 процесором, але ви можете обчислити з 2."
Це неможливо, якщо припустити, що обидва процесори є ТМ або менш потужною моделлю. З Вікіпедії, для мульти-стрічкових машин:
Ця модель інтуїтивно здається набагато потужнішою, ніж односмугова модель, але будь-яка багатосмугова машина, незалежно від того, наскільки величина k, може бути змодельована односмуговою машиною, використовуючи лише квадратично більший час обчислення (Papadimitriou 1994, Thrm 2.1)
Також для багатоголових машин, від "Лінійного моделювання часу багатошарових машин для тюрінга з стрибками в голову" Вальтера Дж. Савича та Пола М.Б. Вітані:
Основний результат цієї роботи показує, що, враховуючи машину Тюрінга з декількома головами для читання-запису на стрічку і яка має додаткову операцію з переміщенням в русі "переміщення даної голови в положення якоїсь іншої заданої головки", можна ефективно сконструювати a багатотапна машина Тьюрінга з однією головою для читання і запису на стрічку, яка імітує її в лінійний час; тобто, якщо оригінальна машина працює в часі T (n), то імітувальна машина буде працювати в часі cT (n), для деякої постійної c.
Можливо, "паралельний або" (з урахуванням двох функцій, що повертають булевий, скажіть, чи повертається одна з них істинна, враховуючи, що будь-яка з них, але не обидві, може не вдатися до завершення) може бути те, про що ви говорите: ви не можете обчислити це з 1 процесором, але може обчислити з 2.
Однак, це багато що залежить від того, яку обчислювальну модель ви будете використовувати, чи ви отримуєте процеси як чорні скриньки або як їх опис, який ви можете інтерпретувати самостійно тощо.