Недавно я читал об алгоритмах проверки на сходство и читал, что проблема в P-полноте . Кроме того, следствием этого является то, что эта проблема или любая P-полная проблема вряд ли будут иметь эффективные параллельные алгоритмы.
Какая интуиция стоит за этим последним утверждением?
complexity-theory
parallel-computing
Дэйв Кларк
источник
источник
Ответы:
Любая полная проблема, вряд ли имеет эффективный параллельный алгоритм. Зачем ?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 EPSPACE P PSPACE P NP PSPACE ... но это требует экспоненциального числа процессоров! Работает компромисс между пространством и временем: экспоненциальное время в модели последовательных вычислений преобразуется в экспоненциальное число процессоров в модели параллельных вычислений, тогда как полиномиальное пространство в модели последовательных вычислений преобразуется в полиномиальное время в параллельной модели. вычислительная модель.
Этот компромисс будет легче понять , если мы пытаемся ограничить как параллельное время и параллельные аппаратным: если параллельная вычислительная модель имеет полиномиальное число процессоров, то класс задач , решаемый в параллельном полиномиальное время . Если мы ограничим число процессоров полиномом, мы сможем улучшить производительность последовательной машины, но не более, чем полиномиальный коэффициент. Таким образом, мы можем уменьшить степень полинома, представляющего сложность времени, но мы не можем использовать параллелизм для уменьшения экспоненциальных затрат до полиномиальных затрат.P
Задачи , решаемые параллельно с полиномиальной временной сложностью являются теми проблемами , относящихся к . Полиномиальное ограничение на число процессоров приводит к модели параллельных вычислений, эквивалентной TM. Есть два важных практических соображения: какое полиномиальное количество процессоров является приемлемым / доступным? На практике полиномиальное число процессоров должно быть линейным или близким. Какое субполиномиальное время достижимо? Оказалось, что почти во всех высокопараллельных выполнимых задачах можно достичь полилогарифмического параллельного времени. Параллельно сложность по времени, которая является логарифмической по длине ввода, представляет собой эффективное параллельное вычисление. Параллельный алгоритм считается эффективным, если при заданном полиномиальном числе процессоров его временная сложность является полилогарифмической.P
Учитывая проблему где и - константы, тезис о параллельных вычислениях подразумевает существование параллельного алгоритма для с временной сложностью где - константа. Сравнение между последовательным и параллельным временем позволяет классифицировать как проблему с высокой степенью параллелизации (с точки зрения времени).k h R O ( ( l o g n ) k ′ ) k ′ RR∈TIME_SPACETM(nk,(logn)h) k h R O((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 ≠ PPOLYLOGSPACE POLYLOGSPACE POLYLOGSPACE≠P
P P - ( P ∩ P O L Y L O G S P A C E )P∩POLYLOGSPACE содержит задачи, которые можно решить за полиномиальное время с помощью полилогарифмического пространства. полные проблемы, вероятно, принадлежат .P P−(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)) f n NC⊂(P∩POLYLOGSPACE)
Однако, к сожалению, по определению также включает в себя множество проблем, которые не могут быть эффективно распараллелены. Самый печально известный пример - параллельный бинарный поиск . Проблема состоит в том, что эта проблема имеет сложность полилогарифмического времени даже для = 1. Любой последовательный алгоритм, требующий самое большее логарифмическое время в худшем случае, находится в независимо от его параллельной выполнимости!p N CNC p NC
Теперь мы можем наконец объяснить, почему проблемы с завершением являются наиболее сложными из распараллеливаемых задач. Учитывая -полную задачу , весьма маловероятно существование эффективного параллельного алгоритма: если такой параллельный алгоритм будет существовать с временной сложностью , то тезис о параллельных вычислениях будет подразумевать существование последовательный алгоритм с пространственной сложностью для той же задачи. Так является -полным проблема в свою очередь , будет означать , что каждая проблема в может быть решена в поли-лог пространства: . Как вы уже знаете, мы вместо этого считаем, что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 )P P Q O((logn)k) O((logn)k′) Q P P (P∩POLYLOGSPACE)=P (P∩POLYLOGSPACE)⊂P , хотя мы еще не можем доказать это.
И последнее замечание о требованиях к полиномиальному процессору. Ну, это теоретическое утверждение. На практике: требование к процессору, которое растет быстрее, чем размер проблемы, на самом деле может оказаться бесполезным.
источник
Потому что «эффективная параллель» попадает в («класс Ника» задач, разрешимых за полилогарифмическое время с полиномиальным числом процессоров), и широко распространено мнение, что . Таким образом, считается, что любая проблема не имеет эффективного параллельного алгоритма (поскольку это подразумевает, что ).NC NC≠P P-complete P=NC
Конечно, все это зависит от предположения, что , поскольку вы знаете, что это открытая проблема, что не находится на первом уровне , то есть мы не знаем, если .NC≠P P NC NC1≠P
Более того, мы даже не знаем, можете ли вы решить проблемы в в , т. схемах с постоянной глубиной (= постоянное параллельное время) с воротами .P AC0[6] mod6
Для получения дополнительной информации взгляните на следующую книгу:
Рэймонд Гринлоу, Х. Джеймс Гувер, Уолтер Л. Руццо, « Пределы параллельных вычислений: теория P-полноты », 1995.
источник
Ответ Каве охватывает обычное определение «параллелизма», то есть NC. Вопрос о том, является ли P NC, является одним из наиболее сложных вопросов в теории сложности (и в некоторых отношениях так же актуален, как и вопрос P NP).< <
Интуиция заключается в том, что некоторые проблемы в P, такие как линейное программирование или порядок DFS, чувствуют, что они имеют много зависимостей, которые вынуждают длинный «критический путь», который не может быть распараллелен. Это не доказательство больше, чем недетерминизм, кажущийся очень могущественным, но это основная идея.
Изменить: чтобы уточнить комментарии, смысл этого ответа состоит в том, чтобы сказать, почему (некоторые) люди не думают, что P и NC одинаковы. Как и в случае с P и NP, никто не знает, как доказать, отличаются ли они оба, но есть кое-что в трудных проблемах, которые заставляют (некоторых) компьютерных ученых думать, что они есть.
Еще одним исключением является то, что NC - это «время полилога на полиномиально многих процессорах», что требует очень значительного ускорения, но дает много процессоров. Таким образом, это может не соответствовать практическому понятию распараллеливания.
В частности, если вы думаете, что P NP, то вы сразу же начнете искать эвристические алгоритмы и алгоритмы аппроксимации для NP-полных задач. С другой стороны, даже если вы думаете, что NC меньше, чем P, вы можете получить нетривиальные ускорения от видов параллелизма, доступных на современных компьютерах.<
источник
Будьте очень внимательны к тому, кто понимает, что такое «эффективные параллельные алгоритмы».
Старые ответы объясняют перспективу теории сложности. Там «эффективное» обычно означает что-то расплывчатое, например «время выполнения за время с процессорами O ( g ( n ) ) ». Обратите внимание, что количество процессоров может зависеть от размера ввода!O(f(n)) O(g(n))
В частности, часто называемый класс NC является
Это не имеет никакого отношения к тому, существуют ли параллельные алгоритмы для этих задач, которые эффективны в более практическом смысле¹:
Тот факт, что для проблемы не существует алгоритма ЧПУ, не означает, что его не существует; просто потому, что мы не можем разбить проблему на полиномиально много очень маленьких кусочков, не означает, что мы не можем разбить ее на постоянно достаточно много меньших по мере роста .n
Например, на многих процессорах с общей памятью разбор CYK может выполняться параллельно с асимптотически оптимальным ускорением (см. Мой главный тезис , даже несмотря на то, что разбор без контекста является P-полным.
Полезное описание эффективности на машинах с конечным числом процессоров требует более точного анализа, чем так как ускорение ограничено конечной константой, числом процессоров². Вы редко найдете это в теории сложности. Поэтому, если вы хотите узнать о параллельных алгоритмах, которые используются в реальном мире, я бы посоветовал посмотреть в другом месте.O(…)
Пусть - функция времени выполнения параллельного алгоритма. Возможно, вы захотите назвать алгоритм «эффективным», если T 1 ( n ) / T p ( n ) ≈ p или если T 1 ( n ) ≈ T ( n ) для T, функция времени выполнения хорошего последовательного алгоритма. Я предлагаю это более строго в моей магистерской диссертации , опираясь на цитируемую там литературу.Tp:N→R≥0 T1(n)/Tp(n)≈p T1(n)≈T(n) T
Это не всегда верно; иерархия памяти и аппаратные средства могут обеспечить большее ускорение, по крайней мере иногда. Однако будет еще одна постоянная граница.
источник
Этот вопрос был помечен как дублирующий этот вопрос, поэтому позвольте мне предположить, что это действительно дубликат, и дать один из возможных ответов.
Мы знаем, что NC! = PSPACE, следовательно, доказательство того, что P = NC, также доказывает P! = PSPACE. Это может показаться не таким уж большим делом, но это одно из последствий для компьютерных исследований.
Почему мы знаем NC! = PSPACE? Ну, мы знаем NC k ⊆ DSPACE (O (log k )), поэтому мы можем просто использовать теорему о пространственной иерархии.
С точки зрения практических приложений, приложения вокруг линейного (и выпуклого) программирования могут быть настолько соблазнительными, что можно разрабатывать и продавать собственные параллельные архитектуры вместе с компиляторами для эффективной трансляции формулировок линейного программирования на это оборудование.
источник