Diperkenalkan
Oleh Ahli Matematika : Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Definisi
Algoritma
- Langkah-langkah yang dilakukan agar
solusi masalah dapat diperoleh
- Suatu prosedur yang merupakan urutan
langkah-langkah yang berintegrasi
- Suatu metode khusus yang digunakan untuk
menyelesaikan suatu masalah yang nyata.(Webster Dictionary)
Kriteria
Pemilihan Algoritma
- Ada output: mengacu pada definisi
algoritma, suatu algoritma haruslah mempunyai output yang harus merupakan solusi
dari masalah yang sedang diselesaikan.
- Efektifitas dan Efisiensi :D 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.
- 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.
- Berakhirnya (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.
- 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.
Kesimpulannya:
Suatu
Algoritma yang terbaik (The Best) : “Suatu algoritma harus menghasilkan output
yang tepat guna (efektif) dalam waktu yang relatif singkat & penggunaan
memori yang relatif sedikit (efisien) dengan langkah yang berhingga &
prosedurnya berakhir baik dalam keadan diperoleh suatu solusi ataupun tidak ada
solusinya”
Contoh:
A. Algoritma untuk mengirimkan surat
- Tulis surat pada secarik kertas surat
- Ambil sampul surat atau amplop
- Masukkan surat ke dalam amplop
- Tutup amplop surat dengan lem perekat
- Tulis alamat surat yang dituju, jika
tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju,
lalu tulis alamat tersebut pada amplop surat
- Tempelkan perangko pada amplop surat
- Bawa surat ke kantor pos untuk diserahkan
pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam
kotak/bis surat.
B. Algoritma untuk menentukan bilangan akar
kuadrat dari suatu bilangan bulat positif yang diinput.
- Baca bilangan bulat positif yang diinput,
sebut saja sebagai A.
- Dinyatakan Nilai B adalah 0
- Jika Nilai C sama dengan Nilai A, maka
Nilai B adalah Akar dari Nilai A, lalu stop
- Jika tidak, maka nilai B akan bertambah 1
- Kembali ke langkah pada No.3
Tahapan
Analisa Algoritma
1. Bagaimana merencakan suatu algoritma:
Menentukan
beberapa model atau desain sebagai penyelesaian dari suatu masalah untuk
mendapat sebuah solusi yan mungkin. Dengan demikian, akan banyak terdapat
variasi desain atau model yang dapat diambil yang terbaik.
2. Bagaimana menyatakan suatu algoritma
Menentukan
model suatu algoritma yang digunakan sehingga dapat membuat barisan langkah
secara berurutan guna mendapatkan solusi penyelesaian masalah. Menentukan model
tersebut agar dapat digunakan dengan cara:
Dengan
Bahasa semu(Pseudocode): yaitu dengan menggunakan bahasa sehari-hari, tetapi
harus jelas dan terstruktur, seperti telah penulis sebutkan pada contoh-contoh
sebelumnya(Contoh prosedur berikirm surat)
Contoh:
- Untuk mengitung Luas Segitiga:
- Masukan Nilai Alas
- Masukan Nilai Tinggi
- Hitung Luas = (Alas * Tinggi)/2
- Cetak Luas
Dengan
diagram alur atau flowchart: yaitu
dengan membuat suatu penulisan atau penyajian algoritma berupa
diagram yang menggambarkan susunan alur logika dari suatu permasalahan
Contoh:
Dengan
Statement Program/Penggalan Program
Contoh:
- Read Alas
- Read Tinggi
- Luas=(Alas*Tinggi)/2
- Write(luas)
3. Bagaimana validitas suatu algoritma
Yakni
jika penyelesaian memenuhi solusi yang sebenarnya, artinya solusi yang didapat
merupakan penyelesaian suatu masalah dan bukannya membuat masalah baru.
4. Bagaimana menganalisa suatu algoritma
Caranya
melihat running time atau waktu tempuh yang digunakan dalam menyelesaikan
masalah serta jumlah memori yang digunakan dalam penyelesaian masalah tersebut.
5. Bagaimana menguji program dari
suatu algoritma
Yaitu
dengan cara menyajikannya dalam salah satu bahasa pemrogramana, misalnya BASIC,
PASCAL, FORTRAN, dBase, atau yang lainnya. Dalam proses, uji program oleh
komputer akan melalui beberapa tahap yaitu:
- Fase Debugging, yaitu fase dari suatu
proses program eksekusi yang akan melakukan koreksi terhadap kesalahan program.
Yang dimaksud disni adalah error atau salah dalam penulisan program baik logika
maupun sintaksnya.
- Fase Profilling, yaitu fase yang akan
bekerja jika program tersebut sudah benar atau telah melalui proses pada fase
debugging. Fase ini bekerja untuk melihat dan mengukur waktu tempuh atau
running time yang diperlukan serta jumlah memori/storage yang digunakan dalam
menyelesaikan suatu algoritma.
ANALISIS
SUATU ALGORITMA
(Untuk
melihat faktor efisiensi & efektifitas dari algoritma tersebut), dapat dilakukan
terhadap suatu algoritma dengan melihat pada: Waktu
tempuh (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
5. Jumlah Memori Yang digunakan:
banyaknya
langkah yang digunakan dan jenis variabel data yang dipakai dalam suatu
algoritma akan sangat mempengaruhi penggunaan memori. Dalm hal ini, diharapkan
dapat memperkirakan seberapa banyak kebutuhan memori yang diperlukan selama
proses berlangsung hingga proses selesai dikerjakan. Dengan demikian, dapat
disiapkan storage yang memadai agar proses suatu algoritma berjalan tanpa ada
hambatan atau kekurangan memori.
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.
- Input dan Output harus
mempunyai batasan: input merupakan data yang dimasukkan ke dalam algoritma yang
untuk kemudian akan dilaksanakan oleh komputer. Dengan begitu, input yang
diberikan harus sesuai dengan jenis dari bahasa pemrograman yang digunakan,
sedangkan ouput merupakan hasil yang diperoleh dari pekerjaan yang dilaksanakan
komputer untuk kepentingan user yang merupakan pihak diluar komputer. Algoritma
harus menghasilkan output karena merupaka solusi yang diharapkan dari suatu
masalah yang timbul.
- 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.