Dalam
matematika dan komputasi, algoritma atau algoritme merupakan kumpulan perintah untuk
menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara
bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan
catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi
sebelum menjalankan algoritma. Algoritma akan dapat selalu berakhir untuk semua
kondisi awal yang memenuhi kriteria, dalam hal ini berbeda dengan heuristik.
Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan
keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
Desain
dan analisis algoritma adalah suatu cabang khusus dalam ilmu komputer yang
mempelajari karakteristik dan performa dari suatu algoritma dalam menyelesaikan
masalah, terlepas dari implementasi algoritma tersebut. Dalam cabang disiplin
ini algoritma dipelajari secara abstrak, terlepas dari sistem komputer atau
bahasa pemrograman yang digunakan. Algoritma yang berbeda dapat diterapkan pada
suatu masalah dengan kriteria yang sama.
Kompleksitas
dari suatu algoritma
merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut
untuk menyelesaikan masalah. Secara informal, algoritma yang dapat
menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas
yang rendah, sementara algoritma yang membutuhkan waktu lama untuk
menyelesaikan masalahnya mempunyai kompleksitas yang tinggi.
Dapat disimpulkan bahwa algoritma adalah urutan langkah-langkah logis
penyeselaian masalah yang disusun secara sistematis dan logis. Kata logis
(logika) merupakan kata kunci dalam algoritma. Langkah-langkah dalam algoritma
harus dapat ditentukan bernilai benar atau salah.
Algoritma Dalam
Kehidupan
Algoritma adalah jantung ilmu
komputer atau informatika. Banyak cabang ilmu komputer yang diacu dalam
terminologi algoritma. Namun algoritma juga digunakan dalam kehidupan
sehari-hari, contohnya resep makanan. Di dalam resep makanan terdapat
langkah-langkah yang merupakan algoritma. Selain itu masih banyak contoh
algoritma yang lain.
Bahasa Pemrograman
Untuk melaksanakan suatu
algoritma diperlukan suatu bahasa pemrograman, contoh bahasa pemrograman adalah
: Pascal, C++, Basic, dll. Notasi algoritma dapat diterjemahkan kedalam bahasa
pemrograman apapun, dengan kata lain notasi algoritma bersifat independen.
Flowchart
Suatu flowchart adalah suatu
representasi secara diagram yang mengilustrasikan urutan dari operasi yang
dilakukan untuk mendapatkan suatu hasil. Dengan kata lain, flowchart membantu
kita untuk mengerti dan melihat bentuk algoritma dengan menampilkan algoritma
dalam simbol-simbol gambar.
Dalam menggambar flowchart,
digunakan simbol tertentu seperti diatas. Contoh berikut bisa digunakan untuk
lebih mengerti perbedaan kegunaan simbol-simbol tersebut. Misal kita ingin
mencari jumlah dari 2 buah bilangan, maka flowchart-nya adalah sebagai berikut
:
Contoh lain, misalkan kita ingin mengetahui apakah sebuah bilangan ganjil atau genap. Untuk itu kita harus membuat flowchart seperti ini :
Pseudo Code
Pseudo Code adalah urutan baris
algoritma seperti kode pemrograman dan tidak memiliki sintak yang baku. Pseudo
Code lebih umum digunakan oleh programmer yang berpengalaman. Akan tetapi,
flowchart lebih mudah dimengerti oleh programmer pemula, pseudo code sangat
mudah diimplementasikan ke dalam kode program dibandingkan dengan flowchart.
Kita bisa bebas menulis pseudo code selama itu mudah dimengerti bagi orang
lain. Tetapi disarankan untuk menggunakan keyword yang umum digunakan seperti :
if, then, else, while, do, repeat, for, dan lainnya. Dan ikuti gaya penulisan
pemrograman seperti Pascal, C++, dll. Perhatikan kode dibawah ini :
- Mulai
- Masukkan sebuah angka
- Masukkan sebuah angka dan tampilkan
- Ambil angka yang sebelumnya dan tampilkan
- Selesai
Walaupun pseudo code diatas masih
bisa dimengerti tetapi ada beberapa statemen yang ambigu. Dari baris kedua,
kita tidak tahu kemana angka tersebut disimpan dan kita juga tidak tahu angka
yang mana yang dimaksud untuk “angka yang sebelumnya”. Apakah angka yang
pertama atau yang kedua. Pseudo Code diatas dapat dimodifikasi menjadi seperti
berikut :
- Start
- Masukkan A
- Masukkan B, Tampilkan B
- Tampilkan A
- End
Pseudo Code diatas lebih baik dibandingkan
sebelumnya. Kita bisa dengan jelas melihat dimana angka disimpan dan angka yang
mana yang ditampilkan. Sekarang kita akan mengubah flowchart pada gambar 1.2
- Start
- Masukkan A dan B
- C = A + B
- Tampilkan C
- End
Pengertian Dasar Logika dan Algoritma
Abu Ja’far Mohammad Ibnu Musa Al Khawarizmi, pertama dan
pelopor logika algoritma. Logika
berasal dari kata Yunani kuno λόγος (logos) yang berarti hasil
pertimbangan akal pikiran yang diutarakan lewat kata dan dinyatakan dalam
bahasa.
Definisi Algoritma
:
1. Langkah-langkah yg 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)
1. Langkah-langkah yg 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.
Ada out put
2.
Efektifitas dan efesiensi
3.
Jumlah langkahnya berhingga
4.
(semi Algoritma)àBerakhir
5.
Terstruktur
Dari ke lima kriteria di atas, berikut
kami jelaskan tiap item diantaranya:
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.
Contoh:
A.
Algoritma untuk mengirimkan surat
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. Bawa surat ke kantor pos untuk diserahkan pada pegawai pos atau menuju ke bis surat untuk memasukkan surat ke dalam kotak/bis surat.
1. Tulis surat pada secarik kertas surat
2. Ambil sampul surat atau amplop
3. Masukkan surat ke dalam amplop
4. Tutup amplop surat dengan lem perekat
5. Tulis alamat surat yang dituju, jika tidak diingat, lebih dahulu ambil buku alamat & cari alamat yang dituju, lalu tulis alamat tersebut pada amplop surat
6. Tempelkan perangko pada amplop surat
7. 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.
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.3
1. Baca bilangan bulat positif yang diinput, sebut saja sebagai A.
2. Dinyatakan Nilai B adalah 0
3. Jika Nilai C sama dengan Nilai A, maka Nilai B adalah Akar dari Nilai A, lalu stop
4. Jika tidak, maka nilai B akan bertambah 1
5. Kembali ke langkah pada No.3
Analisis Suatu Algoritma
(Untuk melihat faktor efisiensi & efektifitas dari algoritma tersebut),
dapat dilakukan terhadap suatu algoritma dengan melihat pada:
1.
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:
Hal-hal yang dapat mempengaruhi daripada waktu tempuh adalah:
a)
Banyaknya langkah: Makin banyak langkah atau instruksi
yang digunakan dalam menyelesaikan masalah, maka makin lama waktu tempuh yang dibutuhkan
dalam proses tersebut.
b)
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).
c)
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.
d)
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.
2.
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
1) 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.
2) 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).
3) 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.
4) 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.
5) 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.
Demikianlah Definisi
dan Dasar Algoritma, mudah-mudahan bias menambah ilmu kita dan mudah-mudahan
bermanfaat. Aaammiinn… :)




Tidak ada komentar:
Posting Komentar