Existe um algoritmo eficiente para equivalência de expressão?


14

por exemplo, ?xy+x+y=x+y(x+1)

As expressões são da álgebra comum do ensino médio, mas restritas à adição e multiplicação aritmética (por exemplo, ), sem inversões, subtrações ou divisões. Letras são variáveis.2+2=4;2.3=6

Se ajudar, podemos proibir qualquer expressão representável com valores numéricos diferentes de ; ou seja, não nem nem :1x23x4

  • multilinear , nenhum outro poder além de : está OK, mas não e nada que possa ser representado como esse, como em um expansão total para a soma dos produtos, por exemplo, não ; 1x+xyx1+x1y1x2+x3y4x(x+y)x2+y
  • todos , nenhum coeficiente diferente de : está OK, mas não , e nada que possa ser representado como tal, como em uma expansão completa para a soma de- produtos, por exemplo, não ; e x + x y 1. x + 1. x y 2 x + 3 x y a ( x + y ) + x ( a + b ) 2 a x + a y + b x1x+xy1x+1xy2x+3xyuma(x+y)+x(uma+b)2umax+umay+bx
  • nenhuma constante diferente de 1 : novamente, na soma de produtos totalmente expandida, por exemplo, não (uma+1)+(b+1)uma+b+2

Q. Existe um algoritmo eficiente para determinar se duas expressões são equivalentes?


Para ilustrar, aqui está um algoritmo de força bruta ineficiente com tempo exponencial:

expanda ambas as expressões totalmente para a soma de produtos , que pode ser facilmente verificada quanto à equivalência (apenas ignore o pedido, pois o comutador / associado pode reordenar).

Por exemplo,
a ( x + y ) + b ( x + y ) a x + a y + b x + b y(uma+b)(x+y)umax+umay+bx+by
uma(x+y)+b(x+y)umax+umay+bx+by


Esse parece ser um problema bem conhecido - mesmo os alunos do ensino médio aprendem maneiras manuais de resolvê-lo. Também é resolvido por verificadores / verificadores de teoremas automatizados, mas eles se concentram em aspectos mais sofisticados.

Aqui está um comprovador de teorema automatizado on-line em funcionamento: http://tryacl2.org/ , que mostra equivalência ao encontrar uma sequência de comutação / associação / distribuição etc:

xy+x+y=x+y(x+1) ?
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))--- 188 passos

y+x(y+1)=x+y(x+1) ?
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))--- 325 passos

Esta é a minha primeira pergunta aqui, por favor, deixe-me saber se eu escolhi o lugar errado, tags erradas, maneira errada de descrever / perguntar etc. Obrigado!
NB: esta pergunta foi reescrita em resposta a comentários
Obrigado a todos os respondentes! Eu aprendi muito.


3
A questão aqui precisa de alguns esclarecimentos. Em que campo você está operando? Os objetos como " " e " " nas suas expressões são elementos do campo ou variáveis? Na verdade, é um campo (ou seja, adição e multiplicação têm inversos)? Observe que a soma dos produtos não ajuda porque tem exponencialmente muitos termos. b ( a 1 + b 1 ) ( a 2 + b 2 ) ( a n + b n )ab(a1+b1)(a2+b2)(an+bn)
David Richerby

4
Se os objetos são variáveis ​​e a subtração é permitida, você está basicamente perguntando sobre o teste de identidade polinomial, que possui um algoritmo de tempo polinomial aleatório pelo lema de Schwartz – Zippel . iff e a idéia básica é que um polinômio que não seja identicamente zero não tem muitas raízes, portanto, se você começar a adivinhar as raízes aleatoriamente e encontrar muitas raízes, há uma alta probabilidade de que seu polinômio seja identicamente zero. f ( x ) - g ( x ) = 0f(x)=g(x)f(x)g(x)=0
David Richerby

2
Estou surpreso que ninguém tenha mencionado isso ainda, mas "se estiver no NP, não preciso me preocupar em encontrar um algoritmo polinomial" não faz sentido. Todo problema em P também está em NP. Você provavelmente quis perguntar se o problema é NP-complete (ou -hard).
Tom van der Zanden

2
Se você se esforçar com o básico, nossas perguntas de referência podem ser úteis para você.
Raphael

2
@ hyperpallium Antes de perguntar se um idioma (ou seja, um problema de decisão) está no NP, é melhor se você entendeu o que isso significa. Talvez as perguntas de referência às quais Raphael se relacionasse ajudassem.
Yuval Filmus

Respostas:


9

Seu problema reduz a zero o teste de polinômios multivariados, para os quais existem algoritmos aleatórios eficientes.

Suas expressões são todos polinômios multivariados. Aparentemente, suas expressões são construídas pelas seguintes regras: (a) se é uma variável, então é uma expressão; (b) se é uma constante, então é uma expressão; (c) se são expressões, e são expressões. Se é realmente isso que você pretendia, toda expressão é um polinômio multivariado sobre as variáveis.x c c e 1 , e 2 e 1 + e 2 e 1 e 2xxcce1,e2e1+e2e1e2

Agora, você quer saber se duas expressões são equivalentes. Isso equivale a testar se dois polinômios multivariados são equivalentes: dados e , você deseja saber se esses dois polinômios são equivalentes. Você pode testar isso subtraindo-os e verificando se o resultado é idêntico a zero: definap 2 ( x 1 , , x n )p1(x1,,xn)p2(x1,,xn)

q(x1,,xn)=p1(x1,,xn)p2(x1,,xn).

Agora são equivalentes se e somente se for o polinômio zero. qp1,p2q

