Класс P — различия между версиями
| Tsar (обсуждение | вклад) м (→Свойства класса P:  Замена жаргонизма) | Tsar (обсуждение | вклад)   (Попытки что-то исправить (пункты от АС №3, 4, 5)) | ||
| Строка 12: | Строка 12: | ||
| == Свойства класса P == | == Свойства класса P == | ||
| − | {{ | + | {{Теорема | 
| |statement = | |statement = | ||
| Класс <tex>\mathrm{P}</tex> замкнут относительно [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сведения по Карпу]]. <tex>L \in \mathrm{P}, M \le L \Rightarrow M \in \mathrm{P}</tex>. | Класс <tex>\mathrm{P}</tex> замкнут относительно [[Сведение относительно класса функций. Сведение по Карпу. Трудные и полные задачи|сведения по Карпу]]. <tex>L \in \mathrm{P}, M \le L \Rightarrow M \in \mathrm{P}</tex>. | ||
| Строка 27: | Строка 27: | ||
| − | {{ | + | {{Теорема | 
| |statement = | |statement = | ||
| <tex>D \subseteq \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^D</tex>. В частности, из этого следует, что <tex>\mathrm{P}=\mathrm{P^P}</tex>. | <tex>D \subseteq \mathrm{P} \Rightarrow \mathrm{P}=\mathrm{P}^D</tex>. В частности, из этого следует, что <tex>\mathrm{P}=\mathrm{P^P}</tex>. | ||
| Строка 41: | Строка 41: | ||
| − | {{ | + | {{Теорема | 
| |statement = | |statement = | ||
| Класс <tex>\mathrm{P}</tex> замкнут относительно операций объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если <tex>L_1, L_2 \in \mathrm{P}</tex>, то: <tex>L_1 \cup L_2 \in \mathrm{P}</tex>, <tex>L_1 \cap L_2 \in \mathrm{P}</tex>, <tex>L_1 L_2 \in \mathrm{P}</tex>, <tex>L_1^* \in \mathrm{P}</tex> и <tex>\overline{L_1} \in \mathrm{P}</tex>. | Класс <tex>\mathrm{P}</tex> замкнут относительно операций объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если <tex>L_1, L_2 \in \mathrm{P}</tex>, то: <tex>L_1 \cup L_2 \in \mathrm{P}</tex>, <tex>L_1 \cap L_2 \in \mathrm{P}</tex>, <tex>L_1 L_2 \in \mathrm{P}</tex>, <tex>L_1^* \in \mathrm{P}</tex> и <tex>\overline{L_1} \in \mathrm{P}</tex>. | ||
| Строка 62: | Строка 62: | ||
| }} | }} | ||
| − | ==  | + | == Примеры задач и языков из P == | 
| + | Класс задач, разрешимых за полиномиальное время достаточно широк, вот несколько его представителей: | ||
| + | * определение связности графов; | ||
| + | * вычисление наибольшего общего делителя; | ||
| + | * задача линейного программирования; | ||
| + | * проверка простоты числа.<ref>[http://www.cse.iitk.ac.in/~manindra/algebra/primality_v6.pdf M.Argawal, N.Kayal, N.Saxena, "Primes is in P"]</ref> | ||
| + | |||
| + | Но существуют задачи и не из <tex>\mathrm{P}</tex>, так как из [[теорема о временной иерархии|теореме о временной иерархии]] следует, что <tex>\exists L \in \mathrm{EXP}\setminus\mathrm{P}</tex>. | ||
| + | |||
| + | |||
| {{Теорема | {{Теорема | ||
| |statement = | |statement = | ||
| Строка 68: | Строка 77: | ||
| |proof = | |proof = | ||
| <tex>\mathrm{Reg} \subset \mathrm{TS}(n, 1) \subset \mathrm{P}</tex> | <tex>\mathrm{Reg} \subset \mathrm{TS}(n, 1) \subset \mathrm{P}</tex> | ||
| − | |||
| }} | }} | ||
| − | + | ||
| {{Теорема | {{Теорема | ||
| |statement = | |statement = | ||
| Строка 79: | Строка 87: | ||
| Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]]. | Первое включение выполняется благодаря существованию [[Алгоритм Эрли|алгоритма Эрли]]. | ||
| }} | }} | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| == Ссылки == | == Ссылки == | ||
Версия 17:20, 4 июня 2012
Определение
| Определение: | 
| Класс — класс языков (задач), разрешимых на детерминированной машине Тьюринга за полиномиальное время, то есть: [1]. | 
Итого, язык  лежит в классе  тогда и только тогда, когда существует такая детерминированная машина Тьюринга , что:
- завершает свою работу за полиномиальное время на любых входных данных;
- если на вход машине подать слово , то она допустит его;
- если на вход машине подать слово , то она не допустит его.
Свойства класса P
| Теорема: | 
| Класс  замкнут относительно сведения по Карпу. . | 
| Доказательство: | 
| Пусть — разрешитель , работающий за полиномиальное время. . Построим разрешитель для языка . if () return true return falseРазрешитель работает за полиномиальное время, так как композиция полиномов есть полином. | 
| Теорема: | 
| . В частности, из этого следует, что . | 
| Доказательство: | 
| Понятно, что . Докажем, что . . Пусть — разрешитель , работающий за полиномиальное время и использующий оракул языка . Пусть — разрешитель , работающий за полиномиальное время .Представим себе разрешитель , работающий как , но использующий вместо оракула . Его время работы ограничено сверху значением , что является полиномом (обращений к максимум ; на вход для можем подать максимум данных, так как больше сгенерировать бы не успели). Значит, . | 
| Теорема: | 
| Класс  замкнут относительно операций объединения, пересечения, конкатенации, замыкания Клини и дополнения. Если , то: , , ,  и . | 
| Доказательство: | 
| Докажем замкнутость замыкания Клини. Остальные доказательства строятся аналогично. Пусть — разрешитель , работающий за полиномиальное время. Построим разрешитель для языка . //позиции, где могут заканчиваться слова, принадлежащие for () for () if () { if () return true } return falseХудшая оценка времени работы разрешителя равна , так как в множестве может быть максимум элементов, значит итерироваться по множеству можно за , если реализовать его на основе битового массива, например; при этом операция добавления элемента в множество будет работать за . Итого, разрешитель работает за полиномиальное время (так как произведение полиномов есть полином). Значит . | 
Примеры задач и языков из P
Класс задач, разрешимых за полиномиальное время достаточно широк, вот несколько его представителей:
- определение связности графов;
- вычисление наибольшего общего делителя;
- задача линейного программирования;
- проверка простоты числа.[2]
Но существуют задачи и не из , так как из теореме о временной иерархии следует, что .
| Теорема: | 
| Класс регулярных языков входит в класс , то есть: . | 
| Доказательство: | 
| Теорема: | 
| Класс контекстно-свободных языков входит в класс , то есть: . | 
| Доказательство: | 
| Первое включение выполняется благодаря существованию алгоритма Эрли. | 
