Почему матрицы перестановки используются для обмена рядами массива?

StackOverflow https://stackoverflow.com/questions/6313651

  •  26-10-2019
  •  | 
  •  

Вопрос

Каковы преимущества использования матрицы перестановки для обмена рядами? Почему можно создать матрицу перестановки, а затем применить умножение матрицы, проще и эффективнее, чем просто заменять строки на петлю?

Это было полезно?

Решение

Матрицы перестановки являются полезной математической абстракцией, потому что они позволяют анализировать, используя нормальные правила матричной алгебры, без необходимости ввести другой тип операции.

В программном обеспечении хорошие реализации не хранят матрицу перестановки в качестве полной матрицы, они хранят массив перестановки и применяют его напрямую (без полного умножения матрицы).

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

Другие советы

Первое, что приходит в мой разум, - это проблема, называемая «пространственной местностью». Технологии кэширования предполагают, что если доступ к расположению памяти, вероятно, доступно доступ к близлежащим местам памяти. На некоторых языках программирования элементы в рядах являются соседями, тогда как элементы в колонках являются соседями в других. Это зависит от реализации. Я полагаю, что матрицы перестановки предназначены для решения этой проблемы, поскольку оптимизация умножения матрицы является одной из проблем, которые алгоритмы Academia в основном работают над улучшением. Простая структура петли не сможет использовать кеш -технологии для повышения производительности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top