Данный проект посвящен глубокому исследованию класса NP-полных задач, являющихся одними из наиболее сложных в вычислительной информатике. Мы изучим их формальное определение, основные свойства и критерии сводимости, а также рассмотрим ключевые примеры таких задач, как задача коммивояжера, задача выполнимости булевых формул (SAT) и задача о Clique. Особое внимание будет уделено анализу алгоритмов, пытающихся решить эти задачи, включая точные алгоритмы, приближенные алгоритмы и эвристические методы. В рамках проекта будет разработана демонстрационная система, иллюстрирующая работу выбранных алгоритмов на реальных или синтетических наборах данных, что позволит наглядно представить сложность и поведение NP-полных задач.