Rabu, 26 Juni 2013

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.




algoritma Brute force  
Algoritma  Brute Force adalah sebuah  pendekatan
yang lempang (straightforward) untuk memecahkan
suatu masalah, biasanya didasarkan pada pernyataan
masalah (problem statement) dan definisi konsep
yang dilibatkan.

Prinsip –  prinsip algoritma brute force untuk
menyelesaikan persoalan Integer Knapsack ialah:
1)  Mengenumerasikan semua himpunan  bagian
dari solusi.
2)  Mengevaluasi total keuntungan  dari  setiap
himpunan bagian dari langkah pertama
3)  Pilih himpunan bagian yang mempunyai total
keuntungan terbesar

Algoritma Greedy
Secara harfiah,  greedy  berarti rakus atau tamak.
Algoritma  Greedy  merupakan  algoritma sedarhana
dan lempang yang paling populer untuk pemecahan
persoalan  optimasi (maksimum atau  minimum).
Prinsip  greedy   adalah: “take what you  can  get
now!”, yang digunakan dalam konteks positif.[7]

Ada tiga pendekatan dalam  menyelesaikan
persoalan  Integer Knapsack dengan algoritma
Greedy:

        i.            Greedy by profit. 
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai keuntungan terbesar. Strategi ini
mencoba memaksimumkan keuntungan dengan
memilih objek yang paling menguntungkan terlebih
dahulu.
      ii.            Greedy by weight.
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai berat paling  ringan. Strategi ini
mencoba memaksimumkan keuntungan dengan
memasukkan sebanyak mungkin objek ke dalam
knapsack.
    iii.            Greedy by density. 
Pada setiap langkah,  knapsack diisi dengan objek
yang mempunyai densitas,  pi  /wi  terbesar.   Strategi
ini mencoba  memaksimumkan keuntungan  dengan
memilih objek yang mempunyai keuntungan per unit
berat terbesar

Algoritma Dynamic Programming

Program Dinamis (dynamic programming): metode
pemecahan masalah dengan cara menguraikan solusi
menjadi  sekumpulan langkah (step) atau tahapan
(stage) sedemikian  sehingga solusi dari  persoalan
dapat dipandang  dari serangkaian keputusan  yang
saling berkaitan.

Pada penyelesaian persoalan dengan metode ini:
           I.            terdapat sejumlah berhingga pilihan  yang
mungkin,
        II.            solusi pada setiap tahap dibangun  dari hasil
solusi tahap sebelumnya,
     III.            kita menggunakan  persyaratan  optimasi dan
kendala untuk membatasi sejumlah pilihan yang
harus dipertimbangkan pada suatu tahap.

Dua  pendekatan yang digunakan  dalam  Dynamic
Progamming  adalah maju (forward atau  up-down)
dan mundur (backward atau bottom-up). 

Misalkan x1, x2, …, xn menyatakan peubah (variable)
keputusan  yang harus dibuat masing-masing untuk
tahap 1, 2, …, n. Maka,
a.  Program dinamis  maju: Program dinamis
bergerak mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai  tahap n. Runtunan
peubah keputusan adalah x1, x2, …, xn.

b.  Program dinamis  mundur: Program dinamis
bergerak mulai dari tahap  n, terus mundur ke
tahap n – 1, n – 2, dan seterusnya sampai tahap
1.  Runtunan peubah keputusan  adalah  xn,  xn-1,
…, x1.

Secara  umum, ada empat langkah yang  dilakukan
dalam  mengembangkana algoritma program
dinamis:
1.  Karakteristikkan struktur solusi optimal.
2.  Definisikan secara rekursif nilai solusi optimal.
3.  Hitung nilai solusi optimal secara maju atau mundur.
4.  Konstruksi solusi optimal.

BRANCH AND BOUND
          Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari bagaimana caranya memperkecil Search Tree menjadi sekecil mungkin.
          Sesuai dengan namanya, metode ini terdiri dari 2 langkah yaitu :
          Branch yang artinya membangun semua cabang tree yang mungkin menuju solusi.
       Bound yang artinya menghitung node mana yang merupakan active node (E-node) dan node mana yang merupakan dead node (D-node) dengan menggunakan syarat batas constraint (kendala).

TEKNIK BRANCH AND BOUND
          FIFO Branch and Bound
 Adalah teknik Branch and Bound yang menggunakan bantuan queue untuk perhitungan Branch     and Bound secara First In First Out.
          LIFO Branch and Bound
             Adalah teknik Branch and Bound yang menggunakan bantuan stack untuk perhitungan Branch and Bound secara Last In First Out.
          Least Cost Branch and Bound
         Teknik ini akan menghitung cost setiap node. Node yang memiliki cost paling kecil dikatakan memiliki kemungkinan paling besar menuju solusi.
MASALAH YANG DAPAT DIPECAHKAN
          Branch and Bound dapat digunakan untuk memecahkan berbagai masalah yang menggunakan Search Tree
  -      Traveling Salesman Problem
  -       N-Queen Problem
  -        15 Puzzle Problem
  -       0/1 Knapsack Problem
  -    Shortest Path

   Algoritma Pseudo-Code
Algoritma Pseudo-Code merupakan algoritma yang paling mendekati bahasa pemrograman dan yang paling mudah untuk digunakan langsung pada bahasa pemrograman. Kedua algoritma sebelumnya memerlukan penulisan ulang saat akan dipindahkan pada suatu bahasa pemrograman tertentu. Algoritma Pseudo-Code adalah penulisan langkah-langkah penyelesaian masalah yang Paling mendekati bahasa pemrograman sehingga memudahkan pembahasan

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.
 Algoritma Kalimat
Algoritma kalimat tersusun atas kalimat - kalimat dalam suatu bahasa yang menerangkan cara cara untuk menyelesaikan masalah. Karenakita berbicara mengenai ilmu komputer ,maka kita berbicara masalh bagaimana caranya meminta dan mengolah input user dan menampilkan output hasi pengolahan input tersebut.
Algoritma Flowchart
Algoritma flowchart dibuat untuk menyederhanakan algoritma kalimat dan untuk memudahkan penggambaran jalannya program.


  • contoh Alur flochart

3 komentar:

You Know Me mengatakan...

pas banget pak saya ada tugas, ijin copas ya.. ^^

terima kasih atas ilmunya... sangat bermanfaat.. ^^

oh iya sudah di follow urutan 7, jangan lupa di follback ya pak.. terima kasih.. ^^

nk mengatakan...

artikelnya ok, back song nya apalagi ok bnget ^^

Anonim mengatakan...

mantap gan lengkap sekali berbagi pengetahuan tentang algoritma, terima kasih ^^