Professional Documents
Culture Documents
OLEH :
SUPRIYANTO (G651090191)
OKE HENDRADHY (G651090101)
KAMALUDDIN MAHFUDZ (G651090231)
Puji syukur kehadirat Allah SWT, atas berkat rahmat dan hidayah-Nya kami dapat
menyelesaikan tugas mata kuliah pemrosesan paralel ini. Tulisan ini akan membahas penerapan
algoritma bucket sort secara sekuensial dan paralel. Algoritma paralel dirancang dalam rangka
untuk mengoptimalkan (mempercepat) proses pengurutan n buah bilangan.
Algoritma bucket sort sendiri merupakan variasi dari berbagai macam algoritma pengurutan
dengan prinsip divide dan conquer, yaitu membagi n buah bilangan yang akan diurutkan menjadi
m buah sub proses untuk diselesaikan. Setelah proses pengurutan di sub masalah selesai maka
solusi digabungkan ke dalam proses aslinya.
Penulis menyadari dalam penyusunan makalah ini masih banyak kekurangan. Kritik dan saran
demi kemajuan di kemudian hari sangat kami harapkan.
Hormat Kami,
Tim Penulis
i
DAFTAR ISI
i
PENDAHULUAN
A. Latar Belakang
Sorting (pengurutan) adalah proses mengurutkan n buah bilangan dalam urut menaik
(ascending) atau urut menurun (descending) (Cormen, 2001). Proses mengurutkan 2 buah
bilangan merupakan proses membandingkan bilangan tersebut dengan operator pembanding
yang kemudian dilakukan proses tukar posisi (exchange position) sesuai dengan operator
pembandingnya apakan bilangan tersebut di urut secara ascending atau di urutkan secara
descending. Proses tersebut berlanjut sampai dengan n buah bilangan dapat terurut
sempurna.
Algoritma mengurutkan suatu array memiliki variasi yang cukup banyak tergantung
dari teknik mengurutkan array tersebut sehingga menghasilkan suatu kompleksitas waktu
proses mengurutkan yang berbeda-beda. Pada mesin sekuensial yaitu proses mengurutkan
suatu array oleh hanya satu buah prosesor, mengurutkan n buah bilangan merupakan proses
mengurutkan yang rutin prosesnya mengantri melalui urutan waktu (t) tertentu dalam
prosesor. Kompleksitas waktu pengurutan diuji dalam keadaan terburuk (worstcase) dan
keadaan rata-rata (average case), sehingga menghasilkan notasi O (Big Oh) dan notasi
(Big Omega), dan memiliki variasi yang tergolong dalam 3 kategori sorting, yaitu :
comparison sort, not comparison sort dan external sort (Sedgewick, 1998).
Pada mesin paralel, yaitu proses yang memanfaatkan n buah prosesor sebagai media
proses sorting, n bilangan yang akan di sorting di pecah terlebih dahulu melalui teknik foster
(Grama, 2003), yang selanjutnya di bandingkan antar bilangan yang ada dimasing-masing
prosesor yang kemudian di satukan kembali dalam keadaan terurut. Tentunya proses ini
menghasilkan algoritma yang secara prinsip lebih cepat di bandingkan proses sekuential,
karena masalah yang ada di pecah-pecah terlebih dahulu dalam sub masalah yang lebih kecil
untuk kemudian di proses. Akan tetapi faktor lain dapat menghasilkan kondisi sebaliknya,
karena dengan semakin menaiknya jumlah prosesor yang digunakan maka semakin menaik
juga kebutuhan akan komunikasi antar prosesor yang ada. Hal ini dapat menyebabkan bahwa
tidak setiap penambahan jumlah prosesor dapat meningkatkan waktu proses dari suatu
algoritma sorting paralel.
Salah satu algoritma sorting yang cukup menarik untuk di uji pada kondisi sekuential
maupun kondisi paralel adalah algoritma bucket sort (Grama, 2003). Algoritma ini memiliki
teknik yang cukup menarik karena algoritma ini akan memilah elemen array n dalam suatu
interval [a, b] dibagi menjadi subintervals sama besar m dalam suatu bucket, setiap bucket
akan berisikan n/m buah bilangan untuk kemudian bucket yang ada di urutkan dan
dibandingkan antar bucket yang ada sehingga menghasilkan suatu proses terurut.
Dengan asumsi bahwa setiap bucket merupakan procesor yang ada, maka pada proses
paralel algoritma bucket akan dirumuskan dalam 3 langkah yaitu : proses mempartisi blok n
buah bilangan ke dalam setiap prosesor p, lalu mengirimkan setiap subblok yang ada ke
prosesor yang sesuai dan terakhir proses yang ada disetiap bucket yang didefinisikan sebagai
p buah prosesor dilakukan proses pengurutan secara sekuensial.
1
Dilihat dari kompleksitas algoritma, algoritma bucket sort secara sekuential menjadi
paralel, maka perlu dilakukan uji atas algoritma bucket sort ini dalam kondisi sekuensial dan
kondisi paralel dan sampai dimana algoritma tersebut dalam keadaan optimal. Pada
percobaan ini hanya dibatasi pada analisis terhadap algoritma sekuensial dari bucket sort.
B. Tujuan
Tujuan dari penulisan makalah ini adalah untuk :
1. Melakukan perbandingan antara proses algoritma bucket sort secara sekuential dan
paralel;
2. Menguji nilai kompleksitas waktu, speedup, efisiensi dan iso efisiensi dari bucket sort
secara paralel
3. Menganalisa kinerja algoritma bucket sort tersebut pada mesin paralel
2
LANDASAN TEORI
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 and conquer adalah varian dari beberapa strategi pemrograman topdown,
tetapi keistimewaannya adalah membuat sub-sub problem dari problem yang besar, oleh
karena itu strategi ini ditunjukkan secara berulang-ulang (recursively), didalam menerapkan
algoritma yang sama dalam sub-sub problem seperti yang diterapkan pada masalah aslinya
(original problem). Sebagaimana prinsip dasar algoritma perulangan dibutuhkan sebuah
kondisi untuk mengakhiri perulangan tersebut. Biasanya untuk mengecek apakah problem
sudah cukup kecil untuk diselesaikan dengan metode secara langsung. Mungkin dari segi
ilustrasi kita, bahwa proses-proses pada komputer paralel tentunya memiliki
proses/problem/job yang cukup kompleks sehingga harus dipecah-pecah menjadi sub-sub
problem. Salah satu penerapan algoritma divide and conquer adalah pengurutan data dengan
metode merge.
B. Bucket Sort
Bucket sort merupakan salah satu bentuk algoritma divide & conquer melalui metode
partisi dan berjalan dalam keadaan linear time (Wilkinson & Allen, 2005). Secara teoritis,
proses pengurutan dilakukan dengan membagi dan memecahkan himpunan array ke dalam
beberapa ember virtual secara merata.
3
Bilangan belum terurut
32 45 2 11 67 5 8 12 1 22 23 10 90 15 27 19 33 ...... 26 28 7
Bucket
Adapun ember yang dijadikan partisi atas n data kemudian diurutkan secara
individual, menggunakan algoritma sorting yang berbeda atau melalui penerapan bucket sort
secara rekursif. Ember virtual yang merupakan partisi atas n array dan merupakan proses
acak yang mendistribusikan elemen seragam pada interval [0,1), dimana pembagian tersebut
dilakukan merata sama besar. Dengan asumsi input dalam n elemen pada array A, untuk
masing-masing A memenuhi 0 A [i] 1, sehingga membutuhkan array bantu B yang
merupakan ember sub interval (Wilkinson & Allen, 2005).
4
METODE
5
PEMBAHASAN
32 45 2 11 67 5 8 12 1 22 23 10 90 15 27 19 33 ...... 26 28 7
Bucket
6
B. Pseudocode Algoritma Bucket Sort
Berdasarkan pada proses-proses yang dilakukan pada algoritma bucket sort maka
dapat disusun pseudocode algoritma sekuensialnya. Berikut adalah implementasi
pseudocode algoritma bucket sort :
function bucket-sort(array, n) is
buckets new array of n empty lists
for i = 0 to (length(array)-1) do
insert array[i] into buckets[msbits(array[i], k)]
for i = 0 to n - 1 do
next-sort(buckets[i])
return the concatenation of buckets[0], ..., buckets[n-1]
dimana
n = jumlah array
m = jumlah bucket
7
KESIMPULAN DAN SARAN
A. Kesimpulan
Metode divide and conquer pada algoritma sekuensial berguna untuk mengoptimalkan
waktu yang digunakan (kompleksitas) untuk menjalankan algoritma. Salah satu algoritma
pengurutan yang dapat diterapkan dengan menggunakan prinsip divide and conquer adalah
algoritma bucket sort. Dari hasil analisis dapat disimpulkan bahwa kompleksitas algoritma
bucket sort dengan menggunakan metode divide and conquer adalah sebesar O( n log (n/m),
dimana n adalah jumlah array dan m adalah jumlah bucket yang digunakan.
B. Saran
Sementara itu untuk melakukan mempercepat waktu komputasi maka perlu dilakukan
ujicoba terhadap kinerja algoritma paralel.
8
DAFTAR PUSTAKA
Grama, A; Gupta, A; Karypis, George; dan Kumar, V. 2003. Introduction to Parallel Computing,
Second Edition - Chapter 9. Sorting. Addison Wesley. USA.
Cormen, Thomas H. Charles E. Leiserson. Ronald L. Rivest. Clifford Stein. 2001. Introduction
to Algorithms, second Edition. Massachusetts Institute of Technology.
Petersan, W.P. dan Arbenz, P. 2004. Introduction to Parallel Computing, A Practical Guide With
Examples in C. Oxford University.
Quinn, Michael J. 2004. Parallel Programming in C with MPI and OpenMP. Mc Graw Hill.
Wilkinson, Barry dan Michael Allen. 2010. Tehcniques and Apllications Using Networked and
Parallel Computers second editons : Terjemahan. Andi : Yogyakarta.