Определения для NP, полные проблемы выше корректны, но я думал, что мог бы нанести воск лиричный об их философской важности, поскольку никто еще не решил ту проблему.
Почти всеми сложными проблемами, на которые Вы натолкнетесь, будет Завершенный NP. Существует что-то очень фундаментальное об этом классе, и который просто, кажется, в вычислительном отношении отличается от легко разрешимых проблем. Они сортируют, имеют их собственный аромат, и не настолько трудно распознать их. Это в основном означает, что любой умеренно сложный алгоритм невозможен для Вас решить точно - планирование, оптимизация, упаковка, касаясь и т.д.
, Но не все потерян, если проблемой, с которой Вы встретитесь, является Завершенный NP. Существует обширное и очень техническое поле, где люди изучают алгоритмы аппроксимации, которые дадут Вам гарантии того, чтобы быть близко к решению NP полной проблемой. Некоторые из них являются невероятно сильными гарантиями - например, для 3sat, можно получить гарантию 7/8 через действительно очевидный алгоритм. Еще лучше, в действительности, существует некоторая очень сильная эвристика, которая выделяется при предоставлении больших ответов (но никакие гарантии!) для этих проблем.
Примечание, что двумя очень известными проблемами - изоморфизмом графов и учитывающий - как известно, не является P или NP.
Вы можете попробовать CT-Eclipse , плагин непрерывного тестирования для Eclipse.
На странице плагина:
При включенном CT-Eclipse, при редактировании вашего кода, Eclipse незаметно запускает ваши тесты в фоновом режиме и уведомляет вас, если какой-либо из них не срабатывает или вызывает ошибки.
Недавно я начал использовать Infinitest , и мне кажется, что он каким-то образом «знает», какие части кода влияют на какие тестовые примеры. Поэтому, когда вы меняете какой-то код, он автоматически повторно запускает тесты, которые могут сломаться. Если тест не проходит, он отмечает ошибку в том месте, где он не прошел, так же, как Eclipse отмечает ошибку кодирования, например, вызов несуществующего метода или что-то еще. И все это происходит в фоновом режиме, и вам не нужно ничего делать.
Вы можете использовать JUnit Max , это плагин eclipse, который будет запускать все ваши тесты при каждом сохранении. Но он сделает это, не прерывая ваш рабочий процесс. Результаты отображаются в левом углу Eclipse, и вы всегда можете вернуться к последнему успешному тестированию. Плагин запускает тесты, которые, скорее всего, не пройдут первыми, чтобы вы как можно быстрее получили ответ о своем последнем сохранении.