Матрицы перестановок представляют собой полезную математическую абстракцию, поскольку они позволяют проводить анализ с использованием обычных правил матричной алгебры без необходимости вводить другой тип операции.
В программном обеспечении хорошие реализации не хранят матрицу перестановок какполная матрица, они хранят массив перестановок и применяют его напрямую (без полного умножения матрицы).
В зависимости от размеров матриц, используемых операций и шаблонов доступа, может быть дешевле не применятьперестановка данных в памяти вообще, но только для использования в качестве дополнительного косвенного обращения.Таким образом, когда вы запрашиваете (P * M)(i,j)
, где P
- это матрица перестановок, а M
- какая-то другая матрица, которую вы переставляете, данные вообще не нужно переупорядочивать, скорее, операция доступа к элементу будет искатьперестановочная строка при доступе к элементу.