Алгоритм Фрейвалдса (назван по имени Русиньша Мартыньша Фрейвалдса) — это вероятностный рандомизированный алгоритм, используемый для верификации матричного произведения. По трём матрицам, и размера необходимо проверить, что . Наивный алгоритм решения данной задачи заключается в том, чтобы посчитать в явном виде и поэлементно сравнить получившуюся матрицу с . Однако наилучший известный алгоритм умножения матриц работает за время [1]. Алгоритм Фрейвалдса использует рандомизацию чтобы снизить данную оценку до [2]с высокой вероятностью. За время алгоритм может проверить матричное произведение с вероятностью ошибки, не превосходящей .
Если , то алгоритм всегда возвращает «Да». Если , то вероятность того, что алгоритм вернёт «Да» не больше .
Если выполнить алгоритм раз и возвращать «Да» только если на каждой итерации был получен ответ «Да», будет получен алгоритм со временем работы и вероятностью ошибки .
Выбирается случайный вектор из нулей и единиц, например, , после чего он используется для вычислений:
То, что получен нулевой вектор указывает на то, что . Однако, если на второй итерации использовать вектор , то будет получен следующий результат:
Полученный вектор не нулевой, что доказывает, что .
В рассмотренном случае есть всего четыре двухэлементных векторов из нулей и единиц, и на половине из них получается нулевой вектор ( и ), таким образом вероятность того, что оба раза будет выбран один из этих векторов (что повлечёт ложный вывод о том, что ) равна или . В общем случае доля векторов , влекущих нулевой вектор может быть меньше , и использование нескольких итераций (например, 20) сделает вероятность ошибки пренебрежимо малой.