Wikipedia mencantumkan kompleksitas waktu penjumlahan sebagai , di mana adalah jumlah bit.n
Apakah ini batas bawah teori yang kaku? Atau apakah ini hanya kompleksitas dari algoritma tercepat yang dikenal saat ini. Saya ingin tahu, karena kompleksitas penjumlahan, menggarisbawahi semua operasi aritmatika lainnya dan semua algoritma yang menggunakannya.
Apakah secara teori tidak mungkin, untuk mendapatkan algoritma tambahan yang berjalan di ? Atau apakah kita terikat pada kompleksitas linier sebagai tambahan.
sumber
Agar analisis kompleksitas masuk akal secara formal, Anda harus menentukan model komputasi formal tempat algoritma dalam objek dieksekusi, atau, paling tidak, model biaya , yang menentukan apa operasi dasar dan biaya mereka.
Dalam sebagian besar konteks, operasi aritmatika diasumsikan memakan waktu . Ini biasanya masuk akal, karena kami tertarik pada kompleksitas algoritme terlepas dari jumlah yang terlibat. Ini disebut model biaya seragam .Θ(1)
Jika angka dapat tumbuh tanpa batas, atau kami tertarik untuk menganalisis operasi itu sendiri, operasi aritmatika dianggap memiliki biaya , sebanding dengan ukuran input.Θ(|x|)
Sekarang, dapatkah operasi memiliki biaya yang kurang dari itu? Mungkin, namun Anda harus mendefinisikan secara formal model komputasi di mana itu bisa terjadi.
sumber
Input untuk penambahan adalah dua angka acak . Karena mereka arbitrer, Anda harus membaca setiap bit, dan oleh karena itu algoritmenya adalah .Ω(n)
Bayangkan algoritma Anda berhasil menambahkan 1010100110 dan 0010010110 tanpa membaca setiap bit. Agar algoritma Anda dapat menambahkan input sewenang-wenang , saya harus dapat membalik salah satu bit ini secara acak, dan algoritme masih menampilkan penambahan yang benar (namun berbeda). Tetapi jika algoritma Anda tidak membaca setiap bit, bagaimana ia bisa tahu bahwa input yang dibalik berbeda dari input asli?
sumber