«Проблема P против NP» и классы вычислительной сложности: объяснение задачи тысячелетия и её значение для программирования