172758820 rangkuman materi algoritma divide and conquer

8
Rangkuman materi Algoritma Divide and Conquer - Algoritma divide and conquer sudah lama diperkenalkan sebagai sumber dari pengendalian proses paralel, karena masalah-masalah yang terjadi dapat diatasi secara independen. Banyak arsitektur dan bahasa pemrograman paralel mendesain implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and conquer. Untuk menyelesaikan masalah-masalah yang besar, 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. - Divide: membagi masalah menjadi beberapa rupa‐masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran berukuran hampir hampir sama) sama), - Conquer: memecahkan (menyelesaikan) masing‐masing rupa‐ masalah (secara rekursif), dan - Combine: mengabungkan solusi masing- masing rupa‐masalah sehingga membentuk solusi masalah semula. - Obyek permasalahan yang dibagi: masukan(input) atau instances yang berukuran seperti: tabel(larik), matriks, eksponen, dll, bergantung pada masalahnya.

Upload: ardie-gucci

Post on 18-Dec-2015

8 views

Category:

Documents


3 download

DESCRIPTION

RANGKUMAN

TRANSCRIPT

Rangkuman materi Algoritma Divide and Conquer Algoritma divide and conquer sudah lama diperkenalkan sebagai sumber dari pengendalian proses paralel, karena masalah-masalah yang terjadi dapat diatasi secara independen. Banyak arsitektur dan bahasa pemrograman paralel mendesain implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and conquer. Untuk menyelesaikan masalah-masalah yang besar, 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. Divide:membagi masalah menjadi beberapa rupamasalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran berukuran hampir hampir sama) sama), Conquer: memecahkan (menyelesaikan) masingmasing rupamasalah (secararekursif), dan Combine: mengabungkan solusi masing- masing rupamasalah sehingga membentuk solusi masalah semula. Obyek permasalahan yang dibagi: masukan(input) atau instances yang berukuran seperti: tabel(larik), matriks, eksponen, dll, bergantung pada masalahnya. Tiap-tiap rupa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skemarekursif. MetodeStrategi Divide dan Conquer memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah-submasalah dapat diperoleh secara mudah, solusi submasalah-submasalah digabung menjadi solusi seluruh masalah. Skema umum algoritma divide dan conquerProcedure DNC ( i,j : integer )Var K : integer ;If SMALL (i,j) then SOLVE (i,j)Else beginK : = DIVIDE (i,j)COMBINE (DNC(i,k),DNC(k+1,j))End ifKeterangan :SMALL adalah fungsi yang mengirim BOOLEAN, menentukan apakah ukuran telah cukup kecil sehingga solusi dapat diperoleh. Ukuran dinyatakan sebagai telah berukuran kecil bergantung masalah.DIVIDE adalah fungsi membagi menjadi 2 bagian pada posisi K. Biasanya bagian berukuran sama.COMBINE adalah fungsi menggabungkan solusi X dan Y submasalah. Solusi diperoleh dengan memanggil prosedur rekursif DNC.Jika ukuran kedua sub masalah sama, waktu komputasi DNC dideskripsikan hubungan rekuren berikut :T(n) = g (n),n kecil2 T (n/2) + f (n), Selainnya dimana : T(n) adalah waktu untuk DNC dengan n masukan, g(n) adalah waktu komputasi jawaban secara langsung untuk masukan kecil dan f(n) adalah waktu COMBINE. permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi terapan yang cukup banyak, seperti pada permasalahan grafika komputer,otomasi desain, pengenalan pola (pattern recognition), dan penelitian operasi. penyelesaian masalah convex hull. Algoritma ini ternyata memiliki kompleksitas waktu yang cukup kecil dan efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu juga, algoritma ini dapat digeneralisasi untuk permasalahan convex hull yang berdimensi lebih dari 3. Pada penyelasaian masalah pencarian Convex Hull dengan menggunakan algoritma Divide and Conquer, hal ini dapat dipandang sebagai generalisasi dari algoritma pengurutan merge sort. Berikut ini merupakan garis besar gambaran dari algoritmanya: Pertama-tama lakukan pengurutan terhadap titik-titik dari himpunan S yang diberikan berdasarkan koordinat absis-X, dengan kompleksitas waktu O(n log n). Jika |S| 3, maka lakukan pencarian convex hull secara brute-force dengan kompleksitas waktu O(1). (Basis). jika tidak, partisi himpunan titik-titik pada S menjadi 2 buah himpunan A dan B,dimana A terdiri dari setengah jumlah dari |S| dan titik dengan koordinat absix - X yang terendah dan B terdiri dari setengah dari jumlah |S| dan titik dengan koordinat absis-X terbesar. Secara rekursif lakukan penghitungan terhadap HA = conv(A) dan HB = conv(B). Lakukan penggabungan (merge) terhadap kedua hull tersebut menjad convex hull, H, dengan menghitung da mencari upper dan lower4 tangents untuk HA dan HB dengan mengabaikan semua titik yang berada diantara dua buah tangen in Penerapan Data-Parallel Divide and Conquer Algorithms Sorting Quick Sort, Binary Sort Computational Geometry Closest Pairs, Convex Hull, Delaunay Triangulation Graph Theory Travelling Salesman Problem (TSP), Graph Separators Numerical Matrix Multiplication, FFT Not Data Parallel Nave Merge Sort Binary Search (Pencarian Biner) dapat dilakukan jika data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus. Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : Mula-mula diambil posisi awal = 1 dan posisi akhir = N Cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2 Data yang dicari dibandingkan dengan data tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah 1. Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah sama dengan yang dicari. Berikut ini adalah contoh fungsi untuk mencari data menggunakan pencarian biner.Function BinarySearch (x: word) : integer;Varl, r, m : word;ketemu : boolean;beginl : = 1;r : = N;ketemu : = false;while (1 x ) kerjakan i j - 1 Jika (i < = j ) maka kerjakan baris 8 sampai dengan 10; jika tidak kerjakan baris 11. Tukar Data [ i ] dengan Data [ j ]. i i + 1 j j - 1 Jika ( L < j ) kerjakan lagi baris 1 dengan R = j. Jika ( i < R ) kerjakan lagi baris 1 dengan L = i. Jika suatu barisan yang terdiri dari n elemen yang ditempatkan dalam suatu array dan urutan yang diinginkan adalah urutan yang tidak turun (non decreasing) maka dapat digunakan metode Quick Sort yang dengan teknik Divide and Conquer Adapun algoritma Quick Sort tersebut terdiri dari dua prosedur yaitu prosedur PARTITION dan prosedur QUICKSORT.