El algoritmo de Freivalds (llamado así en honor a Rūsiņš Mārtiņš Freivalds ) es un algoritmo probabilístico aleatorio utilizado para verificar la multiplicación de matrices . Dadas tres matrices n × n ,, y, un problema general es verificar siUn algoritmo ingenuo calcularía el producto .explícitamente y comparar término por término si este producto es igual aSin embargo, el algoritmo de multiplicación de matrices más conocido se ejecuta entiempo. El algoritmo de Freivalds utiliza la aleatorización para reducir este límite de tiempo a[ 1 ] con alta probabilidad. Entiempo el algoritmo puede verificar un producto matricial con una probabilidad de fallo menor que.
El algoritmo
Aporte
Tres matrices n × n ,, y.
Producción
Sí, si; No, de lo contrario.
Procedimiento
Error
Si, entonces el algoritmo siempre devuelve "Sí". Si, entonces la probabilidad de que el algoritmo devuelva "Sí" es menor o igual a la mitad. Esto se denomina error unilateral .
Al iterar el algoritmo k veces y devolver "Sí" solo si todas las iteraciones dan como resultado "Sí", se obtiene un tiempo de ejecución dey probabilidad de error dese logra.
Ejemplo
Supongamos que uno quisiera determinar si:
Se selecciona un vector aleatorio de dos elementos con entradas iguales a 0 o 1, por ejemplo : – y se utiliza para calcular:
Esto produce el vector cero, lo que sugiere la posibilidad de que AB = C. Sin embargo, si en un segundo intento el vectorSi se selecciona, el resultado es:
El resultado es distinto de cero, lo que demuestra que, de hecho, AB ≠ C.
Hay cuatro vectores de dos elementos 0/1, y la mitad de ellos dan el vector cero en este caso (y), por lo que la probabilidad de seleccionar aleatoriamente estos en dos ensayos (y concluir erróneamente que AB=C) es 1/2 2 o 1/4. En el caso general, la proporción de r que produce el vector cero puede ser menor que 1/2, y se utilizaría un mayor número de ensayos (como 20), lo que hace que la probabilidad de error sea muy pequeña.
Análisis de errores
Sea p la probabilidad de error. Afirmamos que si A × B = C , entonces p = 0, y si A × B ≠ C , entonces p ≤ 1/2.
Caso A × B = C
Esto es independientemente del valor de, ya que solo utiliza esoPor lo tanto, la probabilidad de error en este caso es:
Caso A × B ≠ C
Dejarde tal manera que
Dónde
- .
Desde, tenemos que algún elemento dees distinto de cero. Supongamos que el elementoPor definición de multiplicación de matrices , tenemos:
- .
Por alguna constante. Usando el teorema de Bayes , podemos particionar sobre:
Utilizamos eso:
Sustituyendo estos valores en la ecuación ( 1 ), obtenemos:
Por lo tanto,
Con esto concluye la demostración.
Ramificaciones
Un análisis algorítmico simple muestra que el tiempo de ejecución de este algoritmo es(en notación Big O ). Esto supera el tiempo de ejecución del algoritmo determinista clásico de(osi se utiliza la multiplicación rápida de matrices ). El análisis de errores también muestra que si se ejecuta el algoritmoveces, un margen de error de menos deSe puede lograr una cantidad exponencialmente pequeña. El algoritmo también es rápido en la práctica debido a la amplia disponibilidad de implementaciones rápidas para productos matriz-vector. Por lo tanto, la utilización de algoritmos aleatorios puede acelerar un algoritmo determinista muy lento .
El algoritmo de Freivalds aparece con frecuencia en las introducciones a los algoritmos probabilísticos debido a su simplicidad y a cómo ilustra la superioridad de los algoritmos probabilísticos en la práctica para algunos problemas.
Véase también
Referencias
- Freivalds, R. (1977). «Las máquinas probabilísticas pueden usar menos tiempo de ejecución». Procesamiento de la información 77 : actas del Congreso IFIP 77, Toronto, 8-12 de agosto de 1977. North-Holland. págs. 839-842 . ISBN 0-7204-0755-9OCLC 878720415
- Mitzenmacher, Michael ; Upfal, Eli (2005). "1.3 Aplicación: Verificación de la multiplicación de matrices" . Probabilidad y computación: Algoritmos aleatorios y análisis probabilístico . Cambridge University Press. pp. 8–12 . ISBN 0-521-83540-2.
- teoría matricial
- Algoritmos aleatorios
- Algoritmos de multiplicación de matrices