Apakah Algoritma Itu ?




1.       Masalah
Manusia hidup dengan segala masalah yang melingkupinya. Masalah adalah pertanyaan atau tugas yang kita cari jawabannya.
Contoh beberapa masalah dalam kehidupan sehari-hari misalnya :
a.       Diberikan setumpuk kartu pasien disebuah tempat praktek dokter yang tersusun secara acak. Setiap kartu memepunyai nomor registrasi pasien. Bagaimana mengurutkan kartu-kartu tersebut berdasarkan nomor urut pasien sehingga tersusun dengan nomor kecil diatas dan nomor besar dibawah ? jawaban dari masalah ini adalah barisan kartu pasien yang sudah terurut dari kecil ke besar.
b.      Diberikan daftar nama pejabat baru beserta jumlah kekayaannya. Tentukan pejabat mana yang mempunyai kekayaan paling besar ? Jawaban dari masalah ini adalah nama pejabat yang mempunyai kekayaan paling besar.

Tentu masih banyak lagi masalah yang muncul dibidang pekerjaan seseorang. Beberapa masalah yang muncul didalam dunia nyata banyak memiliki kemiripan substansi. Oleh karena itu, secara generik kita sering mendeskripsikan maslah-masalah yang muncul didunia nyata dengan menggunakan beberapa ukuran (parameter). Mialnya sebagai berikut :
1.       [Masalah pengurutan] Diberikan sebuah (list) S yang terdiri dari n buah nilai bilangan bulat. Bagaimana mengurutkan n buah nilai tersebut sehingga terurut secara menaik ?
2.       [Masalah pencarian] Tentukan apakah suatu nilai x terdapat dalam sebuah list S yang berisi n buah bilangan bulat !
3.       [Masalah mencari elemen terbesar] Diberikan list S yang terdiri dari n buah bilangan bulat. Carilah elemen terbesar di dalam list tersebut.

Setiap masalah umunya mengandung satu atau lebih parameter yang dinyatakan didalam masalah tersebut. Misalnya pada contoh masalah pengurutan diatas, S dan n adalah parameter masalah. Parameter ini di dalam pernyataan masalah belum diberi nilai spesifik, dan semua nilai parameter merupakan masukan (input) untuk maslah tersebut. Setiap pemberian nilai untuk semua parameter masalah dinamakan instansiasi masalah (instance of a problem). Jawaban terhadap instansiasi maslah disebut solusi.
Sebagai contoh, instansiasi masalah untuk masalah pengurutan adalah
S = [15,4,8,11,2,10,19],                   n = 7
Dan solusinya adalah barisan nilai terurut S = [2,4,8,10,11,15,19].

2.       Algoritma
Untuk masalah dengan instansiasi kecil, kita dapat menemukan solusinya dengan mudah dan cepat. Bagaimana kalu instansiasi masalah berukuran besar ? jelas tidak mudah mengurutkan data dalam jumlah banyak. Oleh karena itu, kita perlu menuliskan prosedur yang berisi langkah-langkah pengurutan sehingga prosedur tersebut dapat dijalankan oleh sebuah pemroses (Komputer,manusia,robot  dan sebagainya) untuk menghasilkan solusi setiap instansiasi masalah pengurutan. Kita katakan langkah-langkah pengurutan penyelesai masalah disebut algoritma.
Algoritma adalah urutan langkah-langkah untuk memecahkan suatu masalah.
Terdapat beberapa definisi lain dari algoritma. Tetapi pada prinsipnya senada dengan definisi yang diungkapkan diatas. Antara lain :
Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran.
Algoritma adalah deretan intruksi yang jelas untuk memecahkan maslah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas.
Algoritma adalah prosedur komputasi yang tedefinisi dengan baik yang menggunakan bebrapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang mentranformasikan masukan menjadi keluaran.

