Теория сложности (старая трешовая версия) — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (переименовал Теория сложности в Теория сложности (старая трешовая версия): Мы создаём свой конспект. Хороший, красивый и ясный.)
(Практика 7: Исправление ссылки)
 
Строка 93: Строка 93:
 
== Практика 7 ==
 
== Практика 7 ==
 
*[[Вероятностная машина Тьюринга]]
 
*[[Вероятностная машина Тьюринга]]
*[[Класс ZPP]]
+
*[[Сложностный класс ZPP]]
 
*[[Сложностные классы RP и coRP]]
 
*[[Сложностные классы RP и coRP]]
 
*[[Сложностный класс PP]]
 
*[[Сложностный класс PP]]

Текущая версия на 22:30, 4 июня 2012

Лекция 1. Вводная[править]

Начнем курс с введения понятий DTIME и DSPACE.

  • DTIME(f(n)) = [math]\{ L \mid \exists [/math] машина Тьюринга [math]m : L(m)=L, Time(m,x) \le f(|x|) \}[/math], где [math]|x|[/math] — длина входа [math]x[/math].
  • DSPACE(f(n)) = [math]\{ L \mid \exists [/math] машина Тьюринга [math]m : L(m)=L, Space(m,x) \le f(|x|) \}[/math].

Аналогичным образом введем классы NSPACE и NTIME, использующие недетерминированную машину Тьюринга взамен детерминированной (в течении всего курса префикс D соответствует детерминизму, а N — недетерминизму).

Рассмотрим и докажем теоремы о емкостной и временной иерархии.


Через понятия классов DSPACE, DTIME, NSPACE и NTIME будет дано определение многим сложностным классам, в том числе P и NP.

Класс P — класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время. Формально:

  • P=[math]\bigcup_{i=0}^{\infty}[/math]DTIME[math](in^i)[/math]

В свою очередь, при разрешении языка из класса NP используется недетерминированная машина:

  • NP=[math]\bigcup_{i=0}^{\infty}[/math] NTIME[math](in^i)[/math]

Дадим определение класса NP на языке сертификатов:

  • NP=[math]\Sigma_1 = \{L|\exists R(x,y) \in P, p \in Poly | l \in L \Leftrightarrow \exists y, |y| \le p(x) | R(x,y)=1\}[/math] (первое равенство доказывается в статье NP). Поясним, что [math]y[/math] является сертификатом принадлежности [math]x[/math] языку [math]L[/math], если существует полиномиальное отношение (верификатор) [math]R[/math], такое что [math]R(x,y)=1[/math] тогда и только тогда, когда [math]x[/math] принадлежит [math]L[/math].

Вместе со многими сложностными классами имеет смысл рассматривать и их дополнения (используется приставка co-). Например, класс co-NP.


Введем в рассмотрение отношения между языками: сведение по Карпу и сведение по Куку.

  • Язык [math]A[/math] сводится по Карпу к языку [math]B[/math], если существует функция [math]f(x)[/math] такая, что [math]x \in A[/math] тогда и только тогда, когда [math]f(x) \in B[/math].
  • Язык [math]A[/math] сводится по Куку к [math]B[/math], если существует разрешающая язык [math]A[/math] программа [math]m[/math], работающая полиномиальное время от длины входа, которая может использовать разрешающую программу [math]m_B[/math] для языка [math]B[/math] в качестве оракула. При этом время работы [math]m_B[/math] не учитывается.

В дальнейшем чаще будет рассматриваться сведение по Карпу.

Практика 1[править]

Лекция 2[править]

Практика 2[править]

Лекция 3[править]

Практика 3[править]

Практика, которой на самом деле не было[править]

Лекция 4[править]

Лекция 5[править]

Лекция 6[править]

Практика 6[править]

Лекция 7[править]

Практика 7[править]

Лекция 8[править]

Практика 8[править]

Лекция 9[править]

Лекция 10[править]

Лекция 11[править]

Лекция 12[править]

Лекция 13[править]