Любая полная проблема, вряд ли имеет эффективный параллельный алгоритм. Зачем ?P
Существование -полных проблем является наиболее важным признаком того, что . Тогда возникает вопрос: почему эта гипотеза актуальна для параллельных вычислений? Давайте начнем с ресурсов, используемых в вычислениях. Для последовательных вычислений: время и пространство; для параллельных вычислений: время и оборудование (количество процессоров). Есть ли связь? Да! Последовательное пространство ↔ параллельное время; Последовательное время, параллельное оборудование. Соответствие между последовательным пространством и параллельным временем, кажется, не зависит от принятой модели параллельных вычислений; это приводит к следующему, так называемому тезису о параллельных вычислениях, который не доказан.P(P∩POLYLOGSPACE)≠P
(Чандра и Стокмейер) Каждое вычисление ТМ с пространственной сложностью может быть смоделировано в модели параллельных вычислений за время и каждое вычисление модель параллельных вычислений с временной сложностью может моделироваться ТМ с пространственной сложностью .T ( n ) = O ( S ( n ) O ( 1 ) ) T ′ ( n ) S ′ ( n ) = O ( T ′ ( n ) O ( 1 ) )S(n)T(n)=O(S(n)O(1))T′(n)S′(n)=O(T′(n)O(1))
Класс задач, решаемых последовательно в полиномиальном пространстве, - это а набор задач, разрешимых в полиномиальном времени, - это Поскольку считается гораздо большим классом задач, чем , тезис количественно определяет эффективное улучшение, которое стало возможным благодаря параллелизму. Следствием этого тезиса является то, что PRAM может решать полные задачи за полиномиальное время ... К сожалению, нет! Тезис о параллельных вычислениях подразумевает, что мы действительно можем решать проблемы, относящиеся кP P S P A C E P N P P S P A C EPSPACEPPSPACEPNPPSPACE... но это требует экспоненциального числа процессоров! Работает компромисс между пространством и временем: экспоненциальное время в модели последовательных вычислений преобразуется в экспоненциальное число процессоров в модели параллельных вычислений, тогда как полиномиальное пространство в модели последовательных вычислений преобразуется в полиномиальное время в параллельной модели. вычислительная модель.
Этот компромисс будет легче понять , если мы пытаемся ограничить как параллельное время и параллельные аппаратным: если параллельная вычислительная модель имеет полиномиальное число процессоров, то класс задач , решаемый в параллельном полиномиальное время . Если мы ограничим число процессоров полиномом, мы сможем улучшить производительность последовательной машины, но не более, чем полиномиальный коэффициент. Таким образом, мы можем уменьшить степень полинома, представляющего сложность времени, но мы не можем использовать параллелизм для уменьшения экспоненциальных затрат до полиномиальных затрат.P
Задачи , решаемые параллельно с полиномиальной временной сложностью являются теми проблемами , относящихся к . Полиномиальное ограничение на число процессоров приводит к модели параллельных вычислений, эквивалентной TM. Есть два важных практических соображения: какое полиномиальное количество процессоров является приемлемым / доступным? На практике полиномиальное число процессоров должно быть линейным или близким. Какое субполиномиальное время достижимо? Оказалось, что почти во всех высокопараллельных выполнимых задачах можно достичь полилогарифмического параллельного времени. Параллельно сложность по времени, которая является логарифмической по длине ввода, представляет собой эффективное параллельное вычисление. Параллельный алгоритм считается эффективным, если при заданном полиномиальном числе процессоров его временная сложность является полилогарифмической.P
Учитывая проблему где и - константы, тезис о параллельных вычислениях подразумевает существование параллельного алгоритма для с временной сложностью где - константа. Сравнение между последовательным и параллельным временем позволяет классифицировать как проблему с высокой степенью параллелизации (с точки зрения времени).k h R O ( ( l o g n ) k ′ ) k ′ RR∈TIME_SPACETM(nk,(logn)h)khRO((logn)k′)k′R
Из тезиса о параллельных вычислениях следует, что - это класс задач, которые можно распараллелить. не содержит проблем, связанных с сокращением пространства журналов; это означает . Кажется, чтоP O L Y L O G S P A C E P O L Y L O G S P A C E ≠ PPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACE≠P
- POLYLOGSPACE⊄P
- P⊄POLYLOGSPACE
P P - ( P ∩ P O L Y L O G S P A C E )P∩POLYLOGSPACE содержит задачи, которые можно решить за полиномиальное время с помощью полилогарифмического пространства. полные проблемы, вероятно, принадлежат .PP−(P∩POLYLOGSPACE)
O ( ( l o g n ) k ) ) O ( f ( n ) ) f n N C ⊂ ( P ∩ P O L Y L O G S P A C E )NC (класс Ника - так называемый в честь Николаса Пиппенджера, который первым идентифицировал и охарактеризовал его в 1979 году) - это класс задач, которые могут быть решены за полилогарифмическое время (т. Е. Со сложностью времени с полиномиальным числом процессоров (т. е. ограниченным для некоторой полиномиальной функции где - размер задачи) Тезис параллельных вычислений подразумевает .O((logn)k))O(f(n))fnNC⊂(P∩POLYLOGSPACE)
Однако, к сожалению, по определению также включает в себя множество проблем, которые не могут быть эффективно распараллелены. Самый печально известный пример - параллельный бинарный поиск . Проблема состоит в том, что эта проблема имеет сложность полилогарифмического времени даже для = 1. Любой последовательный алгоритм, требующий самое большее логарифмическое время в худшем случае, находится в независимо от его параллельной выполнимости!p N CNCpNC
Теперь мы можем наконец объяснить, почему проблемы с завершением являются наиболее сложными из распараллеливаемых задач. Учитывая -полную задачу , весьма маловероятно существование эффективного параллельного алгоритма: если такой параллельный алгоритм будет существовать с временной сложностью , то тезис о параллельных вычислениях будет подразумевать существование последовательный алгоритм с пространственной сложностью для той же задачи. Так является -полным проблема в свою очередь , будет означать , что каждая проблема в может быть решена в поли-лог пространства: . Как вы уже знаете, мы вместо этого считаем, чтоP Q O ( ( l o g n ) k ) O ( ( l o g n ) k ′ ) Q P P ( P ∩ P O L Y L O G S P A C E ) = P ( P ∩ P O L Y L O G S P A C E )PPQO((logn)k)O((logn)k′)QPP(P∩POLYLOGSPACE)=P(P∩POLYLOGSPACE)⊂P , хотя мы еще не можем доказать это.
И последнее замечание о требованиях к полиномиальному процессору. Ну, это теоретическое утверждение. На практике: требование к процессору, которое растет быстрее, чем размер проблемы, на самом деле может оказаться бесполезным.