por exemplo, ?
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.
Se ajudar, podemos proibir qualquer expressão representável com valores numéricos diferentes de ; ou seja, não nem nem :
- 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 ;
- 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 x
- nenhuma constante diferente de : novamente, na soma de produtos totalmente expandida, por exemplo, não
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
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:
?
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))
--- 188 passos
?
(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.
fonte
Respostas:
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 2x x c c e1,e2 e1+e2 e1e2
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)
Agora são equivalentes se e somente se for o polinômio zero. qp1,p2 q
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 qq q(x1,…,xn) x1,…,xn x1,…,xn q(x1,…,xn) q p1,p2 q q nã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.Fn→F
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 rr r Z/rZ r
fonte
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.( a + b )n ( a + b ) ( a + b ) = a a + a b + a b + b b = a a + 2 a b + b b ( a a + 2 a b + b b ) ( a + b ) = a a a + 2 a a b + a b b + a a b + 2 a b b + b b b = a a a + 3 a a b + 3abb+ b b b
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.uma4=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.
fonte