Нужен совет по оптимизации данного алгоритма.
На вход алгоритм получает
чисел
,
пар
и
пар
.
Далее вычисления выполняются так:
- Случайно, с равномерным законом распределения, выбираем индекс
- Вычисляем по формуле
где
- Вычисляем новое значение по формуле
- Если еще не все обработаны, переходим на п.1;
- Вывод
В моей задаче
порядка нескольких тысяч,
, а уложиться надо в несколько миллисекунд на 12-ядерном ксеоне.
Я делаю так: новое значение каждого
вычисляется по формуле
. Видно , что суммы
и
, а также значения
и
можно вычислять заранее, параллельно для всех возможных комбинаций индексов. А после вычисления каждого нового значения
заменять соответствующий ему элемент суммы.
Можно ли еще как-то преобразовать алгоритм, чтобы уменьшить количество вычислений тригонометрических функций ?