¿Cuáles son las ventajas de usar una matriz de permutación para intercambiar filas? ¿Por qué uno crearía una matriz de permutación y luego aplicaría una multiplicación de matrices? ¿Es más fácil y más eficiente que simplemente intercambiar filas con un ciclo for?¿Por qué las matrices de permutación se utilizan para intercambiar filas de una matriz?
Respuesta
Las matrices de permutación son una abstracción matemática útil, ya que permiten el análisis utilizando las reglas normales del álgebra matricial, sin tener que introducir otro tipo de operación.
En el software, las buenas implementaciones no almacenan una matriz de permutación como una matriz completa, almacenan una matriz de permutación y la aplican directamente (sin una multiplicación de matriz completa).
Dependiendo de los tamaños de las matrices y las operaciones y los patrones de acceso implicados, puede ser más barato no aplicar la permutación a los datos en la memoria, sino simplemente usarla como una indirección adicional. Entonces, cuando solicite (P * M)(i,j)
, donde P
es una matriz de permutación y M
es otra matriz que está permutando, los datos no necesitan ser reorganizados en absoluto, sino que la operación de acceso al elemento buscará la fila permutada cuando acceda el elemento.
Lo primero que me viene a la mente es el problema llamado "localidad espacial". Las tecnologías de almacenamiento en caché asumen que si se accede a una ubicación de memoria, es probable acceder a las ubicaciones cercanas de la memoria. En algunos lenguajes de programación, los elementos en las filas son vecinos, mientras que los elementos en las columnas son vecinos en los demás. Depende de la implementación. Supongo que las matrices de permutación están diseñadas para resolver este problema, ya que la optimización de la multiplicación de matrices es uno de los problemas que los algoritmos académicos principalmente trabajan para mejorar. La estructura de bucle simple no podrá usar tecnologías de caché para mejorar el rendimiento.
- 1. ¿Para qué se utilizan las declaraciones dispinterface?
- 2. ¿Hay dos matrices de permutación entre sí?
- 3. C# Permutación de una matriz de listas de arreglos?
- 4. ¿Por qué se utilizan objetos similares a un array en JavaScript en matrices nativas?
- 5. Agrupar filas en una matriz grande por nombre de fila
- 6. ¿Para qué se utilizan java.awt.Component.getName() y setName()?
- 7. Intercambiar dos filas DB sin violar las restricciones
- 8. ¿Qué métodos se utilizan para visualizar una matriz de 4 dimensiones?
- 9. garantías cuando se utilizan variables de usuario al número filas
- 10. ¿Para qué se utilizan parches en SVN?
- 11. ¿Qué frameworks de PHP utilizan las corporaciones?
- 12. ¿Cómo puedo dividir/dividir una matriz por filas entre otras dos matrices?
- 13. ¿Las matrices numpy se pasan por referencia?
- 14. ¿Por qué las transformaciones 2D necesitan matrices 3x3?
- 15. intercambiar filas en datagridview en C#
- 16. Comparación de filas entre dos matrices
- 17. ¿Por qué las matrices admiten IList?
- 18. ¿Las matrices de JavaScript realmente se implementan como matrices?
- 19. Recorrido por una matriz de matrices de cadenas con espacios
- 20. ¿Para qué se utilizan los diferentes formatos de NameID?
- 21. Usando punteros para intercambiar valores de matriz int
- 22. ¿Cómo concatenas las filas de una matriz en un vector?
- 23. T-SQL - cómo intercambiar filas y columnas
- 24. Obtener filas de la tabla mysql para matrices php
- 25. ¿Para qué se utilizan los diferentes formatos de archivo gettext?
- 26. PHP División de una matriz en dos matrices: matriz de matrices y valores matriz
- 27. Comparación por pares de filas en una matriz
- 28. ¿Cómo generar una permutación?
- 29. C# Creación de una matriz de matrices
- 30. ¿Cómo inicializar una matriz de matrices 2D?
-1: Esto es totalmente incorrecto. Los paquetes de álgebra lineal de alto rendimiento no * usan * una multiplicación de matriz de propósito general para aplicar permutaciones. Hacerlo sería mucho, mucho más lento que aplicar la permutación directamente. El problema de la ubicación espacial es completamente falso: el código para aplicar directamente una permutación se puede optimizar para tener buenos patrones de acceso a la memoria incluso más fácilmente que la multiplicación de la matriz de propósito general. –