Deixe ser um polinómio de multi-variada com coeficientes de mais de um campo . A multilinearização de , denotada por , é o resultado da substituição repetida de cada x_i ^ d por d> 1 por x_i . O resultado é obviamente um polinômio multilinear.p x d i d > 1 x i
Considere o seguinte problema: dado um circuito aritmético sobre e dados os elementos de campo , calcule .
Pergunta: Supondo que a aritmética de campo possa ser feita em tempo unitário, existe um algoritmo de tempo polinomial para isso? Adicionado mais tarde: eu também estaria interessado no caso especial em que é realmente uma fórmula (um circuito de fan-out ).
cc.complexity-theory
polynomials
Slimton
fonte
fonte
Respostas:
No caso de o campo tamanho de pelo menos , acho que esse problema é difícil. Mais especificamente, acho que se o acima pode ser resolvido com eficiência para desse tamanho, o CNF-SAT possui algoritmos aleatórios eficientes. Digamos que recebemos uma fórmula CNF . Pode-se facilmente criar um circuito aritmético que calcula uma `` aritmetização '' de , onde o polinômio concorda com a fórmula nas entradas - . Considere a multilinearização de . Observe que2 N F φ C p φ p φ 0 1 q p q p φ { 0 , 1 } nF 2n F φ C p φ p φ 0 1 q p q concorda com portanto, em .p φ {0,1}n
Eu afirmo que é diferente de zero se for satisfatório. Claramente, se , então não pode ser satisfeito. Por outro lado, pode-se mostrar que qualquer polinômio multilinear diferente de zero não pode desaparecer em todos os . Isso implica que um diferente de zero (e, portanto, o correspondente ) não desaparece em alguma entrada em .φ q = 0 φ { 0 , 1 } n q φ { 0 , 1 } nq φ q=0 φ {0,1}n q φ { 0 , 1 }n
Portanto, verificar a satisfação de é equivalente a verificar se é diferente de zero. Digamos, agora, que poderíamos avaliar em um campo grandeq q q Fφ q q . Então, usando o Lema de Schwartz-Zippel, poderíamos testar a identidadeusando um algoritmo aleatório eficiente e verificar se é o polinômio zero (o tamanho deé usado para limitar o erro no Lema de Schwartz-Zippel).F q F
fonte
Suponha que exista um algoritmo polytime que forneceu e → a calculou o resultado da multi-linearização de C em → a . (wlog, assumirei que a saída → b será um vetor de números binários p- bits b i é k se b i , k for um.)C( x⃗ )∈F(x⃗ ) a⃗ C a⃗ b⃗ p bi k bi,k
Desde , existe um circuito booleano polysize que dada a codificação do circuito aritmético e os valores para as variáveis calcula a multi-linearização do circuito aritmético nas entradas. Vamos chamar esse circuito M .P⊆P/poly M
Seja um circuito aritmético arbitrário. Corrija as variáveis do circuito booleano M que descrevem o circuito aritmético, para que tenhamos um circuito booleano que calcula a multi-linearização de C em determinadas entradas.C M C
Nós podemos transformar este circuito para um circuito aritmético sobre notando que x p - 1 é 1 para todos os valores, mas 0 de maneira que primeiro levantar todas as entradas para a alimentação p - 1 . Substituir cada f ∧ g portão por multiplicação f . g , cada f ∨ g portão por f + g - f . g e cada ¬ f gate por 1 - f .Fp xp−1 1 0 p−1 f∧g f.g f∨g f+g−f.g ¬f 1−f
Pela suposição que fizemos acima sobre o formato da saída, podemos transformar a saída de binária em valores acima de . Tome a saída para b i e combine-os para obter ∑ 0 ≤ k ≤ p - 1 k b i , k .Fp bi ∑0≤k≤p−1kbi,k
Também podemos converter a entrada fornecida como valores acima de para a forma binária, pois existem polinômios passando por qualquer número finito de pontos. Por exemplo, se estamos trabalhando no mod 3 , considere os polinômios 2 x ( x + 1 ) e 2 x ( x + 2 ) que fornecem o primeiro e o segundo bits da entrada x ∈ F 3 .Fp mod3 2x(x+1) 2x(x+2) x∈F3
Combinando estes temos um circuito aritmético sobre computar a multi-linearização de C com tamanho polynomail no tamanho de C .Fp C C
fonte