Это не официальный сайт wikipedia.org 01.01.2023

Класс NC — Википедия

Класс NC

В теории сложности вычислений классом NC (от англ. Nick’s Class) называют множество задач разрешимости, разрешимых за полилогарифмическое время на параллельном компьютере с полиномиальным числом процессоров. Другими словами, задача принадлежит классу NC, если существуют константы k и c такие, что она может быть решена за время O ( log c n ) при использовании O ( n k ) параллельных процессоров. Стивен Кук[1][2] назвал его «Классом Ника» в честь Ника Пиппенжера[en], который провел обширные исследования[3] схем с полилогарифмической глубиной и полиномиальным размером.[4]

Так же, как класс P можно считать классом податливых задач (Тезис Кобхэма[en]), так и NC можно считать классом задач, которые могут быть эффективно решены на параллельном компьютере.[5] NC — это подмножество P, потому что параллельные полилогарифмические вычисления можно симулировать с помощью последовательных полиномиальных вычислений. Неизвестно, верно ли NP = P, но большинство ученых считает, что нет, из чего следует, что скорее всего существуют податливые задачи, которые последовательны «от природы», и не могут быть существенно ускорены при использовании параллелизма. Так же, как класс NP-полных задач можно считать классом «скорее всего неподатливых» задач, так и класс P-полных задач, при сведении к NC, можно считать «скорее всего не параллелизуемым» или «скорее всего последовательным от природы».

Параллельный компьютер в определении можно считать параллельной машиной с произвольным доступом (PRAM — от англ. parallel, random-access machine). Это параллельный компьютер с центральным пулом памяти, любой процессор которого может получить доступ к любому биту за константное время. На определение NC не влияет способ, с помощью которого PRAM осуществляет одновременный доступ нескольких процессоров к одному биту.

NC может быть определён, как множество задач разрешимости, разрешимых распределённой Булевой схемой с полилогарифмической глубиной и полиномиальным числом вентилей.

Задачи в NCПравить

NC включает в себя много задач, в том числе:

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

Иерархия NCПравить

NCi — это множество задач разрешимости, разрешимых распределенными булевыми схемами с полиномиальным количеством вентилей (с количеством входов, не большим двух) и глубиной O ( log i n )  , или разрешимых за время O ( log i n )   параллельным компьютером с полиномиальным числом процессоров. Очевидно,

N C 1 N C 2 N C i N C ,  

что представляет собой NC-иерархию.

Мы можем связать классы NC с классами памяти L, NL[6] и AC[7]:

N C 1 L N L A C 1 N C 2 P .  

Классы NC и AC одинаково определены, за исключением неограниченности количества входов у вентилей для класса AC. Для каждого i   верно[5][7]:

N C i A C i N C i + 1 .  

Следствием этого является NC = AC.[8] Известно, что оба включения строгие для i = 0  .[5] Похожим образом можем получить, что NC эквивалентен множеству задач, решаемых на переменной машине Тьюринга с числом выборов на каждом шаге не большим, чем двух, и с O(log n) памяти и ( log n ) O ( 1 )   альтерациями.[9]

Нерешенная задача: является ли NC собственным?Править

Один из больших открытых вопросов теории сложности вычислений — является ли собственным каждое вложение NC-иерархии. Как было замечено Пападимитриу, если для какого-то i   верно NCi = NCi+1, то NCi = NCj для всех j i  , и как следствие, NCi = NC. Это наблюдение называется сворачиванием NC-иерархии, потому что даже из одного равенстве в цепи вложений:

N C 1 N C 2  

следует, что вся NC-иерархия «сворачивается» до какого-то уровня i  . Таким образом, возможны два варианта:

  1. N C 1 N C i N C i + j N C  
  2. N C 1 N C i = = N C i + j = N C .  

Широко распространено мнение, что верно именно (1), хотя пока не обнаружено никаких доказательств в отношении истинности того или иного утверждения.

Теорема БаррингтонаПравить

Ветвящаяся программа с n   переменными, шириной k   и длиной m   состоит из последовательности инструкций длины m  . Каждая инструкция — это тройка ( i , p , q )  , где i   — это индекс переменной, которую нужно проверить ( 1 i n )  , а p   и q   — это функции перестановки из { 1 , 2 , . . . , k }   в { 1 , 2 , . . . , k }  . Числа 1 , 2 , . . . , k   называются состояниями ветвящейся программы. Программа начинается в состоянии 1, и каждая инструкция ( i , p , q )   изменяет состояние x   в p ( x )   или q ( x )  , в зависимости от того, равна ли i  -ая переменная 0 или 1.

Семейство ветвящихся программ состоит из ветвящихся программ с n   переменными для каждого n  .

Легко показать, что любой язык L   на { 0 , 1 }   может быть распознан семейством ветвящихся программ с шириной 5 и экспоненциальной длиной, или семейством с экспоненциальной шириной и линейной длиной.

Каждый регулярный язык на { 0 , 1 }   может быть распознан семейством ветвящихся программ с константной шириной и линейным числом инструкций (так как ДКА может быть преобразован в ветвящуюся программу). BWBP обозначает класс языков, распознаваемых семейством ветвящихся программ с ограниченной шириной и полиномиальной длиной (англ BWBP — bounded width and polynomial length).[10].

Теорема Баррингтона[11] утверждает, что BWBP — это в точности нераспределенный NC1. Доказательство теоремы использует неразрешимость группы симметрии S 5  .[10]

