2blindman: Матрица B это и есть искомая матрица перестановок, такая, что tr(A*B) минимален (tr() - след матрицы), ну с точностью до транспонирования B вроде. Не думаю что вручную генеря перестановки можно сделать что-то более умное, чем просто найти B

В общем как-то очень от этой задачи NP-полнотой попахивает

Это типа есть N дней, в каждый из них идёт N фильмов, а билеты каждый день стоят разные деньги на каждый фильм. (т.е. цена похода на каждый фильм меняется и цены разных фильмов в каждый день могут не совпадать) - надо посмотреть все фильмы потратив минимум денег. В таком виде больше похоже на задачу коммивояжера?
