Sejarah Algoritma
Istilah algoritma, mungkin bukan
sesuatu yang asing bagi kita. Teman-teman ada yang tahu arti kata ‘algoritma’?
Ditinjau dari asal-usul katanya, kata ‘Algoritma’ mempunyai sejarah yang agak
aneh. Orang hanya menemukan kata Algorism yang berarti proses menghitung dengan
angka Arab. Seseorang dikatakan ‘Algorist’ jika menghitung menggunakan angka
Arab. Para ahli bahasa berusaha menemukan asal kata ini namun hasilnya kurang
memuaskan. Akhirnya para ahli sejarah matematika menemukan asal kata tersebut
yang berasal dari nama penulis buku Arab terkenal, yaitu Abu Abdullah Muhammad
Ibnu Musa Al-Khuwarizmi dibaca orang barat menjadi Algorism.
Penemunya adalah seorang ahli
matematika dari uzbekistan yang bernama Abu Abdullah Muhammad Ibn Musa
al-Khwarizmi. Di literatur barat, beliau lebih terkenal dengan sebutan Algorism.
Panggilan inilah yang kemudian dipakai untuk menyebut konsep algoritma yang
ditemukannya. Abu Abdullah Muhammad Ibn Musa al-Khwarizmi (770-840) lahir di
Khwarizm (Kheva), kota di selatan sungai Oxus (sekarang Uzbekistan) tahun 770
masehi. Kedua orangtuanya kemudian pindah ke sebuah tempat di selatan kota
Baghdad (Irak), ketika ia masih kecil. Khwarizm dikenal sebagai orang yang
memperkenalkan konsep algoritma dalam matematika, konsep yang diambil dari nama
belakangnya.
Al khwarizmi juga adalah penemu dari
beberapa cabang ilmu matematika yang dikenal sebagai astronom dan geografer. Ia
adalah salah satu ilmuwan matematika terbesar yang pernah hidup, dan
tulisan-tulisannya sangat berpengaruh pada jamannya. Teori aljabar juga adalah
penemuan dan buah pikiran Al khwarizmi. Nama aljabar diambil dari bukunya yang
terkenal dengan judul “Al Jabr Wa Al Muqabilah”. Ia mengembangkan tabel rincian
trigonometri yang memuat fungsi sinus, kosinus dan kotangen serta konsep
diferensiasi.
Pengaruhnya dalam perkembangan
matematika, astronomi dan geografi tidak diragukan lagi dalam catatan sejarah.
Pendekatan yang dipakainya menggunakan pendekatan sistematis dan logis. Dia
memadukan pengetahuan dari Yunani dengan Hindu ditambah idenya sendiri dalam
mengembangkan matematika. Khwarizm mengadopsi penggunaan angka nol, dalam ilmu
aritmetik dan sistem desimal. Beberapa bukunya banyak diterjemahkan kedalam
bahasa latin pada awal abad ke-12, oleh dua orang penerjemah terkemuka yaitu
Adelard Bath dan Gerard Cremona. Risalah-risalah aritmetikanya, seperti Kitab
al-Jam’a wal-Tafreeq bil Hisab al-Hindi, Algebra, Al-Maqala fi Hisab-al Jabr
wa-al-Muqabilah, hanya dikenal dari translasi berbahasa latin. Buku-buku itu
terus dipakai hingga abad ke-16 sebagai buku pegangan dasar oleh universitas-universitas
di Eropa.
Buku geografinya berjudul Kitab
Surat-al-Ard yang memuat peta-peta dunia pun telah diterjemahkan kedalam bahasa
Inggris. Buah pikir Khwarizmi di bidang geografi juga sangat mengagumkan. Dia
tidak hanya merevisi pandangan Ptolemeus dalam geografi tapi malah memperbaiki
beberapa bagiannya. Tujuh puluh orang geografer pernah bekerja dibawah
kepemimpinan Al khwarizmi ketika membuat peta dunia pertama di tahun 830. Ia
dikisahkan pernah pula menjalin kerjasama dengan Khalifah Mamun Al-Rashid
ketika menjalankan proyek untuk mengetahui volume dan lingkar bumi.
Pengertian dasar logika dan
Algoritma
Abu Ja’far Mohammad Ibnu Musa Al
Khawarizmi, pertama dan pelopor logika algoritma. Logika berasal dari kata
Yunani Kuno. Pengertiannya yaitu hasil pertimbangan akal pikiran yang
diutarakan lewat kata dan dinyatakan dalam bahasa.
·
Definisi Algoritma
1.
Langkah-langkah yang dilakukan agar solusi masalah dapat diperoleh.
2. Suatu prosedur yang merupakan urutan langkah-langkah yang berintegrasi
3. Suatu motode khusus yang digunakan untuk menyelesaikan suatu masalah yang
nyata (Webster dictionary)
·
Kriteria Pemilihan Algoritma
1. Output:
mengacu pada definisi algoritma, suatu algoritma haruslah mempunyai output yang
harus merupakan solusi dari masalah yang sedang diselesaikan.
2. Efektifitas
dan Efisiensi: ikatakan efektif jika algoritma tersebut menghasilkan suatu
solusi yang sesuai dengan masalah yang diselesaikan dalam arti algoritma harus
tepat guna.Dikatakan efisiensi jika waktu proses suatu algoritma relatif lebih
singkat dan penggunaan memori komputernya lebih sedikit.
3. Jumlah
langkahnya berhingga : maksudnya adalah barisan instruksi yang dibuat harus
dalam suatu urutan tertentu atau harus berhingga agar masalah yang dihadapi
dapat diselesaikan dengan tidak memerlukan waktu relatif lama.
4. Berakhir à
(Semi Algoritma) : proses didalam mencari penyelesaian suatu masalah harus
berhenti dan berakhir dengan hasil akhir yang merupakan solusinya atau berupa
informasi yang tidak diketemukan solusinya. Artinya baik dalam kondisi solusi
ada atau tidak ada, proses akan tetap harus berakhir dan berhenti. Istilah lain
dalam algoritma dikenal sebagai SEMI ALGORITMA, yaitu suatu prosedur yang hanya
akan berhenti jika mempunyai atau menghasilkan solusi, sedangkan jika tidak
menghasilkan solusi, maka prosedur tersebut akan berjalan tanpa henti.
5. Terstruktur : yaitu urutan
barisan langkah-langkah yang digunakan harus disusun sedemikian rupa agar
proses penyelesaian tidak berbelit-belit sedemikian sehingga bagian-bagian
proses dapat dibedakan dengan jelas mana bagian input, proses dan output
sehingga memudahkan user melakukan pemeriksaan ulang.
·
Analisis suatu Algoritma
Untuk melihat faktor efisiensi
& efektifitas dari algoritma tersebut, dapat dilakukan terhadap suatu
algoritma dengan melihat pada Waktu tempu (Running Time) dari suatu algoritma:
adalah satuan waktu -
yang ditempuh atau diperlukan oleh suatu algoritma dalam menyelesaikan suatu
masalah
Hal-hal yang dapat mempengaruhi
daripada waktu tempuh adalah:
1. Banyaknya langkah: Makin
banyak langkah atau instruksi yang digunakan dalam menyelesaikan masalah, maka
makin lama waktu tempuh yang dibutuhkan dalam proses tersebut
2. Besar dan jenis input data:
Besar dan jenis input data pada suatu algoritma akan sangat berpengaruh pada
proses perhitugan yang terjadi. Jika jenis data adalah tingkat ketelitian
tunggal(Single precision), maka waktu tempuh akan menjadi relatif lebih cepat
dibandingkan dengan tingkat ketelitian ganda(double precesion)
3. Jenis operasi: Waktu tempuh
juga dipengaruhi oleh jenis operasi yang digunakan. Jenis operasi tersebut
meliputi operasi matematika, nalar atau logika, atau yang lainnya. Sebagai
contoh, operasi perkalian atau pembagian akan memakan waktu lebih lama
dibandingkan operasi penjumlahan atau pengurangan.
4. Komputer dan kompilator: hal
terakhir yang mempengaruhi waktu tempuh suatu proses algoritma adalah komputer
dan kompilatornya, walaupun sebenarnya faktor ini diluar tahap rancangan atau
tahap pembuatan algoritma yang efisien. Algoritma dibuat untuk mencapai waktu
tempuh yang seefektif dan seefisien mungkin, tetapi kesemuanya itu akan sangat
bergantung pada kemampuan komputer yang tentunya harus sesuai dengan jumlah
program atau langkah yang diperlukan oleh algoritma, begitu juga dengan
kompilator tersebut, misalnya PC XT 8086 akan kalah cepat dibandingkan 8088
atau dengan AT 80286 atau 80386 atau 80486 dan seterusnya
·
Sifat – sifat Algoritma
Banyaknya langkah instruksi harus
berhingga: pelaksanaan sebuah -
algoritma yang terprogram haruslah dapat diakhiri atau diselesaikan melalui
sejumlah langkah operasional yang berhingga. Jika tidak demikian, kita tidak
akan dapat mengharapkan bahwa pelaksaan algoritma tersebut dapat menghasilkan
suatu solusi yang baik.
Langkah atau instruksi harus
jelas: artinya bahwa penulisa setiap -
langkah yang terdapat didalam sebuah algoritma harus memiliki arti yang khusus
atau spesifik sehingga dapat dibedakan antara penulisan langkah untuk
komputer(program/pemrograman) dengan penulisan langkah bagi manusia(pesudocode).
Manusia akan lebih mudah memahami algoritma yang terdiri atas
simbol-simbol(Contoh: pembuatan algoritma dengan diagram alur/flowchart)
sedangkan komputer hanya membutuhkan sebuah penulisan algoritma dengan
kode-kode yang dituangkan dalam bahasa yang dimengerti oleh komputer itu
sendiri(bahasa pemrograman).
Proses harus jelas dan mempunyai
batasan: rangkaian suatu proses yang -
berisi langkah-langkah instruksi dari suatu algoritma yang akan dilaksanakn
harus ditetapkan dengna jelas, baik dan pasti sebab sebuah algoritma harus
memiliki instruksi dasar tertentu dimana setiap instruksi harus memiliki unsur
pelaksana yang berfungsi sebagai pemroses data yang akan dimasukkan dalam
sebuah komputer. Dengan demikian, sebuah algoritma harus ditulis dengan jelas
tentang batasa-batasan proses yang akan dilaksanakan oleh komputer.
Efektifitas: instruksi yang
diberikan pada komputer agar hanya -
menjalankan atau melaksanakan proses yang mampu dilaksanakannya. Yang dimaksud
mampu adalah bahwa suatu algoritma atau instruksi-instruksi dalam sebuah
program hanya akan dapat dilaksanakan jika informasi yang diberikan oleh
instruksi-instruksi tersebut lengkap, benar dan jelas. Adanya batasan ruang
lingkup, sebuah algoritma yang baik adalah hanya -
ditujukan bagi suatu masalah tertentu saja. Susunana input harus ditentukan
lebih dulu sebab susunan tersebut enentukan sifat umum dari algoritma yang
bersangkutan.
Dasar penyusunan Algoritma
Ada beberapa hal yang perlu
diperhatikan dalam menyusun suatu algoritma. Menurut Knuth (1973, hal. 4) dan
juga Horowitz (1999, hal. 1), ada lima ciri-ciri penting yang harus dimiliki
sebuah algoritma, yaitu berupa finiteness, definiteness, masukan,
keluaran, dan efektivitas.
- Finiteness,
menyatakan
bahwa suatu algoritma harus berakhir untuk semua kondisi setelah memproses
sejumlah langkah.
- Defineteness,
menyatakan
bahwa setiap langkah harus dinyatakan dengan jelas (tidak rancu atau
mendua arti).
- Masukan.
Setiap
algoritma dapat tidak memiliki masukan atau mempunyai satu atau beberapa
masukan. Masukan merupakan suatu besaran yang diberikan di awal sebelum
algoritma diproses.
- Keluaran.
Setiap
algoritma memiliki keluaran, entah hanya sebuah keluaran atau banyak
keluaran. Keluaran merupakan besaran yang mempunyai kaitan atau hubungan
dengan masukan.
- Efektivitas.
Setiap
algoritma diharapkan bersifat efektif, dalam arti semua operasi yang
dilaksanakan oleh algoritma harus sederhana dan dapat dikerjakan dalam
waktu yang terbatas. Secara prinsip, setiap intruksi dalam algoritma dapat
dikerjakan oleh orang dengan hanya menggunakan kertas dan pensil.