Problem polega na obliczeniu wielomianu . Załóżmy, że wszystkie współczynniki mieszczą się w słowie maszynowym, tzn. Można nimi manipulować w czasie jednostkowym.
Możesz zrobić czas , stosując FFT w sposób drzewny. Czy możesz zrobić O ( n log n ) ?
Problem polega na obliczeniu wielomianu . Załóżmy, że wszystkie współczynniki mieszczą się w słowie maszynowym, tzn. Można nimi manipulować w czasie jednostkowym.
Możesz zrobić czas , stosując FFT w sposób drzewny. Czy możesz zrobić O ( n log n ) ?
Odpowiedzi:
Ostrzeżenie: To nie jest jeszcze pełna odpowiedź. Jeśli argumenty wiarygodności sprawiają, że czujesz się niekomfortowo, przestań czytać.
Rozważę wariant, w którym chcemy pomnożyć (x - a_1) ... (x - a_n) przez liczby zespolone.
Problem jest podwójny przy ocenie wielomianu w n punktach. Wiemy, że można tego dokonać sprytnie w czasie O (n log n), kiedy zdarza się, że n-te korzenie są jednością. Wykorzystuje to istotną symetrię regularnych wielokątów, które leżą u podstaw szybkiej transformacji Fouriera. Ta transformacja występuje w dwóch postaciach, zwanych tradycyjnie decymacją w czasie i decymacją w częstotliwości. W rzucie drugim opierają się na podwójnej parze symetrii równomiernych regularnych wielokątów: blokującej się symetrii (regularny sześciokąt składa się z dwóch blokujących się równobocznych trójkątów) i symetrii rozkładania się wentylatora (przeciąć regularny sześciokąt na pół i rozłożyć elementy jak wentylatory w trójkąty równoboczne).
Z tej perspektywy wydaje się wysoce nieprawdopodobne, aby istniał algorytm O (n log n) dla dowolnego zestawu n punktów bez specjalnych symetrii. Oznaczałoby to, że w zwykłych wielokątach nie ma nic wyjątkowego algorytmicznie w porównaniu z losowymi zestawami punktów na płaszczyźnie złożonej.