В криптографическом приложении я сталкиваюсь со следующей проблемой: я дал набор линейных конгруэнций
a[1]*x[1]+a[2]*x[2]+a[3]*x[3] == d[1] (mod p)
b[1]*x[1]+b[2]*x[2]+b[3]*x[3] == d[2] (mod p)
c[1]*x[1]+c[2]*x[2]+c[3]*x[3] == d[3] (mod p)
Здесь x неизвестно a, b, c, d даны
Система, скорее всего, недоопределена, поэтому у меня достаточно места для решения. Мне нужен алгоритм, который находит равнораспределенное решение (что означает равнораспределение в пространстве решений) для этой задачи с использованием генератора псевдослучайных чисел (или с ошибками).
Большинство стандартных алгоритмов для систем линейных уравнений, которые я знаю по моим курсам по линейной алгебре, не имеют прямого отношения к сравнениям, насколько я вижу ...
Мой текущий «безопасный» алгоритм работает следующим образом: Найти все переменные, которые встречаются только в одном уравнении, и назначить случайное значение. Теперь, если в каждой строке не назначена только одна переменная, присвойте значение в соответствии с конгруэнтностью. Иначе не получится.
Может кто-нибудь подсказать, как вообще решить эту проблему?