Доказательство теоремы БаррингтонаПравить

Докажем, что ветвящаяся программа (ВП) с константной шириной и полиномиальным размером может быть превращена в схему из NC1.

От противного: пусть есть схема C из NC1. Без ограничения общности, будем считать что в ней используются только вентили И и НЕ.

Определение: ВП называется σ  -вычисляющей булеву функцию f   или ( σ f )  , если при f = 0   она дает результат — тождественную перестановку, а при f = 1   её результат — σ  -перестановка. Так как наша схема C описывает какую-то булеву функцию f   и только её, можем взаимно заменять эти термины.

Для доказательства будем использовать две леммы:

Лемма 1: Если есть ВП, σ  -вычисляющая f  , то существует и ВП, σ 1  -вычисляющая f   (то есть, равная i d   при f = 0  , и равная σ 1   при f = 1  .

Доказательство: так как σ   и σ 1   — циклы, а любые два цикла являются сопряженными, то существует такая перестановка π  , что σ 1   = π σ π 1  . Тогда домножим на π   перестановки p 1   и q 1   из первой инструкции ВП слева (чтобы получить перестановки π p 1   и π q 1  ), а перестановки из последней инструкции домножим на π 1   справа (получим p n π 1   и q n π 1  ). Если до наших действий (без ограничения общности) p 1 p 2 . . . p n   был равен i d  , то теперь результат будет π i d π 1 = i d  , а если был равен σ  , то результат равен π σ π 1 = σ 1  . Так, мы получили ВП, σ 1  -вычисляющую f  , с той же длиной (количество инструкций не поменялось).

Примечание: если домножить вывод ВП ( σ 1 f )   на σ   справа, то очевидным образом получим ВП, σ  -вычисляющую функцию ¬ f  .

Лемма 2: Если есть два ВП: σ  -вычисляющая f   и γ  -вычисляющая t   с длинами l 1   и l 2  , где σ   и γ   — 5-цикличные перестановки, то существует ВП с 5-цикличной перестановкой ε = γ σ γ 1 σ 1   такая, что ВП ε  -вычисляет f t  , и её размер не превосходит 2 ( l 1   + l 2 )  .

Доказательство: Выложим «в ряд» инструкции четырёх ВП: ( γ t )  , ( σ f )  , ( γ 1 t )  , ( σ 1 f )   (строим обратные по лемме 1). Если одна или обе функции выдают 0, то результат большой программы ε = i d  : например, при f = 0 , t = 1 , ε = i d σ i d σ 1 = i d  . Если обе функции выдают 1, то ε = γ σ γ 1 σ 1  . Здесь γ σ γ 1 σ 1 i d <=> γ σ σ γ  , что верно из-за того, что эти перестановки 5-цикличны (из-за неразрешимости группы симметрии S 5  ). Длина новой ВП высчитывается по определению.

Доказательство теоремы

Будем доказывать по индукции. Предположим, что у нас есть схема C с входами x 1 , . . . , x n   и что для всех подсхем D и 5-цикличных перестановок σ   существует ВП, σ  -вычисляющая D. Покажем, что для всех 5-перестановок σ   существует ВП, σ  -вычисляющий C.

  • Если схема C выдает x i  , то ВП имеет одну инструкцию: проверить значение x i   (0 или 1), и отдать i d   или σ   (соответственно).
  • Если схема C выдает ¬  A для какой-то другой схемы A, по примечанию к лемме 1 создадим ВП, σ  -вычисляющую ¬  A.
  • Если схема C выдает A  B для схем A и B, создадим нужную ВП по лемме 2.

Размер итоговой ветвящейся программы не превосходит 4 d  , где d   — это глубина схемы. Если у схемы логарифмическая глубина, то у ВП полиномиальная длина.

ПримечанияПравить

  1. “Towards a complexity theory of synchronous parallel computation. D L'Enseignement mathematique 27” [англ.]. Архивировано из оригинала 2022-03-10. Дата обращения 2020-04-19. Используется устаревший параметр |deadlink= (справка)
  2. Cook, Stephen A. (1985-01-01). “A taxonomy of problems with fast parallel algorithms”. Information and Control. International Conference on Foundations of Computation Theory [англ.]. 64 (1): 2—22. DOI:10.1016/S0019-9958(85)80041-3. ISSN 0019-9958.
  3. Pippenger, Nicholas (1979). “On simultaneous resource bounds”. 20th Annual Symposium on Foundations of Computer Science (SFCS 1979) [англ.]: 307—311. DOI:10.1109/SFCS.1979.29. ISSN 0272-5428.
  4. Arora & Barak (2009) p.120
  5. 1 2 3 Arora & Barak (2009) p.118
  6. Papadimitriou (1994) Theorem 16.1
  7. 1 2 Clote & Kranakis (2002) p.437
  8. Clote & Kranakis (2002) p.12
  9. S. Bellantoni and I. Oitavem (2004). “Separating NC along the delta axis”. Theoretical Computer Science. 318 (1—2): 57—78. DOI:10.1016/j.tcs.2003.10.021.
  10. 1 2 Clote & Kranakis (2002) p.50
  11. Barrington, David A. (1989). “Bounded-Width Polynomial-Size Branching Programs Recognize Exactly Those Languages in NC1 (PDF). J. Comput. Syst. Sci. 38 (1): 150—164. DOI:10.1016/0022-0000(89)90037-8. ISSN 0022-0000. Zbl 0667.68059.

СсылкиПравить