Testar se é identicamente zero é o problema de teste zero para polinômios multivariados. Existem algoritmos eficientes para isso. Por exemplo, um exemplo de algoritmo é avaliar em muitos valores aleatórios de . Se você encontrar um valor de tal que , você saberá que não é identicamente zero, ou seja, não são equivalentes. Se, após muitas tentativas, todas forem zero, você poderá concluir que é identicamente zero (seq ( x 1 , , x n ) x 1 , , x n x 1 , , x n q ( x 1 , , x n ) q p 1 , p 2 q qqq(x1,,xn)x1,,xnx1,,xnq(x1,,xn)qp1,p2qqnão é identicamente zero, a probabilidade de que todos esses ensaios produzam zero pode ser exponencialmente baixa). O número de iterações que você precisa fazer está relacionado ao grau de ; consulte a literatura sobre teste de identidade polinomial para obter detalhes.q

Por exemplo, consulte https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma e http://rjlipton.wordpress.com/2009/11/30/the-curious-history-of-the- schwartz-zippel-lema /

Esses algoritmos se aplicam se você estiver trabalhando em um campo finito. Você não indicou em que campo / anel está trabalhando e se está tratando essas expressões como expressões formais (por exemplo, polinômios como objetos abstratos) ou como funções de . Se você estiver trabalhando em um campo finito, os métodos acima se aplicam imediatamente.FnF

Se você estiver tratando as expressões como objetos formais, suas expressões serão equivalentes a polinômios multivariados com coeficientes inteiros. Você pode testar a equivalência destes, escolhendo um grande nobre aleatório e teste de equivalência modulo , ou seja, no campo . Repita isso polinomialmente várias vezes, com diferentes valores aleatórios de , e você deve obter um algoritmo aleatório eficiente para testar a equivalência dessas expressões formais.r Z / r Z rrrZ/rZr


1
Por outro lado, seria difícil provar que, para cada expressão idêntica a zero, há uma prova não muito longa de que a expressão é idêntica a zero.

@RickyDemer, ótimo ponto! Boa observação. Eu interpretei a pergunta como perguntando sobre testar a equivalência em vez de provar isso, mas é uma observação muito boa. (Se você deseja exibir uma prova de equivalência na prática, suspeito que seja possível exibi-la, se você estiver disposto a fazer suposições criptográficas, para alguma definição de "prova" - por exemplo, um esquema que atinja a solidez na modelo oracle aleatório.)
DW

1
Obrigado! Estou tratando-os como objetos formais, sem inversões, divisão ou subtração (mas usando álgebra do ensino médio para esta pergunta; parece mais provável que já esteja resolvido). Você quer dizer, continue escolhendo primos aleatórios grandes , e isso está tratando as expressões como se fossem campos finitos sobre o conjunto subjacente de números inteiros ? Esse link da wiki diz que não há algoritmo determinístico subexponencial conhecido para esse teste zero. Você sabe se isso se aplica ao meu problema? [ 0 .. r - 1 ]r[0..r1]
hyperpallium

1
@ Hyperpallium, sim, exatamente isso que eu quero dizer. Sim, acredito que isso também se aplica ao seu problema. Por isso, sugeri um algoritmo aleatório - existem algoritmos aleatórios eficientes, mesmo que não existam algoritmos determinísticos eficientes conhecidos.
DW

Como apontado em um comentário acima, o OP não está funcionando em um campo finito, mas sim em uma semutração comutativa. Isso significa que não é garantido que existem inversos aditivos; portanto, "subtrair" as expressões para verificar a igualdade com zero não é uma operação válida.
apnorton

0

Para acompanhar as restrições de uma potência , um coeficiente e uma constante na pergunta:

Eles definem um subconjunto do problema do teste de identidade polinomial. Claramente, eles podem ser resolvidos com uma técnica que resolve o problema geral. A questão é se eles formam um subconjunto que é mais facilmente resolvido.

coeficiente único : em problemas sem isso, os termos podem ser combinados, facilitando o problema. Considere o triângulo do Teorema Binomial / Pascal para . Isso pode ser expandido um fator de cada vez, produzindo termos com ordens sobrepostas, por exemplo Os menos termos facilitam a expansão com o próximo fator: e novamente os termos são combinados, criando um problema menor e mais simples. Essa combinação de termos é uma forma de programação dinâmica.(uma+b)n(uma+b)(uma+b)=umauma+umab+umab+bb=umauma+2umab+bb(aa+2umab+bb)(uma+b)=umaumauma+2umaumab+umabb+umaumab+2umabb+bbb=umaumauma+3umaumab+3umabb+bbb

Ou seja, a possibilidade de combinar termos, criando um coeficiente diferente de um, facilita e não dificulta o problema.

(Embora haja mais trabalho em cálculo na multiplicação de coeficientes que não sejam um)

constantes não-uma são incluídas no argumento acima, considerando constantes como variáveis ​​com expoente zero.

poder único Eu não acho que isso faça alguma diferença. Embora expoentes não-um possam ser criados de mais de uma maneira (por exemplo, ), isso pode levar a sobreposição e combinação (como no triângulo Binomial Theorm / Pascal acima ), a combinação real só é possível se não forem permitidos coeficientes.a4=a2a2=a1a3

O exposto acima não é um argumento formal ou rigoroso. Baseia-se em uma suposição sobre o que dificulta o problema. Mas parece-me que a combinação de termos apenas cria um problema mais fácil - portanto, impedir isso pela única restrição de coeficiente não tornará o subconjunto mais fácil.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.