Analisis algoritma

jmpl|Grafik fungsi yang umum digunakan dalam analisis algoritma, menunjukkan jumlah operasi  versus ukuran masukan  untuk setiap fungsi
Dalam ilmu komputer, analisis algoritma adalah proses menemukan kompleksitas komputasional dari algoritma—jumlah waktu, penyimpanan, atau sumber daya lain yang dibutuhkan untuk mengeksekusinya. Biasanya, ini melibatkan penentuan fungsi yang menghubungkan ukuran masukan algoritma dengan jumlah langkah yang diambilnya (kompleksitas waktu) atau jumlah lokasi penyimpanan yang digunakannya (kompleksitas ruang). Suatu algoritma dikatakan efisien ketika nilai fungsi ini kecil, atau tumbuh lambat dibandingkan dengan pertumbuhan ukuran masukan. Masukan yang berbeda dengan ukuran yang sama dapat menyebabkan algoritma memiliki perilaku yang berbeda, sehingga deskripsi kasus terbaik, terburuk, dan rata-rata mungkin semuanya menarik secara praktis. Jika tidak ditentukan sebaliknya, fungsi yang menggambarkan kinerja suatu algoritma biasanya merupakan batas atas, yang ditentukan dari masukan kasus terburuk ke algoritma.

Istilah "analisis algoritma" dicetuskan oleh Donald Knuth. Analisis algoritma merupakan bagian penting dari teori kompleksitas komputasional yang lebih luas, yang menyediakan estimasi teoretis untuk sumber daya yang dibutuhkan oleh algoritma apa pun yang memecahkan masalah komputasional tertentu. Estimasi ini memberikan wawasan tentang arah pencarian yang wajar untuk algoritma yang efisien.

Dalam analisis teoretis algoritma, biasanya kompleksitas diestimasi dalam pengertian asimtotik, yaitu, untuk menaksir fungsi kompleksitas untuk input yang besarnya sembarang. Notasi Big O, Notasi Big Omega, dan Notasi Big Theta digunakan untuk tujuan ini. Misalnya, pencarian biner dikatakan berjalan dalam sejumlah langkah yang sebanding dengan logaritma ukuran  dari daftar yang diurutkan yang sedang dicari, atau di , secara umum "dalam waktu logaritmik". Biasanya estimasi asimptotik digunakan karena implementasi yang berbeda dari algoritma yang sama mungkin berbeda dalam efisiensinya. Namun efisiensi dari dua implementasi "wajar" dari algoritma tertentu terkait dengan faktor perkalian konstan yang disebut konstanta tersembunyi.

Pengukuran efisiensi yang tepat (tidak asimtotik) terkadang dapat dihitung, tetapi biasanya memerlukan asumsi tertentu mengenai implementasi algoritma tertentu, yang disebut model komputasi. Model komputasi dapat didefinisikan dalam istilah komputer abstrak, misalnya mesin Turing, dan/atau dengan mendalilkan bahwa operasi tertentu dieksekusi dalam satuan waktu. ... Bagi sebagian orang (misalnya programmer game),

 Catatan 

Kategori:Analisis algoritma
Kategori:Teori kompleksitas komputasional