Класс NC

Материал из testwiki
Перейти к навигации Перейти к поиску

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

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

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

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

Задачи в NC

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

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

Иерархия NC

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

𝖭𝖢1𝖭𝖢2𝖭𝖢i𝖭𝖢,

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

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

𝖭𝖢1𝖫𝖭𝖫𝖠𝖢1𝖭𝖢2𝖯.

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

𝖭𝖢i𝖠𝖢i𝖭𝖢i+1.

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

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

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

𝖭𝖢1𝖭𝖢2

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

  1. 𝖭𝖢1𝖭𝖢i𝖭𝖢i+j𝖭𝖢
  2. 𝖭𝖢1𝖭𝖢i==𝖭𝖢i+j=𝖭𝖢.

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

Теорема Баррингтона

Ветвящаяся программа с n переменными, шириной k и длиной m состоит из последовательности инструкций длины m. Каждая инструкция — это тройка (i,p,q), где i — это индекс переменной, которую нужно проверить (1in), а 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. Доказательство теоремы использует неразрешимость группы симметрии S5.[10]

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

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

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

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

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

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

Доказательство: так как σ и σ1 — циклы, а любые два цикла являются сопряженными, то существует такая перестановка π, что σ1 = πσπ1. Тогда домножим на π перестановки p1 и q1 из первой инструкции ВП слева (чтобы получить перестановки πp1 и πq1), а перестановки из последней инструкции домножим на π1 справа (получим pnπ1 и qnπ1). Если до наших действий (без ограничения общности) p1p2...pn был равен id, то теперь результат будет πidπ1=id, а если был равен σ, то результат равен πσπ1=σ1. Так, мы получили ВП, σ1-вычисляющую f, с той же длиной (количество инструкций не поменялось).

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

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

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

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

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

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

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

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Классы сложности

  1. Шаблон:Cite journal
  2. Шаблон:Cite journal
  3. Шаблон:Cite journal
  4. Arora & Barak (2009) p.120
  5. 5,0 5,1 5,2 Arora & Barak (2009) p.118
  6. Papadimitriou (1994) Theorem 16.1
  7. 7,0 7,1 Clote & Kranakis (2002) p.437
  8. Clote & Kranakis (2002) p.12
  9. Шаблон:Cite journal
  10. 10,0 10,1 Clote & Kranakis (2002) p.50
  11. Шаблон:Cite journal