Jumat, 15 Maret 2013

ALGORITMA

Sejarah istilah "Algoritma"

       Istilah Algoritma berasal dari perubahan nama seorang ahli Matematika dari Uzbekistan bernama Al Khawarizmi ke dalam bahasa Latin. Ahli Matematika itu hidup sekitar abad ke 9. Istilah ini terdapat dalam karyanya yang telah diterjemahkan dalam bahasa Latin yang berasal dari abad 12. Dalam karyanya tertulis “Algorithmi de Numero Indorum”.
       Awalnya, istilah Algoritma atau algorisma digunakan hanya untuk aturan aritmatis yang berfungsi untuk menyelesaikan persoalan yang menggunakan bilangan dalam bahasa Arab. Baru pada abad 18, Algoritma resmi digunakan untuk mencakup semua 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.

 
Pengertian Algoritma

                Algoritma, Algoritme, atau Algorithms adalah ilmu yang “berisi” kumpulan perintah untuk segera menyelesaikan suatu masalah.Perintah yang dimaksud biasanya berkenaan dengan apapun. Perintah tersebut harus bisa diterjemahkan dari awal hingga akhir secara sistematis atau bertahap. Semua perintah dapat diselesaikan dengan rumus Algoritma asalkan perintah tersebut memenuhi kriteria kondisi awal.           
          Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai.
Ketika suatu perintah atau permasalahan tersebut sudah memenuhi kriteria persyaratan, maka perintah atau permasalahan tersebut akan dapat terselesaikan menggunakan rumus atau ilmu Algoritma. Dalam memecahkan permasalahan, Algoritma mengeluarkan atau memiliki rangkaian langkah yang kadang diulang atau disebut iterasi dan memerlukan perbandingan hingga “teka-teki” itu terselesaikan.

Algoritma

Kesimpulannya bahwa :
  1. Algoritma adalah kumpulan langkah, artinya algoritma merupakan proses di dalam penyelesaian masalah.
  2. Langkah-langkah dalam algoritma berhingga banyaknya, artinya langkah-langkah tersebut memiliki akhir. Algoritma tanpa akhir, bukanlah termasuk algoritma karena tidak memberikan solusi apapun.
  3. Digunakan untuk menyelesaikan masalah matematika dan logika, artinya tidak semua masalah dapat diselesaikan dalam algoritma pemrograman. Algoritma ini hanya bisa digunakan  untuk menyelesaikan suatu masalah jika msalah tersebut dapat diterjemahkan ke dalam bahasa logika dan matematika, karena pemrograman komputer pada dasarnya adalah persoalan logika dan matematika.
             Algoritma terdiri dari beberapa notasi yaitu Deskriptif, Bagan-alir, dan Pseudo-Code. Namun yang paling mirip dengan bahasa pemrograman pascal adalah notasi Pseudo-Code. Karena pada notasi ini sedikit menyerap bahasa Pascal. Meskipun tidak semua tata cara penulisan/aturan dalam bahasa pascal diikuti. Algoritma dalam notasi ini sangat cocok untuk lebih mudah memahami atau menjalankan pemrograman dalam bahasa Pascal.
       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.
        Seperti yang telah diketahui bahwa komputer memerlukan instruksi yang berupa langkah-langkah pengurutan sehingga sebuah prosedur dapat dijalankan. Nah, prosedur yang berisi langkah-langkah penyelesaian masalah inilah yang disebut dengan Algoritma. Jadi, Sebelum masuk kepada tahap pemrograman komputer dengan bahasa pascal/lainnya ada baiknya mempelajari Algoritma yang merupakan pengantar kepada pemrograman komputer tersebut.

Perkembangan di dunia Algoritma menghadirkan jenis-jenis klasifikasi Algortima. Klasifikasi ini memiliki alasan serta pembenaran yang berbeda. Pendapat yang berbeda melahirkan metode yang juga berbeda.

 
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.
  • Dynamic programming, paradigma pemrograman dinamik akan sesuai jika digunakan pada suatu masalah yang mengandung sub-struktur yang optimal (, dan mengandung beberapa bagian permasalahan yang tumpang tindih . Paradigma ini sekilas terlihat mirip dengan paradigma Divide and Conquer, sama-sama mencoba untuk membagi permasalahan menjadi sub permasalahan yang lebih kecil, tapi secara intrinsik ada perbedaan dari karakter permasalahan yang dihadapi.
  • 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.

 
Algoritma dan Proses Komputerisasi

             Selain dengan Matematika, Algoritma juga sering dikaitkan dengan komputerisasi. Desain dan analisis Algoritma merupakan cabang dari ilmu komputerisasi. Desain itu berguna untuk mengetahui karakteristik dan sejauh mana kemampuan Algoritma dalam menyelesaikan masalah. Dalam ilmu komputer, Algoritma dipelajari secara abstrak tanpa melihat sistem komputer dan bahasa pemrograman yang digunakan.
        Takaran kerumitan dari Algoritma adalah gambaran seberapa banyak komputasi yang dibutuhkan oleh Algoritma. Semakin rumit permasalahan yang dihadapi, waktu yang dibutuhkan Algoritma untuk menyelesaikan suatu masalah menajdi semakin lama. Begitu juga sebaliknya. Dalam setiap penyelesaian suatu masalah, proses yang dimiliki Algoritma adalah perhitungan, pengolahan data dan penalaran otomatis.
          Algoritma memang bisa diterapkan pada perhitungan apapun. Namun, Algoritma berubah menjadi penting ketika berkaitan dengan cara atau proses komputerisasi. Program yang terdapat dalam komputer berisi Algoritma. Algoritma tersebut menentukan instruksi khusus pada komputer untuk melakukan serta melaksanakan tugas tertentu sesuai urutan.
             Dalam proses pengolahan data, Algoritma berkaitan dengan pengolahan informasi. Data yang dibaca oleh Algoritma masuk melalui sumbernya atau yang disebut input, kemudian ditulis ke perangkat output untuk kemudian diproses lebih lanjut. Data yang telah disimpan dianggap sebagai bagian dari keadaan internal entitas yang berperan menjalankan Algoritma.
          Dalam beberapa proses komputasi, Algoritma memberlakukannya secara ketat. Setiap data yang masuk harus memenuhi syarat dan ditangani secara sistematis, kriteria juga harus jelas. Hal ini dilakukan karena sudah sesuai dengan syarat dan kriteria awal dari Algoritma itu sendiri.
            Langkah-langkah ketat seperti ini adalah langkah tepat dalam Algoritma. Perhitungan secara tepat menjadi prioritas. Instruksi yang diberikan Algoritma ini tergambar secara eksplisit atau tersirat. Hasilnya, atau output akan teratur berurutan seperti dari atas ke bawah atau sebaliknya.