从数小时到 360 毫秒:过度工程的数独难题求解
作者尝试解决一个数独难题,目标是找到使得所有行组成的九个九位数的最大公约数最大的解。最初使用 Z3 求解器,但运行数小时仍未找到结果。作者随后尝试了多种优化方法:首先通过数学分析缩小搜索空间,然后使用 BFS 算法,并逐步优化 `is_good` 函数,从使用 HashSet 到使用 bitset,最后利用 SIMD 技术进行向量化计算。通过多线程和改进线程同步机制,最终将求解时间从数小时缩短到 360 毫秒,实现了超过 1600 倍的加速。虽然最终发现直接硬编码答案是最快的,但这篇文章展示了即使是看似简单的算术问题,也能通过精细的算法优化获得巨大的性能提升。
阅读更多