使用置換矩陣交換行有什麼好處?爲什麼要創建置換矩陣,然後應用矩陣乘法,比用for循環交換行更容易,更高效?爲什麼置換矩陣用於交換數組的行?
6
A
回答
7
置換矩陣是一種有用的數學抽象,因爲它們允許使用矩陣代數的正規規則進行分析,而不必引入其他類型的操作。在軟件中,良好的實現不會將置換矩陣存儲爲完整矩陣,它們存儲置換數組,並且它們直接應用(沒有全矩陣乘法)。
根據矩陣大小以及涉及的操作和訪問模式,根本不會將置換應用於內存中的數據,而只是將其用作額外的間接尋址。因此,當您請求(P * M)(i,j)
時,其中P
是置換矩陣,而M
是您正在置換的某個其他矩陣,因此根本不需要重新排列數據,而是在您訪問時元素訪問操作將查找置換行元素。
0
我首先想到的是「空間局部性」問題。緩存技術假定如果訪問內存位置,則可能訪問內存的附近位置。在一些編程語言中,行中的元素是鄰居,而列中的元素是其他元素中的鄰居。這取決於實施。我猜想,置換矩陣是爲了解決這個問題而設計的,因爲矩陣乘法的優化是學術界最主要的改進之一。簡單的循環結構將無法利用緩存技術來提高性能。
相關問題
- 1. 什麼是將SymPy矩陣轉換爲numpy數組/矩陣的最佳方法
- 2. 將陣列數組轉換爲矩陣
- 3. 爲什麼我的矩陣行組SSRS
- 4. 轉換矩陣數組
- 5. 交換4D矩陣的行和列
- 6. 將矩陣字符串數組轉換爲整數矩陣? C++
- 7. 將numpy矩陣轉換爲python數組
- 8. 將1D數組轉換爲numpy矩陣
- 9. 將結構數組轉換爲矩陣
- 10. 將矩陣轉換爲數組
- 11. 如何將數組轉換爲矩陣?
- 12. 將數組轉換爲矩陣R
- 13. 如何將矩陣轉換爲數組?
- 14. 用於列和行交換的最佳稀疏矩陣表示
- 15. 交換數組的陣列
- 16. 將矩陣轉換爲行/數據對
- 17. 轉換界整數數組爲比特陣列的矩陣
- 18. 將基於行的遷移數據轉換爲遷移矩陣
- 19. 如何在MATLAB中交換矩陣的一組行?
- 20. matlab中的置換矩陣
- 21. 爲什麼Doom3切換列和行主矩陣?
- 22. 將3X3變換矩陣變換爲4X4矩陣以進行CSS變換matrix3d
- 23. 將基於TRUE/FALSE矩陣的矩陣轉換爲R?
- 24. 將矩陣轉換爲對角矩陣
- 25. 將2D矩陣轉換爲3D矩陣?
- 26. 用plyr轉換數據幀爲矩陣
- 27. 轉換的指數矩陣爲數量矩陣
- 28. 什麼是將矩陣矩陣轉換爲三角形條的快速算法?
- 29. 創建置換矩陣 - numpy
- 30. 用於高質量四元數的矩陣相當於矩陣變換
-1:這完全不正確。高性能線性代數包不*使用通用矩陣乘法來應用排列。這樣做會遠遠比直接應用排列要慢。空間局部性問題完全是虛假的 - 直接應用置換的代碼可以優化爲具有良好的存儲器訪問模式比通用矩陣乘法更容易。 – 2011-06-11 15:40:13