Untuk mengambil contoh sepele, Anda tidak dapat menemukan angka terbesar dari sekumpulan angka tanpa memeriksa semuanya yang membutuhkan waktu linier. Tidak ada bukti besar. Tetapi ada algoritma yang tidak selalu mengharuskan membaca semua data. Contoh yang bagus adalah mencari semua kemunculan pola dalam sebuah string, yang mungkin tidak perlu membaca seluruh string (algoritma Boyer-Moore). Tetapi saya tidak boleh mengulangi apa yang sudah dijawab, mungkin lebih baik daripada saya.n
Namun, ada poin dalam pertanyaan yang menyerukan beberapa komentar lebih lanjut tentang batas bawah (atau batas kompleksitas pada umumnya).
Sebenarnya pilihan apa yang merupakan langkah komputasi tunggal tidak relevan, selama langkah-langkah komputasi dapat dianggap memiliki upperbound yang konstan (dan batas bawah). Hasil kerumitan akan sama karena didefinisikan hingga konstanta. Mengambil 3 perbandingan sebagai operasi unit, atau hanya satu, tidak ada bedanya.
Hal yang sama berlaku untuk ukuran data yang berfungsi sebagai referensi untuk mengevaluasi biaya perhitungan. Mengambil bilangan bulat tunggal, atau dua bilangan bulat sebagai satuan ukuran tidak ada bedanya.
Namun, kedua pilihan tersebut harus terkait.
Anda dapat mempertimbangkan bahwa angka adalah satu unit data jika Anda menganggap bahwa operasi pada bilangan bulat, seperti penambahan atau perbandingan, adalah operasi unit. Anda juga dapat mempertimbangkan bahwa itu adalah unit data karena dibutuhkan digit untuk mewakili angka. Kemudian, tentu saja, penambahan dan perbandingan bukan lagi unit operasi, dan biayanya tergantung pada nilai-nilai operan.nlognO(logn)
Apakah suatu operasi dapat dianggap memiliki biaya satuan terkait erat dengan data apa yang dapat dianggap memiliki ukuran satuan. Dan itu tergantung pada tingkat abstraksi yang Anda pilih untuk model perhitungan Anda.