Mari kita tinjau kembali masalah mengurutkan kartu. Jika kita mempunyai setumpuk kartu yang berjumlah n = 30 buah. Langkah-langkah pengurutan 30 buah kartu dapat kita tuliskan sebagai brikut (setiap langkah diberi nomor urut 1,2,3, dan seterusnya):
1.       Cari kartu dengan nomor terkecil
2.       Tempatkan kartu tersebut pada posisi paling atas
3.       Cari kartu dengan nomor terkecil berikutnya
4.       Tempatkan kartu tersebut dibawah kartu pertama
5.       Cari kartu dengan nomor terkecil berikutnya
6.       Tempatkan kartu tersebut dibawah kartu kedua
...    ................................................................
xx. Cari kartu dengan nomor terkecil berikutnya
xxx. Tempatkan kartu tersebut dibawah kartu ke-28
(tersisa satu kartu lagi, tetapi tidak perlu diurutkan lagi)                    

Perhatikanlah bahwa sebenarnya di dalam rangkaian langkah-langkah diatas terjadi pengulangan 2 langkah penting, yaitu (i) cari kartu dengan nomor terkecil, dan (ii) tempatkan kartu tersebut pada posisi yang tepat. Kedua langkah utama ini diulang berkali-kali sampai hanya tersisa sebanyak 1 kartu saja (berarti jumlah pengulangan adalah sebanyak n = 50 -1 = 49 kali). Maka, secara garis besar kita dapat menuliskan langkah-langkah mengurutkan n buah kartu sebagai berikut :
1.       Cari kartu dengan nomor terkecil diantara kartu yang tersisa
2.       Tempatkan kartu tersebut pada posisi yang tepat
3.       Ulangi kembali dari langkah 1 sebanyak n - 1 kali.

Langkah-langkah yang kita tuliskan diatas itulah yang disebut algoritma. Dikatakan bahwa kita telah menspesifikasikan algoritma pengurutan.
Dalam kehidupan sehari-hari kita banyak menemukan langkah-langkah pekerjaan sesuatu meskipun kita tidak menyebutnya sebagai algoritma : “Itu bukan algoritma, tapi cara melakukan sesuatu”.
Contoh langkah-langkah pengerjaan di dalam resep masakan :
1.       Tuangkan satu gelas santan kedalam wajan
2.       Masukkan bumbu-bumbu yang sudah dihaluskan, aduk hingga merata
3.       Tambahkan garam, merica, dan kecap asin
4.       Masak dengan api sedang sambil diaduk.
Meskipun kita tidak menyebutnya langkah-langkah pengerjaan itu sebagai algoritma, tetapi dalam konteks ini semua diatas adalah algoritma.

Sejarah Algoritma

Algoritma adalah jantung ilmu komputer atau informatika. Banyak cabang dari ilmu komputer yang diacu dalam terminologi algoritma, misalnya algoritma perutean (routing) pesan didalm jaringan komputer, algoritma brensenham untuk menggambar garis lurus (bidang grafika komputer), algoritma Knuth-Morris-Prat untuk mencari suatu pola didalm teks (bidang information retrievel), dan sebagainya.
Kata “algoritma” sendiri mempunyai sejarah yang cukup aneh. Kata ini tidak muncul di dalm kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab. Anda dikatakan algorist jika anda menggunakan angka Arab. Para ahli bahasa berusaha menemukan asal kata algorism ini namun hasilnya kurang memuaskan. Akhirnya para ahli sejarah matematika menemukan asal  mula kata tersebut. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa Al-Khuwarizmi (al-Khuwarizmi dibaca orang Barat menjadi algorism). Al-Khuwarizmi menulis buku yang berjudul Kitab al jabar wal-muqabala, yang artinya “Buku pemugaran dan pengurangan” (The book of restoration and reduction). Dari judul buku ini kita juga memperoleh akar kata “aljabar” (algebra). Perubahan dari kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka Arab sudah menjadi hal yang sudah biasa., maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya. Dalam bahasa Indonesia, kata algorithm diserap menjadi “algoritma”.