Sejarah, Definisi dan Cara Kerja Algoritma Divide and Conquer
Nama: Kristian Yunando
Npm: 19316009
Kelas: TK19C
Algoritma Divide and
Conquer
Sejarah divide and
conquer Divide and Conquer dulunya adalah strategi militer yang dikenal
dengan nama divide ut imperes. Sekarang strategi tersebut menjadi strategi
fundamental di dalam ilmu komputer dengan nama Divide and Conquer. pengertian
Divide: membagi masalah
menjadi beberapa upa-masalah yang memiliki kemiripan dengan masalah semula
namun berukuran lebih kecil (idealnya berukuran hampir sama),
Conquer: memecahkan
(menyelesaikan) masing-masing upa-masalah (secara rekursif), dan
Combine: mengabungkan
solusi masing-masing upa-masalah sehingga membentuk solusi masalah semula.
Obyek permasalahan yang
dibagi : masukan (input) atau instances yang berukuran n 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 skema rekursif. Perkembangan
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.
Berikut pseudocode dari strategi divide and conquer
Data Dependence of Divide Function
Control Parallelism or Sequentiality
Klasifikasi dari Algoritma/Strategi Divide and Conquer
Tabel karakteristik
dari Algoritma divide and conquer. Catatan bahwa quicksort
dan quickhull bisa
dikonversi kedalam algoritma yang balance dengan cara
menemukan median (titik
tengah) yang tepat.
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
Rekursi Divide and
Conquer
Machiavelli menggunakan
sintaks : Split (result1 = func (arg1), result2 = func (arg2) [,
resultn = func (argn)]) Untuk membentuk fungsi call dalam
algoritma divide and conquer. varn adalah hasil akhir yang
kembali ke fungsi func dalam argument argn. Machiavelli
membuat versi fungsi yang salah satunya mengaplikasikan reduksi menjadi sebuah
“pengulangan sederhana” . Script berikut adalah contoh pemakaian fungsi fetch :
Penerapan fetch untuk
integer
Script diatas dapat
digunakan untuk meng-compile algoritma parallel dari versi serial. Script
berikut menunjukkan contoh lain dimana lebih efisien dalam penerapannya yaitu
Quicksort :
Contoh Penerapan Pada
Binary Search
Temukan sebuah elemen
atau bilangan pada array yang telah tersortir :
1. Divide : cek elemen
tengah
2. Conquer : secara
rekursif, cari disebuah subarray
3. Combine : trivial
Kasus :
Temukan bilangan 9 pada
deret 3, 5, 7, 8, 9, 12, 15
Contoh Penerapan Bucket
Sort Secara Paralel
Asumsikan sebuah p
processor menangani setiap bucket (p bucket)
Contoh Lain Penerapan Bucket Sort Secara Paralel
Pada contoh ini dikenalkan sebuah operasi message-passing yang baru
all-to-all broadcast.
“all-to-all” broadcast routine
Mengkomunikasikan data dari masing-masing proses ke proses lainnya
all-to-all” routine
pada dasarnya mentransfer baris-baris dari sebuah array ke kolomkolom yang
dinamakan Transpose Matrix.
Kesimpulan :
Algoritma divide
and conquer sudah lama diperkenalkan sebagai sumber dari pengendalian
proses parallel, karena masalah-masalah yang terjadi dapat diatasi secara
independent. Banyak arsitektur dan bahasa pemrograman parallel mendesain
implementasinya (aplikasi) dengan struktur dasar dari algoritma divide and
conquer.
Divide and
Conquer secara umum terbagi dalam tiga fase, divide yakni
membagi masalah kedalam sub-sub masalah yang lebih kecil, conquer yakni
menyelesaikan sub-sub masalah secara rekursif, dan combine menggabungkan
hasil dari penyelesian sub-sub masalah menjadi penyelesaian yang dikehendaki
Terdapat empat hal pada strategi “divide and conquer” : branching factor, balance, data
dependence of divide function dan sequentiality.
Komentar
Posting Komentar