misal ?
Ekspresi berasal dari aljabar sekolah menengah biasa, tetapi terbatas pada penambahan dan perkalian aritmatika (misalnya ), tanpa inversi, pengurangan atau pembagian. Surat adalah variabel.
Jika ini membantu, kami dapat melarang ekspresi apa pun yang dapat diwakili dengan nilai numerik selain ; yaitu bukan atau atau :x 2 3 x 4
- multilinear , tidak ada kekuatan selain : tidak apa-apa, tetapi tidak , dan bukan apa pun yang dapat direpresentasikan seperti itu, seperti dalam ekspansi penuh ke jumlah produk misalnya bukan ; x + x y ≡ x 1 + x 1 y 1 x 2 + x 3 y 4 x ( x + y ) ≡ x 2 + y
- semua satu , tidak ada koefisien selain : OK, tetapi tidak , dan bukan apa pun yang dapat direpresentasikan seperti itu, seperti dalam ekspansi penuh ke jumlah produk misalnya bukan ; dan
- tidak ada konstanta selain : lagi, dalam penjumlahan produk yang diperluas sepenuhnya mis. tidak
Apakah ada algoritma yang efisien untuk menentukan apakah dua ekspresi setara?
Sebagai ilustrasi, berikut ini adalah algoritma brute-force yang tidak efisien dengan waktu eksponensial:
perluas kedua ekspresi sepenuhnya menjadi jumlah produk , yang dapat dengan mudah diperiksa kesetaraannya (abaikan saja pesanan, karena perjalanan / rekan dapat memesan ulang).
mis.
Ini tampaknya masalah yang terkenal - bahkan siswa sekolah menengah diajarkan cara manual untuk menyelesaikannya. Ini juga diselesaikan oleh pembalik / pemeriksa teorema otomatis, tetapi mereka berkonsentrasi pada aspek yang lebih canggih.
Inilah prover teorema otomatis online yang berfungsi: http://tryacl2.org/ , yang menunjukkan kesetaraan dengan menemukan urutan perjalanan / asosiasi / distribusi dll:
?
(thm (= (+ (* x y) x y) (+ x (* y (+ x 1))) ))
--- 188 langkah
?
(thm (= (+ y (* x (+ y 1))) (+ x (* y (+ x 1))) ))
--- 325 langkah
Ini adalah pertanyaan pertama saya di sini, jadi tolong beri tahu saya jika saya telah memilih tempat yang salah, tag yang salah, cara menggambarkan / bertanya dll. Terima kasih!
NB: pertanyaan ini telah ditulis ulang sebagai tanggapan terhadap komentar
Terima kasih kepada semua responden! Saya sudah belajar banyak.
sumber
Jawaban:
Masalah Anda berkurang menjadi nol pengujian polinomial multivarian, yang memiliki algoritma acak yang efisien.
Ekspresi Anda semuanya polinomial multivarian. Rupanya, ekspresi Anda dibangun oleh aturan berikut: (a) jika adalah variabel, maka x adalah ekspresi; (B) jika c adalah konstanta, maka c adalah ekspresi; (c) jika e 1 , e 2 adalah ekspresi, maka e 1 + e 2 dan e 1 e 2 adalah ekspresi. Jika memang itu yang Anda maksudkan, setiap ekspresi adalah polinomial multivarian atas variabel.x x c c e1,e2 e1+e2 e1e2
Sekarang, Anda ingin tahu apakah dua ekspresi setara. Ini sama dengan menguji apakah dua polinomial multivariat setara: diberikan dan p 2 ( x 1 , ... , x n ) , Anda ingin tahu apakah kedua polinomial ini setara. Anda dapat menguji ini dengan mengurangi mereka dan memeriksa apakah hasilnya sama dengan nol: definep1(x1,…,xn) p2(x1,…,xn)
Sekarang sama dengan jika dan hanya jika q adalah nol polinomial.p1,p2 q
Menguji apakah sama dengan nol adalah masalah pengujian nol untuk polinomial multivarian. Ada algoritma yang efisien untuk itu. Sebagai contoh, salah satu contoh algoritma adalah untuk mengevaluasi q ( x 1 , ... , x n ) pada banyak nilai acak x 1 , ... , x n . Jika Anda menemukan nilai x 1 , ... , x n sedemikian sehingga q ( x 1 , ... , x n ) , maka Anda tahu bahwa qq q(x1,…,xn) x1,…,xn x1,…,xn q(x1,…,xn) q tidak identik nol, yaitu, tidak setara. Jika setelah banyak percobaan semuanya nol, maka Anda dapat menyimpulkan bahwa q sama dengan nol (jika q tidak sama dengan nol, probabilitas bahwa semua percobaan tersebut menghasilkan nol dapat dibuat rendah secara eksponensial). Jumlah iterasi yang perlu Anda lakukan terkait dengan tingkat q ; lihat literatur tentang pengujian identitas polinomial untuk detailnya.p1,p2 q q q
Misalnya, lihat https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma dan http://rjlipton.wordpress.com/2009/11/30/the-Curious-history-of-the- schwartz-zippel-lemma /
Algoritma ini berlaku jika Anda mengerjakan bidang yang terbatas. Anda tidak menyatakan apa bidang / cincin Anda bekerja di, dan apakah Anda memperlakukan ekspresi ini sebagai ekspresi formal (misal, polinomial sebagai objek abstrak) atau sebagai fungsi dari . Jika Anda mengerjakan bidang yang terbatas, metode di atas berlaku segera.Fn→F
Jika Anda memperlakukan ekspresi sebagai objek formal, maka ekspresi Anda setara dengan polinomial multivarian dengan koefisien integer. Anda dapat menguji kesetaraan ini dengan memilih besar acak prime dan pengujian kesetaraan modulo r , yaitu, di bidang Z / r Z . Ulangi ini berkali-kali secara polin, dengan nilai acak r yang berbeda , dan Anda harus mendapatkan algoritma acak yang efisien untuk menguji kesetaraan ekspresi formal ini.r r Z/rZ r
sumber
Untuk menindaklanjuti kendala satu-kekuatan , satu-koefisien dan satu-konstanta dalam pertanyaan:
Ini menentukan subset masalah pengujian identitas polinomial. Jelas, mereka dapat diselesaikan dengan teknik yang memecahkan masalah umum. Pertanyaannya adalah apakah mereka membentuk subset yang lebih mudah dipecahkan.
That is, the possibility of combining terms, creating a non-one coefficient, makes the problem easier not harder.
(Although there is more work in calculation in multiplying non-one coefficients)
non-one constants are included in the above argument by considering constants as variables with zero exponent.
one-power I don't think this makes any difference. Although non-one exponents can be created in more than one way (e.g.a4=a2a2=a1a3 ), and this can lead to overlap and combination (as in the Binomial Theorm/Pascal's triangle above), actual combination is only possible if non-one coefficients are allowed.
The above is not a formal or rigorous argument. It rests on an assumption about what makes the problem difficult. But it does seem to me that combining terms only makes for an easier problem - so preventing this by the one coefficient constraint is not going to make the subset easier.
sumber