Rangkuman Materi Algoritma Divide and Conquer
January 12, 2021 | Author: Anonymous | Category: N/A
Short Description
Download Rangkuman Materi Algoritma Divide and Conquer...
Description
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
upa‐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.
Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skemarekursif.
-
Metode Strategi 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 conquer Procedure DNC ( i,j : integer ) Var K : integer ; If SMALL (i,j) then SOLVE (i,j)
Else begin K : = DIVIDE (i,j) COMBINE (DNC(i,k),DNC(k+1,j)) End if Keterangan : 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 kecil 2
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
Naïve 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; Var l, r, m : word; ketemu : boolean; begin l : = 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.
View more...
Comments