Время от времени в решении бизнес-задач мы сталкиваемся с NP, полными проблемами, задачами, поиск оптимального решения которых имеет экспоненциальную сложность. Обычно мы прибегаем к аппроксимационным алгоритмам, чтобы уложится в требуемое время, но что, если есть другой путь? Прогресс в производительности процессоров и видеокарт привел к тому, что мы можем использовать полный перебор там, где мы раньше обходились приближениями.
На примере алгоритма DRS платформы Evolution компании Cloud. ru рассмотрим, как он может быть решен на разных версиях операций с плавающей точкой процессоров x86 и Arm. В чем сложности задействования SIMD-операций. Почему это сложнее на Go, и как это обойти. Бонус — сравнения со скоростью видеокарты, так ли они сильны.