P-полнота и параллельные вычисления


23

Недавно я читал об алгоритмах проверки на сходство и читал, что проблема в P-полноте . Кроме того, следствием этого является то, что эта проблема или любая P-полная проблема вряд ли будут иметь эффективные параллельные алгоритмы.

Какая интуиция стоит за этим последним утверждением?


Это относится к NC (см. Ответы), который является ужасным способом формализации «эффективно распараллеливаемых».
Рафаэль

Ответы:


17

Любая полная проблема, вряд ли имеет эффективный параллельный алгоритм. Зачем ?P

Существование -полных проблем является наиболее важным признаком того, что . Тогда возникает вопрос: почему эта гипотеза актуальна для параллельных вычислений? Давайте начнем с ресурсов, используемых в вычислениях. Для последовательных вычислений: время и пространство; для параллельных вычислений: время и оборудование (количество процессоров). Есть ли связь? Да! Последовательное пространство ↔ параллельное время; Последовательное время, параллельное оборудование. Соответствие между последовательным пространством и параллельным временем, кажется, не зависит от принятой модели параллельных вычислений; это приводит к следующему, так называемому тезису о параллельных вычислениях, который не доказан.P(PPOLYLOGSPACE)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 RRTIME_SPACETM(nk,(logn)h)khRO((logn)k)kR

Из тезиса о параллельных вычислениях следует, что - это класс задач, которые можно распараллелить. не содержит проблем, связанных с сокращением пространства журналов; это означает . Кажется, чтоP O L Y L O G S P A C E P O L Y L O G S P A C E PPOLYLOGSPACEPOLYLOGSPACEPOLYLOGSPACEP

  1. POLYLOGSPACEP
  2. PPOLYLOGSPACE

P P - ( P P O L Y L O G S P A C E )PPOLYLOGSPACE содержит задачи, которые можно решить за полиномиальное время с помощью полилогарифмического пространства. полные проблемы, вероятно, принадлежат .PP(PPOLYLOGSPACE)

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(PPOLYLOGSPACE)

Однако, к сожалению, по определению также включает в себя множество проблем, которые не могут быть эффективно распараллелены. Самый печально известный пример - параллельный бинарный поиск . Проблема состоит в том, что эта проблема имеет сложность полилогарифмического времени даже для = 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(PPOLYLOGSPACE)=P(PPOLYLOGSPACE)P , хотя мы еще не можем доказать это.

И последнее замечание о требованиях к полиномиальному процессору. Ну, это теоретическое утверждение. На практике: требование к процессору, которое растет быстрее, чем размер проблемы, на самом деле может оказаться бесполезным.


10

Потому что «эффективная параллель» попадает в («класс Ника» задач, разрешимых за полилогарифмическое время с полиномиальным числом процессоров), и широко распространено мнение, что . Таким образом, считается, что любая проблема не имеет эффективного параллельного алгоритма (поскольку это подразумевает, что ).NCNCPP-completeP=NC

Конечно, все это зависит от предположения, что , поскольку вы знаете, что это открытая проблема, что не находится на первом уровне , то есть мы не знаем, если .NCPPNCNC1P

Более того, мы даже не знаем, можете ли вы решить проблемы в в , т. схемах с постоянной глубиной (= постоянное параллельное время) с воротами .PAC0[6]mod6

Для получения дополнительной информации взгляните на следующую книгу:

Рэймонд Гринлоу, Х. Джеймс Гувер, Уолтер Л. Руццо, « Пределы параллельных вычислений: теория P-полноты », 1995.


NC также включает в себя множество проблем, которые не распараллеливаются эффективно. Смотрите мой ответ для деталей.
Массимо Кафаро

Вы можете явно сказать, что «Если какая-либо проблема находится в тогда ». P-completeNCNC=P
Алекс тен Бринк

1
@unforgiven, существуют различные мнения о том, какой класс правильно захватывает «эффективные параллельные» алгоритмы, поэтому я использовал класс, который считается верхним пределом. Я думаю, что P против NC является типичной причиной, по которой люди думают, что у P-полных задач нет эффективных параллельных алгоритмов, хотя в вашем ответе есть интересные детали. Я добавил ссылку на мой ответ.
Каве

1
@ Каве, я согласен с тобой. Большинство людей думают об этом именно в этих терминах. Вот почему я хотел предложить немного другую точку зрения, основанную на тезисе параллельных вычислений. Ссылка, которую вы предоставили, превосходна и фактически представляет собой лучшее из того, что я когда-либо читал.
Массимо Кафаро

6

Ответ Каве охватывает обычное определение «параллелизма», то есть NC. Вопрос о том, является ли P NC, является одним из наиболее сложных вопросов в теории сложности (и в некоторых отношениях так же актуален, как и вопрос P NP).<<

Интуиция заключается в том, что некоторые проблемы в P, такие как линейное программирование или порядок DFS, чувствуют, что они имеют много зависимостей, которые вынуждают длинный «критический путь», который не может быть распараллелен. Это не доказательство больше, чем недетерминизм, кажущийся очень могущественным, но это основная идея.

Изменить: чтобы уточнить комментарии, смысл этого ответа состоит в том, чтобы сказать, почему (некоторые) люди не думают, что P и NC одинаковы. Как и в случае с P и NP, никто не знает, как доказать, отличаются ли они оба, но есть кое-что в трудных проблемах, которые заставляют (некоторых) компьютерных ученых думать, что они есть.

