P. 1
algoritma

algoritma

|Views: 39|Likes:
Published by Bayu Tri W

More info:

Published by: Bayu Tri W on Oct 06, 2013
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

04/17/2014

pdf

text

original

1. Definisi Algoritma Greedy Algoritma Greedy membentuk solusi langkah per langkah (step by step).

Terdapat banyak pilihan yang perlu di eksplorasi pada setiap langkah solusi, karenanya pada setiap langkah harus dibuat keputusann yang terbaik dalam menentukan pilihan.Keputusan yang telah diambil pada suatu langkah tidak dapat diubah lagi pada langkah selanjutnya. Sebagai contoh, jika kita manggunakan algoritma Greedy untuk menempatkan komponen diatas papan sirkuit, sekali komponen telah diletakkan dan dipasang maka tidak dapat dipindahkan lagi. Pada setiap langkah diperoleh optimum lokal. Bila algoritma berakhir, kita berharap optimum lokal menjadi optimum global. 2.Skema umum Algoritma Greedy Algoritma greedy disusun oleh elemen-elemen berikut: 1.Himpunan kandidat. Berisi elemen-elemen pembentuk solusi. 2.Himpunan solusi Berisi kandidat-kandidat yang terpilih sebagai solusi persoalan. 3.Fungsi seleksi (selection function) Memilih kandidat yang paling memungkinkan mencapai solusi optimal. Kandidat yang sudah dipilih pada suatu langkah tidak pernah dipertimbangkan lagi pada langkah selanjutnya. 4.Fungsi kelayakan (feasible) Memeriksa apakah suatu kandidat yang telah dipilih dapat memberikan solusi yang layak, yakni kandidat tersebut bersama-sama dengan himpunan solusi yang sudah terbentuk tidak melanggar kendala (constraints) yang ada. Kandidat yang layak dimasukkan ke dalam himpunan solusi, sedangkan kandidat yang tidak layak dibuang dan tidak pernah dipertimbangkan lagi. 5.Fungsi obyektif, yaitu fungsi yang memaksimumkan atau meminimumkan nilai solusi(misalnya panjang lintasan, keuntungan, dan lain-lain).Contoh pada masalah Pemilihan Processor, berdasarkan benchmark elemen-elemen algoritma greedy-nya adalah: a.Himpunan kandidat: himpunan hardware yang terdiri dari Processor, Memory dan Graphic card b.Himpunan solusi: Kombinasi Processor , Memory dan Graphic card dengan Benchmark terbaik namun dengan total harga yang tidak melebihi budget maksimum c.Fungsi seleksi: Seleksi Processor, Memory dan Graphic card agar mendapat performa optimum dan tidak melebihi budget maksimum yang tersedia d.Fungsi obyektif: Budget maksimum yang tersedia

 . keteraturan. Evaluasi setiap kemungkinan solusi “satu per satu” dan simpan solusi terbaik yang ditemukan sampai sejauh ini (the best solusi found so far).  Cara kerja Algoritma Brute Force 1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis. tapi kalau mencari pola2 dasar. Algoritma brute force memecahkan masalah dengan sangat sederhana. langsung dan dengan cara yang jelas . 3. Bila pencarian solusi berakhir. biasanya didasarkan pada problem statement dan definisi konsep yang dilibatkan. atau trik-trik khusus. umumkan solusi terbaik (the winner) Karakteristik Algoritma Brute Force  Algoritma brute force sebenarnya bukanlah algoritma yang “cerdas” dan mangkus(efisien).Algoritma Brute Force ???  Brute force adalah sebuah pendekatan yang sangat jelas(straightforward) untuk memecahkan suatu persoalan. Kadang-kadang algoritma brute force disebut juga algoritma naif (naïve algorithm). 2. Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ketidakmangkusannya itu. biasanya dapat membantu membantu untuk menemukan algoritma yang lebih cerdas dan lebih mangkus lagi. karena ia membutuhkan jumlah langkah yang besar/banyak dalam penyelesaiannya dan tentu saja membutuhkan waktu yang berbanding lurus dengan jumlah langkah penyelesaiannya.

} Deklarasi i : integer { variabel untuk jumlah langkah } k : integer { variabel. Bayangkan. Untuk persoalan2 yang kecil.sangat sulit menemukan masalah yang tidak dapat dipecahkan dengan teknik brute force. Masukan : Array L yang sudah terdefenisi nilai-nilainya. Berikut contoh persoalan sorting yang dipecahkan dengan algoritma bubble sort: procedure BubbleSort (input/output L : arrayOfInt. namun teknik brute force dapat diterapkan pada sebagian besar persoalan. tapi ada masalah yang hanya dapat dipecahkan secara brute force.temp endif endfor endfor . Algoritma brute force sering digunakan sebagai basis bila membandingkan beberapa alternatif algoritma yang mangkus.  Algoritma bubble sort mengimplementasikan teknik brute force dengan jelas sekali..N] sehingga terurut menaik dengan metode pengurutan bubble sort. kesederhanaan brute force lebih diperhitungkan daripada ketidakmangkusannya. Keluaran: Array L yang terurut menaik sedemikian sehingga L[N] …  L[2] L[1] .L[j-1] L[j-1] <..untuk pengapungan pada setiap langkah } temp : integer { variabel untuk pertukaran } Algoritma: for i <.L[j] L[j] <. Meskipun brute force bukan merupakan teknik pemecahan masalah yang mangkus.1 to n – 1 do for j <. input n : integer) { Mengurutkan array L[1.n downto i + 1 do {looping menurun} if (L[j] < L[j-1]) then {tukar L[j] dengan L[j-1]} temp <..

xn menyatakan peubah (variable) keputusan yang harus dibuat masing-masing untuk . Solusi dicari dengan membentuk lintasan dari akar ke daun. maka simpul itu akan menjadi simpul mati dimana simpul itu tidak akan diperluas lagi. …. 3.[7] Pada penyelesaian persoalan dengan metode ini: (1) terdapat sejumlah berhingga pilihan yang mungkin. Dua pendekatan yang digunakan dalam Dynamic Progamming adalah maju (forward atau up-down) dan mundur (backward atau bottom-up). (3) kita menggunakan persyaratan optimasi dan kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap. (2) solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya. Jika posisi terakhir ada di simpul mati. maka pencarian dilakukan dengan membangkitkan simpul anak yang lainnya dan jika tidak ada simpul child maka dilakukan backtracking ke simpul parent.Algoritma backtracking Algoritma backtracking merupakan salah satu metode pemecahan masalah yang termasuk dalam strategi yang berbasis pencarian pada ruang status. Algoritma backtracking bekerja secara rekursif dan melakukan pencarian solusi persoalan secar sistematis pada semua kemungkinan solusi yang ada. Simpul yang sudah dilahirkan dinamakan simpul hidup dan simpul hidup yang diperluas dinamakan simpul-E 2. Prinsip dasar algoritma backtracking adalah mencoba semua kemungkinan solusi yang ada. 4. Pencarian dihentikan jika kita telah menemukan solusi atau tidak ada simpul hidup yang diperlukan. 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. Langkah-langkah pencarian solusi dengan Backtracking dalah sebagai berikut : 1. maka pencarian solusi dilakukan dengan menelusuri struktur berbentuk pohon berakar secara preorder. Jika lintasan yang diperoleh dari perluasan simpul-E tidak mengarah ke solusi. x2. Oleh karena algoritma ini berbasis pada algoritma Depth-First Search (DFS). Misalkan x1.

Program dinamis maju: Program dinamis bergerak mulai dari tahap 1. Maka. Banyak arsitektur dan bahasa pemrograman paralel mendesain implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and conquer. Konstruksi solusi optimal. Untuk menyelesaikan masalah-masalah yang besar. terus maju ke tahap 2. dan seterusnya sampai tahap 1. Karakteristikkan struktur solusi optimal. x1. a. Algoritma Divide and Conquer Algoritma divide and conquer sudah lama diperkenalkan sebagai sumber dari pengendalian proses paralel. …. dan seterusnya sampai tahap n. 3. Hitung nilai solusi optimal secara maju atau mundur. LIFO Branch and Bound • – • . 4. ada empat langkah yang dilakukan dalam mengembangkana algoritma program dinamis: 1.tahap 1. Secara umum. 3. 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). xn-1. karena masalah-masalah yang terjadi dapat diatasi secara independen. …. 2. Program dinamis mundur: Program dinamis bergerak mulai dari tahap n. …. n. 2. Runtunan peubah keputusan adalah x1. b. Definisikan secara rekursif nilai solusi optimal. terus mundur ke tahap n – 1. BRANCH AND BOUND • • – – Metode Branch and Bound adalah sebuah teknik algoritma yang secara khusus mempelajari bagaimana caranya memperkecil Search Tree menjadi sekecil mungkin. metode ini terdiri dari 2 langkah yaitu : Branch yang artinya membangun semua cabang tree yang mungkin menuju solusi. x2. 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. dan dibagi (dipecah) menjadi bagian yang lebih kecil dan menggunakan sebuah solusi untuk menyelesaikan problem awal adalah prinsip dasar dari pemrograman/strategi divide and conquer. xn. Sesuai dengan namanya. Runtunan peubah keputusan adalah xn. n – 2.

Pengertian Wikipedia : Algoritma Floyd-Warshall memiliki input graf berarah dan berbobot (V. akan tetapi tidak diperbolehkan bagi graf ini untuk memiliki siklus dengan bobot negatif. Dalam beberapa kasus. Algoritma Dijkstra membutuhkan parameter tempat asal. Analisis Algoritma Floyd-Warshall . Algoritma Greedy gagal memberikan solusi terbaik karena kelemahan yang dimilikinya tadi. Pengertian Algoritma Floyd-Warshall . Sisi pada E diperbolehkan memiliki bobot negatif. Artinya solusi-solusi tersebut dibentuk dari solusi yang berasal dari tahap sebelumnya dan ada kemungkinan solusi lebih dari satu. Pemrograman dinamis mampu : • Mengurangi pengenumerasian (Pendaftaran) keputusan yang tidak mengarah ke solusi. maka bagian solusi sampai suatu tahap (misalnya tahap ke-i) juga optimal. • Prinsip yang dipegang oleh pemrograman dinamis adalah prinsip optimalitas. Definisi Strategi Algoritma Floyd Warshall Hal yang membedakan pencarian solusi menggunakan pemrograman dinamis (Warshall) dengan algoritma greedy adalah. yang berupa daftar titik (node/vertex V) dan daftar sisi (edge E). bahwa keputusan yang diambil pada tiap tahap pada algoritma greedy hanya berdasarkan pada informasi yang terbatas.E). Algoritma ini menghitung bobot terkecil dari semua jalur yang menghubungkan sebuah pasangan titik. sehingga hanya nilai optimum yang diperoleh pada saat itu. dan tempat tujuan. Jumlah bobot sisi-sisi pada sebuah jalur adalah bobot jalur tersebut. di mana pada setiap langkah dipilih sisi dengan bobot terkecil yang menghubungkan sebuah simpul yang sudah terpilih dengan simpul lain yang belum terpilih. dan melakukannya sekaligus untuk semua pasangan titik. kita tidak memikirkan konsekuensi yang akan terjadi seandainya kita memilih suatu keputusan pada suatu tahap. Cara kerja algoritma Dijkstra memakai stategi greedy. Least Cost Branch and Bound Teknik ini akan menghitung cost setiap node. . yaitu jika solusi total optimal. Contoh penerapan algoritma djikstra adalah lintasan terpendek yang menghubungkan antara dua kota berlainan tertentu (Single-source Singledestination Shortest Path Problems).Pengertian Umum : Merupakan salah satu varian dari pemrograman dinamis.– • – • – – – – Adalah teknik Branch and Bound yang menggunakan bantuan stack untuk perhitungan Branch and Bound secara Last In First Out. Di sinilah peran pemrograman dinamis yang mencoba untuk memberikan solusi yang memiliki pemikiran terhadap konsekuensi yang ditimbulkan dari pengambilan keputusan pada suatu tahap. Jadi pada algoritma greedy. 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 Dijkstra adalah algoritma yang digunakan untuk mencari lintasan terpendek pada sebuah graf berarah. Hasil akhir dari algoritma ini adalah jarak terpendek dari tempat asal ke tempat tujuan beserta rutenya. yaitu suatu metode yang melakukan pemecahan masalah dengan memandang solusi yang akan diperoleh sebagai suatu keputusan yang saling terkait. Node yang memiliki cost paling kecil dikatakan memiliki kemungkinan paling besar menuju solusi.

j.Algoritma Floyd-Warshall membandingkan semua kemungkinan lintasan pada graf untuk setiap sisi dari semua simpul. Hal tersebut bisa terjadi karena adanya perkiraan pengambilkan keputusan (pemilihan jalur terpendek) pada setiap tahap antara dua simpul. di mana bobot keseluruhan dari semua edge dalam pohon diminimalisasikan. Ini berarti menemukan subset dari tepi yang membentuk sebuah pohon yang mencakup setiap titik . tersebut tidak membentuk sirkuit di T. Seiring dengan berjalannya iterasi untuk setiap sisi. k sebagai titik perantara.. di mana berat total dari semua tepi di atas pohon diminimalkan. Algoritma Kruskal adalah contoh dari algoritma rakus . Jika grafik tidak terhubung. Oleh sebab itu. kemudian tambahkan sisi tersebut ke dalam T. Langkah-langkah untuk mencari bobot minimum: 1. N (sebanyak N buah). Sirkuit : simpul awal = simpul akhir 2.d. k+1. Reverse-Hapus algoritma . hingga perkiraan tersebut diketahui sebagai nilai optimal. melainkan hanyalah sebuah pohon yang merentang minimum. hal 1956. Algoritma Kruskal akan terus menambahkan sisi – sisi ke dalam hutan yang sesuai hingga akhirnya tidak akan ada lagi forest dengan. Misalkan terdapat suatu graf G dengan simpul-simpul V yang masing-masing bernomor 1 s. maka forest akan memiliki pohon yang semakin sedikit. Bila graf tersebut tidak terhubung. Algoritma ini pertama kali muncul dalam Prosiding American Mathematical Society . maka analogi ini disebut dengan growing forest. masukkan dalam Tree ( T ). Algoritma Kruskal adalah algoritma dalam teori graph yang menemukan suatu pohon rentang minimum untuk terhubung dalam graf berbobot . Growing forest maksudnya adalah untuk membentuk pohon merentang minimum T dari grafG adalah dengan cara mengambil satu per satu sisi dari graf G dan memasukkannya ke dalam pohon yang telah terbentuk sebelumnya. maka menemukan hutan rentang minimum (pohon rentang minimum untuk setiap komponen terhubung ) . Tujuan akhir penggunaan fungsi ini adalah untuk mencari jalur terpendek dari setiap simpul i ke simpul j dengan perantara simpul 1 s. Ambil sisi dari graph (G) yang berbobot minimum. dan algoritma Borůvka's Dasar pembentukan algoritma Kruskal berasal dari analogi growing forest. k) yang mengembalikan kemungkinan jalur terpendek dari i ke j dengan hanya memanfaatkan simpul 1 s. Graph : kumpulan dua himpunan yaitu himpunan titik ( vertex / simpul / node ) dan kumpulan dari garis ( edge ) Tree : graph tak berarah yang terhubung dan tidak mengandung sirkuit. Ini berarti bahwa sebuah himpunan bagian dari edge yang membentuk suatu pohon yang mengandung node. 3. Misalkan pula terdapat suatu fungsi shortestPath(i.tetapi sisi . Algoritma lain untuk masalah ini termasuk Algoritma Prim . Ulangi langkah 2 sebanyak (N -2 ) kali.d. Pilih sisi yang mempunyai bobot minimum dan bersisian dengan simpul di T .d. maka graf itu hanya memiliki satu pohon rentang minimum untuk satu dari komponen yang terhubung. Algoritma Prim Menurut definisi dari Wikipedia Algoritma Prim adalah sebuah algoritma dalam teori graf untuk mencari pohon rentang minimum untuk sebuah graf berbobot yang saling terhubung.

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->