Sabtu, 18 Desember 2010

ALGORITMA


Diagram Alur sering digunakan untuk menggambarkan sebuah algoritma.
Dalam matematika dan komputasi, algoritma 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.

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 memecahkan permasalahan-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.

Adapun jenis-jenis algoritma yang lain adalah :
       1. Bahasa Semu (pseudo code)
           yaitu dengan menggunakan bahasa sehari-hari, tetapi harus jelas dan struktur.
       2. Diagram Alir/Alur (Flowchart)
           yaitu dengan membuat suatu penulisan atau penyajian algoritma berupa
          diagram yang menggambarkan susunan alur logika dari suatu permasalahan.

4. PENGGUNAAN ALGORITMA
    Dengan algoritma, kita dapat mengatasi masalah dari yang sederhana
sampai yang kompleks sekalipun. Namun, seorang user harus mampu membuat
suatu program dengan menggunakan bahasa yang difahami oleh komputer.
Sebelum disajikan dalam bentuk bahasa pemrogaman, sebaiknya kita membuat
diagram alir (Flow Chart) dan Pseudocode. Hal ini dimaksudkan agar dapat
mempermudah kerja atau mempermudah dalam membuat program. Selain itu,
algoritma dapat mengatasi masalah logika dan masalah matematika dengan cara
berurutan, tetapi kadang-kadang algoritma tidak selalu berurutan, hal ini dikenal
dengan proses percabangan.
Kriteria Program Algoritma dalam Bidang Komputer. Pada dasarnya,
komputer adalah mesin digital, artinya komputer hanya bisa mengenal kondisi ada
arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (biasanya
dilambangkan dengan 0). Dengan kata lain, kita harus menggunakan sandi 0 dan 1
untuk melakukan pemrogaman komputer. Bahasa pemrogaman yang
menggunakan sandi 0 dan 1 ini disebut bahasa mesin. Karena bahasa mesin sangat
susah, maka muncul ide untuk melambangkan untaian sandi 0 dan 1 dengan
singkatan kata yang lebih mudah difahami manusia biasa disebut dengan
mnemonic code. Bahasa pemrogaman yang menggunakan singkatan kata ini
disebut bahasa assembly.
     Program algoritma harus komplit, nyata, dan jelas. Meskipun tugas
algoritma tidak menghasilkan solusi, tetapi proses harus berakhir hal ini disebut
Makalah Desain dan Analisis Algoritma 5
dengan semi algorithm (prosedur akan berjalan terus atau biasa disebut dengan
perulangan). Intinya kita tidak boleh menambah masalah, akan tetapi kita harus
mampu menyelesaikan masalah untuk mendapat hasil yang tepat. Adapun contoh
algoritma seperti dalam menghitung luas lingkaran dari masukan berupa jari-jari
lingkaran. Rumus lingkaran adalah L=?*R*R

     Berikut ini adalah contoh algoritma untuk menghitung luas lingkaran:
1. Masukkan R
2. Pi ? 3,14
3. L ? Pi*R*R

    Perhatikan tanda ? pada baris kedua dan ketiga. Tanda ini berarti nilai di sebelah
kanan diberikan pada operan di sebelah kiri. Sebagai contoh, untuk baris kedua,
nilai 3,14 diberikan pada variabel Pi. Berikutnya, nilai Pi*R*R diberikan pada
variable L. Baris terakhir menuliskan luas lingkaran tersebut.
Seperti yang dikemukakan di atas, bahwa algoritma ada yang tidak berurutan dan
biasa di sebut dengan pengulangan. Adapun contohnya yaitu dalam penghitungan
rata-rata dari sekumpulan data yang dimasukkan pengguna.
Berikut ini adalah algoritma untuk menghitung rata-rata data yang dimasukkan
pengguna:

1.    Masukkan N
2.    i?1
3.    j?0
4.    Selama (i<=N) kerjakan baris 4 sampai dengan 7
5.    Masukkan dt
6.    i?i+1
7.    j?j+dt
8.    Rata?j/N
       Makalah Desain dan Analisis Algoritma 6
9.    Tulis rata

Baris pertama meminta pengguna memasukkan N, yaitu jumlah data.
Pada baris kedua, variabel I, yang berguna sebagai pencacah banyaknya data yang
telah dimasukkan pegguna, bernilai 1.
Pada baris ketiga, variabel j, yang digunakan untuk menyimpan hasil penjumlahan
data, diberi nilai 0.
Baris keempat memberikan perintah untuk mengulangi baris keempat sampai
dengan baris ketujuh selama I kurang dari sama dengan N. Dengan kata lain,
setelahi lebih besar dari N, baris kedelapan yang dijalankan.
Baris kelima meminta masukkan data yang ke-i.
Baris keenam menambah variabel I dengan 1. Perhatikan arti dari perintah i?i+1
adalah nilai i ditambah dengan 1 kemudian hasilnya disimpan pada variabel i
kembali.
Baris ketujuh menambah variabel j dengan data yang dimasukkan pengguna.
Sebagaimana dijelaskan di atas, variabel j digunakan untuk menyimpan hasil
penjumlahan semua data, jadi untuk setiap masukan data, nilai variabel j harus
ditambah dengan dt.
Baris kedelapan menghitung rata-rata dengan cara membagi hasil penjumlahan
dengan banyaknya data.
Baris terakhir menuliskan rata-rata tersebut.
Tetapi banyak pemrogram yang sudah berpengalaman tidak pernah menuliskan
algoritma di atas kertas lagi.. Artinya dia menuliskan algoritma itu di daalam
kepalanya.