Вот интересная проблема, что я столкнулся в программировании конкуренции:обнаруживая при умножении матриц можно
Постановка задачи: Учитывая размеров n
матриц, определить, существует порядок, что матрицы могут быть умноженный. Если он существует, распечатайте размер (произведение размеров) результирующей матрицы.
Мои наблюдения: Это сводится к NP-полной гамильтоновой траектории, если вы рассматриваете каждую матрицу как вершину и рисуете направленное ребро между матрицами, которые можно умножить. Я решил это просто грубо заставляя проблему, но это явно очень медленно. Мне было интересно, есть ли какая-нибудь умная оптимизация для этого конкретного экземпляра проблемы.
Все эффективно разрешаемые (и проверяемые) проблемы сводятся к NP-полным проблемам. Это сокращение от NP-полной проблемы к вашей проблеме, которая должна раздражать. – aelguindy
Как @ElKamina сказал, это проблема Эйлера, см. Также мой ответ [здесь] (http://stackoverflow.com/a/9046177/1011995). –