Еще одним исключением является то, что NC - это «время полилога на полиномиально многих процессорах», что требует очень значительного ускорения, но дает много процессоров. Таким образом, это может не соответствовать практическому понятию распараллеливания.

В частности, если вы думаете, что P NP, то вы сразу же начнете искать эвристические алгоритмы и алгоритмы аппроксимации для NP-полных задач. С другой стороны, даже если вы думаете, что NC меньше, чем P, вы можете получить нетривиальные ускорения от видов параллелизма, доступных на современных компьютерах.<


Интуиция, которую вы даете, не верна, тот факт, что нельзя превратить конкретный алгоритм в эффективный параллельный, не означает, что проблема не может быть решена за эффективное параллельное время. Можно было бы сказать что-то похожее, сказать, что в первую очередь это не в потому что вам нужно протестировать много чисел, и кажется, что большинство из них не связаны, но это неверно, как мы знаем, и первичность в . ПPP
Каве

Но точку зрения Луи следует рассматривать как интуицию, и это не совсем так. Однако проблематично то, что P-полнота DFS очень хрупкая - вам нужна лексикографическая DFS, а также RNC и т. Д. И т. Д.
Suresh

@ Суреш: Да. Я имею в виду, я понятия не имею, как доказать этот лекс. Порядок DFS нельзя моделировать детерминистически намного лучше, чем просто делать это, но люди не «чувствуют», что это возможно без случайности. (Если это имеет значение, моя «религия» заключается в том, что много случайности имеет некоторую силу.)
Луи,

@Kaveh: этот «критический путь» (также называемый «рабочей глубиной») является не особенностью алгоритма, а проблемой; вот почему это трудно показать. Это самая длинная последовательность «рабочих циклов», которые были исследованы последовательно (по любому алгоритму).
Рафаэль

@ Рафаэль, учитывая язык, нет никакой известной причины, по которой алгоритм, решающий его, должен следовать определенной последовательности шагов, если бы вы могли показать, что это подразумевает нижнюю границу, которой у нас нет. И это одна из причин, почему доказательство нижних границ настолько сложно, что вы не можете предполагать, как будут выглядеть вычисления алгоритма, решающего проблему. Это моя точка зрения.
Каве

3

Будьте очень внимательны к тому, кто понимает, что такое «эффективные параллельные алгоритмы».

Старые ответы объясняют перспективу теории сложности. Там «эффективное» обычно означает что-то расплывчатое, например «время выполнения за время с процессорами O ( g ( n ) ) ». Обратите внимание, что количество процессоров может зависеть от размера ввода!O(f(n))O(g(n))

В частности, часто называемый класс NC является

множество решений задач, разрешимых за полилогарифмическое время на параллельном компьютере с полиномиальным числом процессоров.

Это не имеет никакого отношения к тому, существуют ли параллельные алгоритмы для этих задач, которые эффективны в более практическом смысле¹:

  • Если у вас есть алгоритм ЧПУ, вы не получите информации о том, как решить проблему (эффективно) на любом компьютере с фиксированным числом процессоров.
  • Тот факт, что для проблемы не существует алгоритма ЧПУ, не означает, что его не существует; просто потому, что мы не можем разбить проблему на полиномиально много очень маленьких кусочков, не означает, что мы не можем разбить ее на постоянно достаточно много меньших по мере роста .n

    Например, на многих процессорах с общей памятью разбор CYK может выполняться параллельно с асимптотически оптимальным ускорением (см. Мой главный тезис , даже несмотря на то, что разбор без контекста является P-полным.

Полезное описание эффективности на машинах с конечным числом процессоров требует более точного анализа, чем так как ускорение ограничено конечной константой, числом процессоров². Вы редко найдете это в теории сложности. Поэтому, если вы хотите узнать о параллельных алгоритмах, которые используются в реальном мире, я бы посоветовал посмотреть в другом месте.O()


  1. Пусть - функция времени выполнения параллельного алгоритма. Возможно, вы захотите назвать алгоритм «эффективным», если T 1 ( n ) / T p ( n ) p или если T 1 ( n ) T ( n ) для T, функция времени выполнения хорошего последовательного алгоритма. Я предлагаю это более строго в моей магистерской диссертации , опираясь на цитируемую там литературу.Tp:NR0T1(n)/Tp(n)pT1(n)T(n)T

  2. Это не всегда верно; иерархия памяти и аппаратные средства могут обеспечить большее ускорение, по крайней мере иногда. Однако будет еще одна постоянная граница.


0

Предположим, завтра кто-то обнаружил доказательство того, что P = NC. Каковы будут последствия для компьютерных исследований и практических приложений в этом случае?

Этот вопрос был помечен как дублирующий этот вопрос, поэтому позвольте мне предположить, что это действительно дубликат, и дать один из возможных ответов.

Мы знаем, что NC! = PSPACE, следовательно, доказательство того, что P = NC, также доказывает P! = PSPACE. Это может показаться не таким уж большим делом, но это одно из последствий для компьютерных исследований.

Почему мы знаем NC! = PSPACE? Ну, мы знаем NC k ⊆ DSPACE (O (log k )), поэтому мы можем просто использовать теорему о пространственной иерархии.


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.