¿Ha habido algún trabajo en encontrar el mínimo número de operaciones aritméticas elementales necesarios para calcular el determinante de una por matriz para la pequeña y fija ? Por ejemplo, .
¿Ha habido algún trabajo en encontrar el mínimo número de operaciones aritméticas elementales necesarios para calcular el determinante de una por matriz para la pequeña y fija ? Por ejemplo, .
Respuestas:
Se sabe que el número de operaciones aritméticas necesarias para calcular el determinante de una matriz es n ω + o ( 1 ) , donde ω es la constante de multiplicación de la matriz. Vea, por ejemplo, esta tabla en Wikipedia, así como sus notas al pie y referencias. Tenga en cuenta que la complejidad asintótica de la inversión de la matriz también es la misma que la multiplicación de la matriz en este mismo sentido.
La equivalencia es bastante efectiva. En particular, puede calcular recursivamente el determinante de una matriz trabajando en bloques ( n / 2 ) × ( n / 2 ) utilizando el complemento de Schur:
Por lo tanto, puede calcular un determinante calculando dos ( n / 2 ) × ( n / 2 ) determinantes, invirtiendo una matriz ( n / 2 ) × ( n / 2 ) , multiplicando dos pares de ( n / 2 ) × ( n / 2 ) matrices, y algunas operaciones más simples. Al expandir las llamadas determinantes de forma recursiva, la complejidad termina siendo dominada por la multiplicación e inversión de la matriz.
Esto funciona bien incluso para pequeños e incluso sin usar algoritmos de multiplicación de matriz subcúbica. (Por supuesto, termina siendo más o menos equivalente a la eliminación gaussiana). Por ejemplo, para n = 4 , podemos calcular det ( D ) con dos multiplicaciones, D - 1 con cuatro divisiones, B D - 1 C con 2 × 8 = 16 multiplicaciones, det ( A - B D - 1 C )con dos multiplicaciones, y la respuesta final con una multiplicación. El número total es multiplicaciones más divisiones, que es menor que los 40 de la expansión del cofactor. Usar el algoritmo de Strassen ahorra dos multiplicaciones aquí, pero más asintóticamente.
Puede notar que esta expansión usa crucialmente la división. Si desea evitar la división, puede hacerlo en operaciones trabajando con secuencias de Clow y programación dinámica . También se sabe cómo lograr n 2 + ω / 2 + o ( 1 ) multiplicaciones y sin divisiones.