Seperti yang ditulis, masalahnya membutuhkan waktu , di mana m adalah panjang input (Anda sayangnya digunakan n untuk sesuatu yang lain). Memang, jika misalnya α adalah bilangan bulat positif (diberikan oleh polinomial minimal x - α ) dan n = 0 , ukuran output eksponensial dalam ukuran input. Batas ini tentu saja optimal, karena ada sejumlah cara bagaimana menghitung hasilnya dalam waktu 2 O ( m ) .2Ω(m)mnαx−αn=02O(m)
Biarkan saya mencoba merumuskan kembali pertanyaan itu sehingga lebih masuk akal. Masalah utama adalah bagaimana memilih representasi input dan output, serta gagasan aproksimasi, sehingga eksponensial berpeluang untuk diperhitungkan dalam waktu polinomial.
Salah satu cara disebutkan oleh Kaveh dalam komentar: batasi domain hingga interval terbatas tetap. Meskipun ini berfungsi, itu tidak perlu membatasi; khususnya, tidak ada cara yang baik bagaimana mengubah angka aljabar menjadi angka yang dibatasi sehingga eksponensial mereka ada hubungannya satu sama lain.
Pendekatan yang lebih fleksibel adalah merepresentasikan input sebagai angka titik tetap , dan output sebagai angka titik mengambang . Untuk lebih spesifik, representasi titik tetap adalah string
menunjukkan ± ∑ j a j 2 j , di mana a j ∈ { 0 , 1 } , dan representasi titik mengambang adalah
± 2 e ×
±arar−1…a0.a−1…a−s
±∑jaj2jaj∈{0,1}
dengan interpretasi yang sama, di mana
e adalah bilangan bulat biner, dan
sebuah 0 = 1 . (Sebagai pengecualian, kami juga memungkinkan
0 untuk mewakili dirinya sendiri.) Sebuah perkiraan nyata
x untuk
m bit
mutlakakurasi adalah nyata
x ' sehingga
| x - x ′ | < 2 - m , dan perkiraan ke
m bitakurasi
relatifadalah
±2e×a0.a−1…a−s
ea0=10xmx′|x−x′|<2−mm sedemikian rupa
| 1 - x ′ / x | < 2 - m . Kami akan menggunakan akurasi absolut untuk perkiraan titik tetap, dan akurasi relatif untuk perkiraan titik mengambang. Oleh karena itu dalam kedua kasus, kami juga dapat mengasumsikan
s ≤ m (hingga kehilangan satu bit akurasi).
x′|1−x′/x|<2−ms≤m
Representasi titik tetap dan titik mengambang dari rasional Gaussian diad, dan perkiraan bilangan kompleks, didefinisikan dengan cara yang sama, menggunakan sepasang real. Di mana-mana di bawah ini, menunjukkan ukuran total input.n
xmexmxmlogxm
Selama kita mematuhi batas waktu menjalankan memenuhi beberapa kondisi keteraturan ringan, dan mengabaikan faktor multiplikasi konstan, kita memiliki:
- a2exp(a2−t)=a2−t+a22−2t−1+O(a32−3t)ta
- Eksponensial dan logaritma memiliki kompleksitas yang sama. Alasannya adalah bahwa kita dapat menghitung kebalikan dari fungsi yang bagus dengan iterasi Newton (atau metode yang lebih canggih seperti dalam Brent ) menggunakan evaluasi fungsi itu sendiri. Iterasi biasanya melibatkan multiplikasi atau divisi, tetapi kita dapat membelinya pada poin sebelumnya.
αfc,ρ|c−α|<ραf
αmαm
Reeααmeαm
Fakta: Hingga faktor linier, kompleksitas eksponensial bilangan aljabar sama dengan kompleksitas perkiraan bilangan aljabar ditambah kompleksitas eksponensial kompleks.
αm+O(1)αeαm
eα
Ini membagi pertanyaan menjadi dua masalah yang tidak saling berkaitan. Batas atas yang paling dikenal pada eksponensial adalah
nM(n)O(M(n)logn)
Ω(M(n))M(n)nlogn2O(log∗n)
O~(f(n))O(f(n)polylog(f(n)))
Untuk perkiraan akar sebenarnya , Pan dan Tsigaridas memberikan:
O~(d2τ+dm)d=deg(f)τf
O~(d3+d2m)f1+1/logd
eαReeαReeα≪Imeαx+iyeαmy2−mxx2−m
Untuk eksponensial rasional yang tepat, kita dapat menghindari masalah:
α=x+iymx,yReeαmO(M(n)logn)
Reeα=excosyexcosy2−mk2y/πcosy±cosy′±siny′y′=y−kπ2|y′|≤π/4siny′y′siny′mm+log|y′−1|y=u/vu,vy′π
∣∣∣π−2ukv∣∣∣≤2|y′|k.
πν7.6063|y′|≥12kν−1vν,
log|y′−1|y′siny′y′siny′≈y′
αlog|y′|deg(f)