Вот интересная проблема, с которой я столкнулся в соревновании по программированию:
Заявление о проблемах: Учитывая размеры матриц n
, определите, существует ли порядок, чтобы матрицы можно было умножить. Если он существует, распечатайте размер (произведение размеров) результирующей матрицы.
Мои наблюдения:. Это сводится к NP-полной гамильтоновой проблеме пути, если вы рассматриваете каждую матрицу как вершину и рисуете направленное ребро между матрицами, которые можно умножить. Я решил это просто грубо заставляя проблему, но это явно очень медленно. Мне было интересно, есть ли какая-нибудь умная оптимизация для этого конкретного экземпляра проблемы.