Kompleksitas komputasi

10

Apa kompleksitas komputasi ?nn2,nN

Raphael
sumber
2
Apa yang sudah kamu coba? Mesin dan model biaya mana yang Anda asumsikan?
Raphael

Jawaban:

12

Dengan menggunakan transformasi Fourier cepat, perkalian pada bilangan bit dapat dilakukan dalam waktu (di mana tilde menandakan bahwa kita mengabaikan faktor polylogaritmik). Dengan kuadrat berulang, kita dapat menghitung dengan perkalian , dan setiap perkalian tidak melibatkan angka yang lebih besar dari , yang memiliki kira-kira bit. Jadi jumlah total waktu yang diperlukan adalah .kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)

Mikha
sumber
3

Diedit dalam menanggapi komentar Waktu untuk menghitung dapat didekomposisi menjadi waktu yang diperlukan untuk menghitung dan yang diperlukan untuk melakukan . Saya akan berasumsi bahwa mengalikan angka sedikit dengan angka sedikit membutuhkan waktu tepat dengan metode buku sekolah; tambahan, dll. adalah waktu yang konstan. Akibatnya, komputasi membutuhkan waktu.f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

Misalkan kita menggunakan eksponen biner untuk komputasi . Binary exponentiation melakukan dua jenis operasi dalam komputasi : mengkuadratkan produk saat ini, dan mengalikan produk saat ini dengan , sesuai dengan apakah bit saat ini dalam ekspansi biner adalah 0 atau 1. Dalam kasus terburuk , adalah kekuatan dua, sehingga eksponensial biner berulang kali mengkuadratkan produknya saat ini hingga mencapai jawaban. Perhatikan bahwa memiliki bit, sehingga jumlahnya kuadrat tersebut adalah . Ini adalah kasus yang kami analisis lebih lanjut di bawah ini.f(n)f(n)nn2n2n2m=2log2(n)m=m1

pertama membutuhkan waktu , menghasilkan -bit produk. kedua mengambil dua angka bit dan berjalan dalam waktu , menghasilkan produk -bit. Melanjutkan, langkah ke- membutuhkan waktu dan menghasilkan -bit produk. Proses ini berhenti pada langkah ke- ; Akibatnya, butuh waktut1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n .

Ketika biaya kuadrat awal sudah termasuk, kami merasa kami membutuhkan waktu paling banyak

Texp+log22n

Catatan

  • Saya menghilangkan beberapa lantai dan langit-langit dalam perhitungan, berharap itu tidak akan mempengaruhi jawaban secara material.
  • Saya sengaja menghilangkan analisis berbasis- demi batas atas yang tepat hanya untuk menjadi keras. O
  • Alasan di atas juga menjelaskan mengapa analisis saya sebelumnya cacat. The notasi yang digunakan dalam cara yang cepat-dan-lepas, dan itu mudah dihilangkan konstanta sehingga, misalnya, ajaib menjadi . OtiO(logn)
  • Perkalian dapat selalu dipercepat dengan FFT dan metode lainnya.
PKG
sumber
1
Bagaimana Anda mendapatkan kompleksitas untuk perhitungan ? O(1)n2
4
Saya akan mengatakan bahwa penggandaan dua angka bit membutuhkan waktu alih-alih waktu, Anda harus memperhitungkannya dalam biaya eksponensial biner juga. nO(logn)O(1)
Mark Dominus
2
Perhatikan bahwa hasil akhir memiliki bit. Sangat sulit untuk menghitung bit dalam waktu . n2log2nn2log2nO(logn)
Poin yang wajar, saya akan perhatikan
PKG
1
@ThomasAndrews: Itu tergantung pada model mesin dan biaya. Sudah lazim untuk mengasumsikan model RAM dengan biaya tambahan untuk penambahan.
Raphael