algorithm - 评估多项式系数的最佳复杂度
问题描述
我想找出根为 0,1,2...n-1 的 n 次多项式的系数。有人能推荐一个好的算法吗?我尝试使用 FFT,但速度不够快
解决方案
我将使用的简单解决方案是编写如下函数:
def poly_with_root_sequence (start, end, gap):
if end < start + gap:
return Polynomial([1, -start])
else:
p1 = poly_with_root_sequence(start, end, gap*2)
p2 = poly_with_root_sequence(start+gap, end, gap*2)
return p1 * p2
answer = poly_with_root_sequence(1, n, 1)
使用简单算法,这将进行O(n^2)
算术运算。然而,一些操作将涉及非常大的数字。(请注意,大的数字n!
不止n
数字n
。)但是我们已经安排了很少的操作将涉及非常大的数字。
除非您使用具有非常快速的乘法算法的多项式实现,否则仍然没有机会尽可能快地产生答案。
https://gist.github.com/ksenobojca/dc492206f8a8c7e9c75b155b5bd7a099宣传自己是 Python 中多项式相乘的 FFT 算法的实现。我无法验证。但它让你有机会走得相当快。
推荐阅读
- spring - Spring Boot 2 - 一些 Graphite Metrics 没有从定制器接收公共标签
- java - 使用 GifSequenceWriter 将 BufferedImages 的 ArrayList 转换为 GIF 的问题 - Java
- android - Android Studio 为横向设置“下一个”文本视图
- php - 有没有办法将 php 与 mininet 一起使用,例如 test 使用 php 进行性能分析?
- jenkins - (字符串问题)如何使用数据字符串进行 curl POST 调用?
- php - 循环结果集显示额外的 br 标记
- javascript - 查询 MySQL 数据库,然后在表单提交后显示检索到的文本
- c# - 使用正则表达式验证模型
- excel - 在公式中使用下拉列表从另一个工作表中获取信息
- git - 我可以使用 Git 子模块将一个分支的副本保存在同一存储库中另一个分支的目录中吗?