Главная arrow книги arrow Копия Приложение А. Математические основы arrow Изначально сложные и недетерминированные полиномиальные задачи
Изначально сложные и недетерминированные полиномиальные задачи

С помощью анализа алгоритмов и системы обозначений О () мы получаем возможность рассуждать об эффективности конкретного алгоритма. Однако эти методы не позволяют определить, может ли существовать лучший алгоритм для рассматриваемой задачи. В области анализа сложности исследуются задачи, а не алгоритмы. Первая широкая градация в этой области проводится между задачами, которые могут быть решены за время, измеряемое полиномиальным соотношением, и задачами, которые не могут быть решены за время, измеряемое полиномиальным соотношением, независимо от того, какой алгоритм для этого используется. Класс полиномиальных задач (которые могут быть решены за времядля некоторого к) обозначается как Р. Эти задачи иногда называют "легкими", поскольку данный класс содержит задачи, имеющие такую продолжительность прогона, как О(logn) и О (л). Но он содержит и задачи с затратами времени, поэтому определение "легкий" не следует понимать слишком буквально.

Еще одним важным классом является NP (сокращение от Nondeterministic Polynomial) — класс недетерминированных полиномиальных задач. Задача относится к этому классу, если существует алгоритм, позволяющий выдвинуть гипотезу о возможном решении, а затем проверить правильность этой гипотезы с помощью полиномиальных затрат времени. Идея такого подхода состоит в том, что если бы можно было воспользоваться сколь угодно большим количеством процессоров, чтобы проверить одновременно все гипотезы, или оказаться крайне удачливым и всегда с первого раза находить правильную гипотезу, то NP-трудные задачи стали бы Р-трудными задачами. Одним из самых важных нерешенных вопросов в компьютерных науках является то, будет ли класс NP эквивалентным классу Р, если нельзя воспользоваться бесконечным количеством процессоров или способностью находить правильную гипотезу с первого раза. Большинство специалистов в области компьютерных наук согласны с тем, что, иными словами, что задачи NP являются изначально трудными и для них не существует алгоритмов с полиномиальными затратами времени. Но это утверждение так и не было доказано.