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