Pertanyaan: Diberi alami bit , bagaimana cara menghitung hanya menggunakan penambahan dan pergeseran (bit)?
Kiatnya adalah menggunakan pencarian biner. Namun, saya tidak dapat mencapai kompleksitas yang diperlukan (saya mendapat ).
Apa yang dimaksud dengan using only $O(n)$ (bit) additions and shifts
:
Ini adalah latihan dalam buku algoritma.
Menurut pendapat saya, itu berarti menambahkan dua, katakanlah bit, bilangan alami biaya dan menggeser, katakanlah bit, bilangan alami juga biaya . Maka kita hanya diperbolehkan menggunakan operasi kali.
Tidak disebutkan biaya perbandingan. Saya kira kita dapat mengabaikannya atau berasumsi bahwa membandingkan dua, katakanlah bit, bilangan alami juga berharga .
Saya algoritma :
- Tentukan kisaran jumlah bit dari :
Oleh karena itu,
t_1 \ triangleq \ lfloor \ frac {n-1} {2} \ rfloor + 1 \ le t \ le \ lceil \ frac {n} {2} \ rceil + 1 \ triangleq t_2.
- Pencarian biner: Temukan antara dan menggunakan pencarian biner. Untuk setiap nomor , untuk menghitung menggunakan penambahan dan pergeseran sebagai primitif dan membandingkannya dengan .
Kompleksitasnya adalah untuk kali pencarian biner dan komputasi , yang masing-masing membutuhkan penambahan dan pergeseran.