Уменьшение сложности с параллелизмом

10

Возможно ли (вы можете дать пример косую черту) уменьшить вычислительную сложность задачи, используя параллельный алгоритм, который не требует количества процессоров относительно размера ввода?

Ник Ларсен
источник
Не могли бы вы немного прояснить свой вопрос? Тривиально постоянное количество процессоров -> в лучшем случае вы можете улучшить время работы на постоянный коэффициент. Я думаю, это не то, что вы имеете в виду?
Юкка Суомела
Msgstr "Не относительно размера ввода". Что именно вы подразумеваете под этим? O (1)?
Арьябхата
Я имею в виду O (1) процессоров. @Jukka: это то, что я имею в виду, можно ли уменьшить вычислительную сложность, только добавив количество процессоров относительно размера ввода?
Ник Ларсен

Ответы:

12

Если вы имеете в виду O (1) процессоров, то нет, сложность вычислений не может быть уменьшена.

Просто выровняйте работу, проделанную каждым процессором, и сделайте это на одном. Если вы беспокоитесь о синхронизации, то один процессор может легко эмулировать это.

Арьябхата
источник
Спасибо за быстрый ответ. Не создавая другой вопрос для чего-то, что так тесно связано, возможно ли уменьшить вычислительную сложность, используя количество процессоров относительно чего-то другого, кроме размера ввода?
Ник Ларсен
2
@Nick: Что-то кроме размера ввода - O (1) :-)
Aryabhata
Спасибо, мне было трудно думать о чем-то еще, но я хотел быть уверен.
Ник Ларсен
Несмотря на то, что вы можете добиться ускорения с числом процессоров, которое растет с некоторым количеством, отличным от размера ввода, я не уверен, что ответ «нет». Существуют проблемы, сложность которых возрастает с некоторым параметром, который отличается (хотя, очевидно, не зависит от) размера ввода. Что если для какой-то проблемы с графом я разрешу вам, например, несколько процессоров, связанных с шириной дерева графа?
Аарон Рот
@ Аарон: Если количество разрешенных процессоров как-то связано со входом, то да, мы не можем точно сказать «нет». Конечно, если мы не конкретны, это бессмысленный вопрос.
Арьябхата
6

Появляется область грубых параллельных алгоритмов, где время работы (и другое потребление вычислительных ресурсов) рассматривается как функция независимых параметров n (входной размер) и p (количество процессоров), часто при естественном предположении n >> стр .

Хорошей отправной точкой является Google для "синхронного параллелизма".

Александр Тискин
источник
Может ли класс сложности измениться, если вы позволите оборудованию масштабироваться с входными данными? У меня возникли проблемы с Google , что как мирянин: /
Gerenuk
3

Вас может заинтересовать эта статья:

Сверхлинейная производительность в параллельных вычислениях в реальном времени Селим Акл.

Он приводит примеры вычислительных задач, в которых «последовательное решение более чем в раз медленнее, чем параллельное решение с n- процессором»; это делается путем творческого толкования концепции «вычислительной проблемы».nn

Михаил Глушенков
источник
1

pp

О(е(N)/п)О((1/п)е(N))О(се(N))О(е(N))сзнак равно1/п

TT/п+SомеMореTяме

Но сложности НЕ меняются.

Пратик Деогхаре
источник
1

«Вы не можете вычислить это с 1 процессором, но можете вычислить с 2».

Это невозможно, если предположить, что оба процессора являются ТМ или менее мощной моделью. Из википедии, для многоканальных машин:

Эта модель интуитивно кажется гораздо более мощной, чем модель с одной лентой, но любой многоленточный станок, независимо от размера k, может быть смоделирован на одной ленточной машине, используя только в четыре раза больше времени вычислений (Papadimitriou 1994, Thrm 2.1)

Также для многоголовочных станков, из «Моделирование линейного времени многоголовочных машин Тьюринга с прыжками с головы до головы» Уолтера Дж. Савича и Пола М.Б. Витани:

Основной результат этой статьи показывает, что, учитывая машину Тьюринга с несколькими головками чтения-записи на ленту и имеющую дополнительную операцию сдвига на один ход «сдвигать заданную головку в положение другой заданной головки», можно эффективно построить многоканальная машина Тьюринга с одной головкой чтения-записи на ленту, которая имитирует ее за линейное время; т.е. если исходная машина работает за время T (n), то имитирующая машина будет работать за время cT (n) для некоторой постоянной c.

chazisop
источник
Здесь у нас есть отличный пример стоимости абстракции. Реальные компьютеры (как реализации RM) могут быть распараллелены лучше, чем TM.
Рафаэль
Что означает РМ? Если это было неправильно, и вы имеете в виду ТМ, я не согласен. Многопользовательские / многоголовочные ТМ не должны беспокоиться о связи процессора и законах Амдала. Кроме того, я не вижу, как компьютер может работать лучше, чем TM с произвольным доступом, и наоборот, т.е. я считаю, что они эквивалентны.
Chazisop
0

Возможно, "параллельный или" (учитывая, что две функции возвращают логическое значение, скажите, возвращает ли одна из них значение true, учитывая, что любая из них, но не обе, может не завершиться), может быть то, о чем вы говорите: вы не можете вычислить это с 1 процессором, но может вычислить с 2.

Однако это во многом зависит от того, какую вычислительную модель вы будете использовать, независимо от того, заданы ли вам процессы как черные ящики или как их описание, которое вы можете интерпретировать самостоятельно и т. Д.

jkff
источник
2
Это кажется ложным, если вы не работаете в какой-то строго ограниченной модели. Один процессор может просто чередовать инструкции, которые в противном случае выполнялись бы на 2, вызывая самое большее 2x + O (1) замедление. Я думаю, под "черным ящиком" вы имеете в виду, что чередование невозможно? Даже тогда, если вы можете прервать вычисления черного ящика, которые занимают слишком много времени, вы все равно можете смоделировать два процессора, многократно угадывая и удваивая необходимую длину вычислений для каждого процесса.
Аарон Рот
Но это, в свою очередь, требует от нас возможности прекратить вычисления. Я имею в виду, что вы не можете выполнять параллельный или один процессор в модели, где единственное, что вы можете сделать, это запустить вычисление до его завершения.
jkff
Теперь я понимаю, что вы имели в виду, но я считаю, что это не завершено. Вы не можете вычислить это с 2 ни один. Если одна машина продолжает работать, а другая отвечает ДА, ответ ДА. Но что если он вернет НЕТ? Вы не можете ответить детерминированным способом, потому что вы не знаете, работает ли машина, которая все еще работает, или она застряла (то есть проблема HALTING).
Chazisop