Знает ли кто-нибудь быстрый способ вычисления элементарных симметрических многочленов от n переменных?
Можно вычислить сразу все за , перемножив многочлены с помощью бпф и взяв коэффициенты произведения. Но если нужно вычислять по модулю, то это уже не очень удобно, а если модуль не простой, то совсем плохо.
Можно вычислить все квадратичной динамикой, но хочется что-нибудь побыстрее.
Как в тему) Как посчитать количество комутирующих перестановок к даной? Я так понял что надо найти количество возможных вот этих самых симетрических многочленов. Судя по этому, в самом начале.
Количество коммутирующих перестановок сильно проще считается. Можно доказать, что в любой группе
, где N(x) — множество элементов коммутирующих с x, G — группа (в данном случае группа перестановок мощности n!), S(x) — множество сопряженных к x элементов. В группе перестановок легко посчитать все сопряженные, т.к. это просто все перестановки с таким цикловым типом.
Спасибо, кэп
Умножать Карацубой?
Недавно столкнулся с этой же проблемой и понял, что все очень просто. Надо перемножать многочлены с помощью БПФ и после каждого перемножения брать коэффициенты по модулю (главное следить за точностью)
А как за O(NlogN)? Я умею только перемножать их, вытаскивая два очередных многочлена из очереди, перемножая их, и кладя результат в конец очереди (получится порядок умножения а-ля дерево отрезков), но это будет работать за .
Более того, я писал ровно эту задачу именно так, хотя и не припомню где именно.
Есть довольно хитрый алгоритм, я его пару лет назад видел в одной книжке по вычислительной математике, только сейчас не могу вспомнить ни книжку, ни сам алгоритм =)