
Memahami Algoritma Langkah pertama untuk memahami mengapa studi dan pengetahuan tentang algoritma sangat penting adalah dengan mendefinisikan dengan tepat apa yang kami maksud dengan algoritma. Menurut buku teks algoritma populer Pengantar algoritma (Edisi Kedua oleh Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein), “algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang mengambil beberapa nilai, atau kumpulan nilai, sebagai masukan dan menghasilkan beberapa nilai, atau kumpulan nilai sebagai keluaran. ” Dengan kata lain, memahami algoritma seperti peta jalan untuk menyelesaikan tugas yang ditentukan dengan baik. Jadi, potongan kode yang menghitung istilah deret Fibonacci adalah implementasi dari algoritma tertentu. Bahkan fungsi sederhana untuk menambahkan dua angka adalah algoritma dalam arti tertentu, meskipun sederhana.
Beberapa algoritma, seperti yang menghitung deret Fibonacci, bersifat intuitif dan mungkin tertanam secara bawaan ke dalam pemikiran logis dan keterampilan pemecahan masalah kita. Namun, bagi sebagian besar dari kita, algoritma kompleks paling baik dipelajari sehingga kita dapat menggunakannya sebagai blok bangunan untuk pemecahan masalah logis yang lebih efisien di masa depan. Bahkan, Anda mungkin terkejut mengetahui betapa banyak algoritma rumit yang digunakan orang setiap hari saat mereka memeriksa email atau mendengarkan musik di komputer mereka. Artikel ini akan memperkenalkan beberapa ide dasar yang terkait dengan analisis algoritma, dan kemudian mempraktikkannya dengan beberapa contoh yang menggambarkan mengapa penting untuk mengetahui tentang algoritma.
Analisis Runtime
Salah satu aspek terpenting dari suatu algoritma adalah seberapa cepat algoritma itu. Seringkali mudah untuk membuat algoritma untuk memecahkan masalah, tetapi jika algoritma terlalu lambat, kembali ke papan gambar. Karena kecepatan pasti dari suatu algoritma bergantung pada di mana algoritma dijalankan, serta detail pasti implementasinya, ilmuwan komputer biasanya berbicara tentang runtime relatif terhadap ukuran input. Misalnya, jika input terdiri dari bilangan bulat N, algoritma mungkin memiliki waktu proses yang sebanding dengan N2, yang direpresentasikan sebagai O (N2). Artinya, jika Anda menjalankan implementasi algoritma di komputer dengan masukan berukuran N, diperlukan C * N2 detik, dengan C adalah beberapa konstanta yang tidak berubah dengan ukuran masukan.
Namun, waktu eksekusi dari banyak algoritma kompleks dapat bervariasi karena faktor selain ukuran input. Misalnya, algoritma pengurutan dapat berjalan jauh lebih cepat ketika diberikan satu set bilangan bulat yang sudah diurutkan daripada jika diberikan rangkaian bilangan bulat yang sama dalam urutan acak. Akibatnya, Anda sering mendengar orang berbicara tentang runtime kasus terburuk, atau runtime kasus rata-rata. Runtime kasus terburuk adalah berapa lama waktu yang dibutuhkan untuk menjalankan algoritma jika diberikan masukan yang paling berbahaya dari semua kemungkinan masukan. Runtime kasus rata-rata adalah rata-rata berapa lama waktu yang dibutuhkan algoritma untuk berjalan jika diberikan semua masukan yang memungkinkan. Dari keduanya, kasus terburuk seringkali lebih mudah untuk dipikirkan, dan oleh karena itu lebih sering digunakan sebagai patokan untuk algoritma tertentu. Proses menentukan runtime kasus terburuk dan kasus rata-rata untuk algoritma tertentu bisa jadi rumit, karena biasanya tidak mungkin menjalankan algoritma pada semua masukan yang memungkinkan. Ada banyak sumber online bagus yang dapat membantu Anda memperkirakan nilai-nilai ini.
