Dalam pengertian yang paling umum, sebuah algoritma adalah setiap set instruksi rinci yang menghasilkan keadaan akhir yang dapat diprediksi dari awal yang diketahui. Namun, algoritma hanya sebaik instruksi yang diberikan, dan hasilnya akan salah jika algoritma tidak didefinisikan dengan benar.
Contoh Algoritma
Contoh umum dari suatu algoritma adalah instruksi untuk merakit pesawat model. Mengingat set awal sejumlah bagian yang ditandai, seseorang dapat mengikuti instruksi yang diberikan untuk menghasilkan keadaan akhir yang dapat diprediksi: pesawat yang telah selesai. Kesalahan cetak dalam instruksi, atau kegagalan untuk mengikuti langkah dengan benar, akan menghasilkan produk akhir yang rusak.
Sebuah program komputer adalah contoh meresap lainnya. Setiap program komputer hanyalah serangkaian instruksi, yang dapat bervariasi dalam kompleksitas, dan terdaftar dalam urutan tertentu, yang dirancang untuk melakukan tugas tertentu. Matematika juga menggunakan algoritme untuk menyelesaikan persamaan dengan tangan, tanpa menggunakan kalkulator. Satu contoh terakhir adalah otak manusia: sebagian besar konsepsi otak manusia mendefinisikan semua perilaku — mulai dari memperoleh makanan hingga jatuh cinta — sebagai hasil dari algoritme yang kompleks.
Kelas Algoritma
Meskipun tidak ada perincian yang diterima secara universal untuk berbagai jenis algoritme, ada kelas umum yang sering disetujui untuk dimiliki oleh algoritme. Diantaranya adalah:
Algoritma Pemrograman Dinamis: Kelas ini mengingat hasil lama dan mencoba menggunakannya untuk mempercepat proses menemukan hasil baru.
Algoritma Greedy: Algoritma Greedy berusaha tidak hanya untuk menemukan solusi, tetapi untuk menemukan solusi ideal untuk setiap masalah yang diberikan.
Algoritma Brute Force: Pendekatan brute force dimulai pada beberapa titik acak dan berulang melalui setiap kemungkinan sampai menemukan solusinya.
Algoritma Acak: Kelas ini mencakup algoritma apa pun yang menggunakan angka acak pada titik mana pun selama prosesnya.
Branch and Bound Algorithms: Branch and bound algorithms membentuk pohon dari subproblem ke masalah utama, mengikuti setiap cabang sampai diselesaikan atau digabungkan dengan cabang lain.
Algoritma Rekursif Sederhana: Tipe ini langsung mencari solusi langsung, lalu mundur untuk menemukan solusi yang lebih sederhana.
Algoritma Backtracking: Pengujian algoritma backtracking untuk solusi; jika solusi ditemukan algoritma telah dipecahkan, jika tidak berulang sekali dan tes lagi, terus sampai solusi ditemukan.
Divide and Conquer Algorithms: Sebuah algoritma Divide and Conquer mirip dengan algoritma branch and bound, kecuali menggunakan metode backtracking berulang saat membagi masalah menjadi subproblem.
Algoritma Serial dan Paralel
Selain kelas umum ini, algoritme juga dapat dibagi menjadi dua kelompok utama: algoritme serial, yang dirancang untuk eksekusi serial, di mana setiap operasi dibuat dalam urutan linier; dan algoritma paralel, digunakan dengan komputer yang menjalankan prosesor paralel, di mana sejumlah operasi dijalankan secara paralel satu sama lain. Algoritma paralel juga ada di alam dalam kasus, misalnya, mutasi genetik pada suatu spesies.