ad es. ?
Le espressioni provengono dalla normale algebra del liceo, ma sono limitate all'aggiunta e alla moltiplicazione aritmetica (ad es. ), senza inversioni, sottrazioni o divisioni. Le lettere sono variabili.
Se aiuta, possiamo vietare qualsiasi espressione rappresentabile con valori numerici diversi da ; cioè non né né :
- multilineare , nessun potere diverso da : è OK, ma non , e non tutto ciò che potrebbe essere rappresentato come quello, come in una piena espansione per riassumere -di-prodotti, ad esempio non ;
- tutto uno , nessun coefficiente diverso da : è OK, ma non , e non tutto ciò che potrebbe essere rappresentato come quello, come in una piena espansione a somma dei prodotti, ad es. non ; e
- nessuna costante diversa da : di nuovo, nella somma dei prodotti completamente espansa, ad es. no
Esiste un algoritmo efficiente per determinare se due espressioni sono equivalenti?
Per illustrare, ecco un inefficiente algoritmo a forza bruta con tempo esponenziale:
espandi completamente entrambe le espressioni alla somma dei prodotti , che può essere facilmente verificata per equivalenza (basta ignorare l'ordine, poiché il tragitto giornaliero / associato può essere riordinato).
es.
Questo sembra un problema ben noto - anche agli studenti delle scuole superiori vengono insegnati modi manuali per risolverlo. È anche risolto da tester / controllori di teoremi automatizzati, ma si concentrano su aspetti più sofisticati.
Ecco un proveratore di teoremi automatizzato online funzionante: http://tryacl2.org/ , che mostra l'equivalenza trovando una sequenza di permuta / associa / distribuisci ecc:
? --- 188 passaggi
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))
? --- 325 passi
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))
Questa è la mia prima domanda qui, quindi per favore fatemi sapere se ho scelto il posto sbagliato, i tag sbagliati, il modo sbagliato di descrivere / chiedere ecc. Grazie!
NB: questa domanda è stata riscritta in risposta ai commenti
Grazie a tutti i rispondenti! Ho imparato molto