Masalah Anda tampaknya mengurangi pertanyaan sederhana berikut ini:
Diberikan dua fungsi di kelas fungsi, apakah kita memiliki F ( x ) = G ( x ) untuk semua x ? (Dengan kata lain, apakah mereka memiliki nilai yang sama di mana-mana?)F,GF(x)=G(x)x
Saya tidak tahu apakah ini decidable, untuk kelas fungsi ini. Jika ya, maka masalah Anda juga harus diperhitungkan.
Untuk masalah Anda, pendekatan umum adalah: secara simbolis membedakan untuk mendapatkan F ′ ( x ) , lalu periksa apakah kami memiliki F ′ ( x ) = G ( x ) untuk semua x .F(x)F′(x)F′(x)=G(x)x
Jadi langkah kuncinya adalah diferensiasi simbolis. Mari kita cari tahu bagaimana melakukannya secara lebih rinci. Kita dapat mendefinisikan kelas fungsi yang diizinkan secara rekursif:
F(x)::=c|x|ex|log(x)|sin(x)|cos(x)|tan(x)|F1(x)+F2(x)|F1(x)×F2(x)|F1(x)/F2(x)|F1(F2(x))
di mana berkisar pada konstanta dan rentang F , F 1 , F 2 atas fungsi.cF,F1,F2
Maka dimungkinkan untuk merancang algoritma rekursif untuk secara simbolis membedakan kelas fungsi ini, menggunakan aturan standar kalkulus (misalnya, aturan rantai, dll.). Secara khusus, kami dapat menangani setiap kasus di atas, dan menunjukkan secara berulang bahwa turunan dapat diekspresikan secara simbolis sebagai fungsi dalam kelas ini. Contohnya:
Jika , F ′ ( x ) = 0 .F(x)=cF′(x)=0
Jika , F ′ ( x ) = 1 .F(x)=xF′(x)=1
Jika , F ′ ( x ) = e x .F(x)=exF′(x)=ex
Jika , F ′ ( x ) = 1 / x .F(x)=log(x)F′(x)=1/x
Jika , F ′ ( x ) = cos ( x ) .F(x)=sin(x)F′(x)=cos(x)
Jika , F ′ ( x ) = 1 + ( tan ( x ) ) 2 .F(x)=tan(x)F′(x)=1+(tan(x))2
Jika , F ′ ( x ) = F ′ 1 ( x ) + F ′ 2 ( x ) .F(x)=F1(x)+F2(x)F′(x)=F′1(x)+F′2(x)
Jika , F ′ ( x ) = F ′ 1 ( x ) F 2 ( x ) + F 1 ( x ) F ′ 2 ( x ) .F(x)=F1(x)×F2(x)F′(x)=F′1(x)F2(x)+F1(x)F′2(x)
Jika , F ′ ( x ) = F ′ 1 ( F 2 ( x ) ) F ′ 2 ( x ) (aturan rantai).F( x )=F1(F2( x ) )F′( x ) = F′1( F2( x ) ) F′2( x )
Dan seterusnya. Dalam setiap kasus, jika berada dalam kelas fungsi yang diizinkan, maka begitu juga F ′ ( x ) , dan Anda dapat secara rekursif menyusun ekspresi simbolik untuk F ′ ( x ) - ini dikenal sebagai diferensiasi simbolis .F( x )F′( x )F′( x )
Akhirnya, yang tersisa adalah memeriksa apakah untuk semua x . Itulah masalah yang saya sebutkan di bagian atas jawaban saya.F′(x)=G(x)x
Ada metode sederhana untuk memeriksa apakah dua fungsi identik sama yang saya harapkan akan bekerja dengan baik dalam praktiknya. Algoritmanya adalah ini: berulang kali memilih nilai acak , dan periksa apakah F ( x ) = G ( x ) berlaku untuk nilai x tersebut . Jika itu berlaku dengan kesetaraan untuk banyak x yang dipilih secara acak , maka output "mereka sama identik". Jika Anda menemukan x yang F ( x ) ≠ G ( x ) , maka output "mereka berbeda".xF(x)=G(x)xxxF(x)≠G(x)
Tidak ada jaminan bahwa ini akan berhasil, tetapi untuk banyak kelas fungsi, output dari prosedur ini akan benar dengan probabilitas tinggi. Secara khusus, misalkan kita memiliki beberapa distribusi pada diwakili oleh variabel acak X dan beberapa ε > 0 sehingga Pr [ F ( X ) = 0 ] ≥ ε berlaku untuk semua F di kelas. Anggap pula kelas fungsi yang diizinkan ditutup dengan pengurangan (seperti kelas Anda). Maka r putaran prosedur di atas memberikan jawaban yang salah dengan probabilitas paling banyak (xXϵ>0Pr[F(X)=0]≥ϵFr .(1−ϵ)r
Juga, jika ada prosedur acak untuk pengujian kesetaraan polinomial, maka masalahnya dapat diputuskan.
Tetap bertanya apakah hasil seperti itu berlaku untuk kelas fungsi khusus Anda. Pernyataan di atas mungkin tidak berlaku. Namun, jika kita beruntung, mungkin kita bisa membuktikan sesuatu seperti berikut:
s∈NXsϵs>0Pr[F(X)=0]Fs
Jika ini benar, maka akan mengikuti bahwa ada algoritma acak untuk pengujian kesetaraan polinomial dan dengan demikian masalah Anda dapat ditentukan.