Algoritma

Diagram Alur sering digunakan untuk menggambarkan sebuah algoritma.

Dalam matematika dan komputasialgoritma atau algoritme [1] 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.

Sejarah istilah “algoritma”

Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari Uzbekistan Al Khawārizmi (hidup sekitar abad ke-9), sebagaimana tercantum pada terjemahan karyanya dalam bahasa latin dari abad ke-12 “Algorithmi de numero Indorum”. Pada awalnya kata algorisma adalah istilah yang merujuk kepada aturan-aturan aritmetis untuk menyelesaikan persoalan dengan menggunakan bilangan numerik arab (sebenarnya dari India, seperti tertulis pada judul di atas). Pada abad ke-18, istilah ini berkembang menjadi algoritma, yang mencakup semua prosedur atau urutan langkah yang jelas dan diperlukan untuk menyelesaikan suatu permasalahan. Masalah timbul pada saat akan menuangkan bagaimana proses yang harus dilalui dalam suatu/sebuah sistem (program) bagi komputer sehingga pada saat eksekusinya, komputer dapat bekerja seperti yang diharapkan. Programer komputer akan lebih nyaman menuangkan prosedur komputasinya atau urutan langkah proses dengan terlebih dahulu membuat gambaran (diagram alur) diatas kertas.

Jenis-jenis Algoritma

Terdapat beragam klasifikasi algoritma dan setiap klasifikasi mempunyai alasan tersendiri. Salah satu cara untuk melakukan klasifikasi jenis-jenis algoritma adalah dengan memperhatikan paradigma dan metode yang digunakan untuk mendesain algoritma tersebut. Beberapa paradigma yang digunakan dalam menyusun suatu algoritma akan dipaparkan dibagian ini. Masing-masing paradigma dapat digunakan dalam banyak algoritma yang berbeda.

  • Divide and Conquer, paradigma untuk membagi suatu permasalahan besar menjadi permasalahan-permasalahan yang lebih kecil. Pembagian masalah ini dilakukan terus menerus sampai ditemukan bagian masalah kecil yang mudah untuk dipecahkan. Singkatnya menyelesaikan keseluruhan masalah dengan membagi masalah besar dan kemudian memecahkanpermasalahan-permasalahan kecil yang terbentuk.
  • Metode serakah. Sebuah algoritma serakah mirip dengan sebuah Pemrograman dinamik, bedanya jawaban dari submasalah tidak perlu diketahui dalam setiap tahap; dan menggunakan pilihan “serakah” apa yang dilihat terbaik pada saat itu.
  • Sistem Flowchart

Sistem flowchart merupakan diagram alir yang menggambarkan suatu sistem peralatan komputer yang digunakan dalam proses pengolahan data serta  hubungan antar peralatan tersebut. Sistem flow chart tidak digunakan untuk  menggambarkan urutan langkah untuk memecahkan masalah , tetapi hanya  untuk menggambarkan prosedur dalam sistem yang dibentuk.

  • Pseudo Code (Kode Semu) ,Pseudo Code (kode semu) merupakan metode yang cukup efisien untuk  menggambarkan suatu algoritma . Pseudo Code dituliskan dengan menggunakan bahasa yang mudah dipahami (boleh menggunakan bahasa Indonesia) agar alur logika yang digambarkan dapat dimengeti oleh orang awam sekalipun. Flowchart Pseudo Code (kode semu) disusun dengan tujuan untuk menggambarkan  tahap-tahap penyelesaian suatu masalah  dengan kata-kata (teks). Metode ini  mempunyai kelemahan, dimana penyusunan algoritma dengan kode semu sangat  dipengaruhi oleh tata bahasa pembuatnya, sehingga kadang-kdang sulit dipahami oleh orang lain. Oleh karena itu kemudian dikembangkan suatu metode lain  yang dapat menggambarkan suatu algoritma program secara lebih mudah dan sederhana yaitu dengan menggunakan flowchart (diagram alir).

 contoh algoritma

Berikut ini adalah contoh algoritma sederhana sebagai interval halving (pembagi interval) untuk mencari akar persamaan tersebut dengan cara pendekatan  (bisa ada selisih 0,001 dari akar yang sebenarnya):

Algoritmanya:

# Tetapkan nilai XN = 2,0 dan XP = 3,0 dimana XN adalah nilai menghasilkan f(x) negatif, sedangkan XP agar f(x) positip. Nilai tengah XM dan XN diberikan dalam rumus:

(XN + XP)             (2,0 + 3,0)

XM =  ________  =  ____________ = 2,5

2                             2

# Setelah nilai XM diperoleh maka nilai fungsi f(XM) juga dapat dicari:

f(XM) = f(2,5) = -1,375

# Karena XM negatif, gantilah XN = 2,5 lalu cari XM dan juga f(XM).

(2,5 + 3,0)

XM =  ________   = 2,75  dan f(XM) = f(2,75) = 0,046875

2

# Karena XM positif, gantilah XP = 2,75 lalu cari XM dan juga f(XM)

(2,5 + 2,75)

XM =  ___________   = 2,625  dan f(XM) = f(2,625) = – 0,7246

2

# Demikian seterusnya sampai nilai XN dan XP semakin dekat dengan nilai X yang dicari, yaitu f(X) = 0 . Jika |XP – XN| < 0,001 maka nilai XM yang baru akan mendekati akar persamaan tersebut dengan ketelitian kurang dari 0,001. Pada kondisi tersebut konvergensi tercapai (hasil nilainya mendekati nilai eksak)

Sumber           :

http://eby190205.blogspot.com/2011/02/jenis-jenis-algoritma.html

id.wikipedia.org/wiki/Algoritma

http://carapedia.com/algoritma_sederhana_info1937.html