yosupo06/library-checker-problems

[問題案] Multivariate Cyclic Convolution

maspypy opened this issue · 6 comments

問題ID: multivariate_cyclic_convolution
問題名: Multivariate Cyclic Convolution

問題概要

k変数の多項式 f(x_1, x_2, ..., x_k), g(x_1, x_2, ..., x_k) が与えられる。これを掛けて mod (x_1^{n_1}-1, x_2^{n_2}-1, ..., x_k^{n_k}-1) を取ったものを求めてください。

想定アルゴリズム

(1 の 2^n 乗根と) m 乗根がある体において、Z/mZ の FT が高速に計算できることを利用する。
https://dic.kimiyuki.net/chirp-z-transform
高次元の FFT → 各点積 → IFFT

想定計算量

O(NlogN)

制約・入力・出力

https://judge.yosupo.jp/problem/multivariate_convolution に準ずる。
完全に同じ制約、全く同じ入力ケースにしてサボることを提案する。

結局 mod 998244353 はやめた

参考資料

https://dic.kimiyuki.net/chirp-z-transform
https://twitter.com/noshi91/status/1478716471136366593?s=20 以下のツイートの議論

問題名

https://en.wikipedia.org/wiki/Circular_convolution

Circular convolution, also known as cyclic convolution, is a ...

なので、cyclic か circular のどちらか。
Multivariate Convolution (Cyclic) みたいな表記の方が並びが分かりやすいかも。

理解しました ありがとうございます 良さそうに思えます

  • 定数倍がすごそう?
  • 誤差: もちろん理想的には2か3がいいのですが、「TODO: いつか2か3の解法と差し替える」で1でもいいと思います

ありがとうございます。実装難しそうなのでちょっと時間かかりますが、やってみます。

実用上は mod p の場合の出題しか見たことがなくて、mod p だと実装量がだいぶ変わりますが、これもついでに作りますか?わざわざ用意するほどではないですかね。

あ、mod p と書いたのは、「convolution on mul monoid」との混同です。

One may want to check the paper Notes on the Truncated Fourier Transform. I hope it would be helpful. (Though I haven't understand yet.)

やっぱり p = 998244353 ではなく、p=1 mod n_i にしようと思います。そろそろ作業します。

done
#902