Блог пользователя zeliboba

Автор zeliboba, 11 лет назад, По-русски

Знает ли кто-нибудь быстрый способ вычисления элементарных симметрических многочленов от n переменных?

Можно вычислить сразу все за , перемножив многочлены с помощью бпф и взяв коэффициенты произведения. Но если нужно вычислять по модулю, то это уже не очень удобно, а если модуль не простой, то совсем плохо.

Можно вычислить все квадратичной динамикой, но хочется что-нибудь побыстрее.

  • Проголосовать: нравится
  • +24
  • Проголосовать: не нравится

»
11 лет назад, # |
Rev. 2   Проголосовать: нравится -6 Проголосовать: не нравится

Как в тему) Как посчитать количество комутирующих перестановок к даной? Я так понял что надо найти количество возможных вот этих самых симетрических многочленов. Судя по этому, в самом начале.

  • »
    »
    11 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится +6 Проголосовать: не нравится

    Количество коммутирующих перестановок сильно проще считается. Можно доказать, что в любой группе

    , где N(x) — множество элементов коммутирующих с x, G — группа (в данном случае группа перестановок мощности n!), S(x) — множество сопряженных к x элементов. В группе перестановок легко посчитать все сопряженные, т.к. это просто все перестановки с таким цикловым типом.

»
11 лет назад, # |
  Проголосовать: нравится -36 Проголосовать: не нравится

Умножать Карацубой?

»
10 лет назад, # |
  Проголосовать: нравится +14 Проголосовать: не нравится

Недавно столкнулся с этой же проблемой и понял, что все очень просто. Надо перемножать многочлены с помощью БПФ и после каждого перемножения брать коэффициенты по модулю (главное следить за точностью)

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

А как за O(NlogN)? Я умею только перемножать их, вытаскивая два очередных многочлена из очереди, перемножая их, и кладя результат в конец очереди (получится порядок умножения а-ля дерево отрезков), но это будет работать за .

Более того, я писал ровно эту задачу именно так, хотя и не припомню где именно.

  • »
    »
    10 лет назад, # ^ |
      Проголосовать: нравится 0 Проголосовать: не нравится

    Есть довольно хитрый алгоритм, я его пару лет назад видел в одной книжке по вычислительной математике, только сейчас не могу вспомнить ни книжку, ни сам алгоритм =)