Какие есть методы нахождения представления симметрического полинома через элементарные симметрические?
Есть метод Ньютона, он описан в Куроше Курс высшей алгебры (возможно, есть литература лучше).
Но он наверно слишком сложный, т.к. уже для
вычисления занимали часы.
Странно
А у Вас точно все оптимизировано?
Есть идея, использовать метод неопределенных коэффициентов, то есть задавать переменным
произвольные значения, вычислять значения основного полинома и элементарных при этих значениях, зачем из линейной системы вычислить коэффициенты. Тут проблема выбрать значения
так, чтоб система имела одно решение. Но может этот алгоритм будет еще более сложный? Не могу оценить и сравнить степени сложности.
Можно посчитать квадратную матрицу коэффициентов, потом считать ее ранг. Если ранг равен 0, то брать следующее значение
, сохраняя остальные
- считать еще одну строку матрицы, добавлять ее в общую матрицу, снова считать ранг и т.п. до тех пор, пока ранг матрицы не станет равным ее числу ее столбцов (т.е. когда решение однозначно существует).
Я ручками делал так (мой метод кустарный, не факт, что хороший). Обозначим
-
-й симметрический многочлен,
. если
- симметрический многочлен от
, то его можно разбить в сумму многочленов, каждый из которых инвариантен относительно
(например
). Далее, с каждым таким многочленом работаем отдельно. Пусть
- число различных переменных в каждом одночлене
(говорить о
корректно, поскольку оно одно и то же для всех одночленов, поскольку
действует транзитивно на
). Если
, то
делит
- степень понижается и рассматриваем
. Если
и одночлен имеет вид
,
,
- отсортированные
без дублей, то тогда мы можем вычесть из
произведение симметрических многочленов, порожденных одночленами
(например
порождает
- порожденных в этом смысле), причем
, что потом позволяет уменьшить степень
, когда дойдем до
. Только не пугайтесь - это несложно. Частный случай: если мы хотим выразить
через
, то сначала по этому алгоритму следует отнять
- получим новый многочлен с
.
Пример: выразить
. Вычитаем
, подбираем коэффициент - получаем
- дальше уже понятно.
Сложность не оценю, но ручками было довольно легко, для
я точно работал меньше 5 часов
С одночленом подробнее напишу: пусть
- сумма образов при всех перестановках одночлена
. Представляет одночлен в "произведение по этажам"
и тогда вычитаем