Niech będzie wielomianem nad ustalonym skończonym polem. Załóżmy, że podano nam wartość w pewnym wektorze i wektorze .
Teraz chcemy obliczyć wartość na wektorze taki sposób, że i różnią się dokładnie w jednej pozycji (innymi słowy, odwracamy dokładnie jeden bit w ). Jaka jest przestrzeń i czas kompromisów dla tego problemu?
Na przykład, jeśli jest liczbą jednomianów w , można przechowywać współczynniki i wartości wszystkich jednomianów w . Jeśli jest odwrócone, ustalamy wartość każdego monomialu zawierającego a następnie wartość podstawie zapisanych informacji. Ogólnie potrzebujemy czasu i przestrzeni.
(Nie mówię nic o tym, jak celowo identyfikujemy monomialy zawierające . Możesz wybrać dowolną rozsądną reprezentację , w przykładzie zakładam, że przechowujemy listę monomialów zawierających dla każdego .)
Czy jest coś lepszego?
źródło
Łatwo jest zmodyfikować sposób przechowywania monomialów, tak aby każda aktualizacja trwała tylko proporcjonalnie do liczby zmienionych monomialów: wystarczy zaktualizować całkowitą wartość wielomianową, dodając nową wartość i odejmując starą wartość dla każdego zmienionego monomialu.
Jeśli masz formułę do odczytu (tj. Każda zmienna pojawia się na jednym liściu drzewa formuły, a każdy węzeł wewnętrzny jest operacją arytmetyczną z dwoma wejściami, jak plus lub razy), możesz zachować wartość P w logarytmii czas na aktualizację za pomocą drzewa kompresji prowizji nad formułą. Stosując to podejście do dowolnej formuły, czas na aktualizację zmiennej, która pojawia się k razy, będzie wynosił O ( k log N ), gdzie N jest rozmiarem formuły. Tak więc, z wyjątkiem współczynnika logarytmicznego, uogólnia on granicę liczby zmienionych jednomianów i stosuje się do bardziej ogólnych typów rozszerzania wielomianu do formuły.P. P. k O ( k logN.) N.
źródło