You are on page 1of 16

METODE DIVIDE DAN CONQUER

Makalah ini diajukan untuk memenuhi salah satu tugas mata kuliah Analisis dan Desain Algoritma

Dosen : Jajang Kusnendar, M.T

Dibuat Oleh : Asep Doni Pradana (1002376) M. Ade Lukmanul Hakim (1005396) Nur Azizah (1001131) Randy Wirantika (1006748) Renisa Suryahadikusumah (1005215) Suci Ramadhani Putri (1006239)

PRODI ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS PENDIDIKAN INDONESIA 2012

ABSTRAK Algoritma divide dan conquer adalah salah satu metode penyelesaian algoritma yang dapat memecahkan permasalahan-permasalahan yang sulit menjadi sub-sub masalah sehingga penyelesaian permasalahan tersebut lebih efisien dan akses memori lebih cepat. Divide dan conquer secara umum terbagi menjadi tiga fase, yakni divide yaitu membagi masalah kedalam sub-sub masalah yang lebih kecil, conquer yaitu menyelesaikan sub-sub masalah secara rekursif, dan combine yang

menggabungkan hasil dari penyelesaian sub-sub masalah menjadi penyelesaian yang dikehendaki. Selain dari pada tiga fase umum divide dan conquer, terdapat empat strategi dalam algorittma divide dan conquer yaitu branching factor, balance, data dependence of divide function, dan sequentiality. Keuntungan menggunakan algoritma divide dan conquer adalah dapat menyelesaikan permasalahan yang sulit, dari segi keefisienan algoritma divide dan conquer merupakan algoritma yang menyelesaikan masalah yang efisien, parallel artinya setiap sub masalah dapat diselesaikan oleh processor yang berbeda dan akses memori yang tidak terlalu lambat. Namun dari keuntungan tersebut tentunya terdapat kelemahan yaitu seringnya menggunakan rekursif yang dapat mengakibatkan overhead.

KATA PENGANTAR Puji syukur penulis penjatkan kehadirat Alloh SWT, karena atas rahmatNya maka penulis dapat menyelesaikan penyusunan makalah ini dengan baik dan lancar. Makalah ini berjudul Metode Divide dan Conquer merupakan hasil dari kumpulan beberapa sumber dan terjemahan dari sumber-sumber yang menggunakan Bahasa Inggris. Dalam penyusunan makalah ini, tidak sedikit hambatan yang penulis hadapi. Namun penulis menyadari bahwa kelancaran dalam penyusunan makalah ini tidak lain berkat bantuan, bimbingan dan dorongan semua pihak, sehingga kendala-kendala yang penulis hadapi teratasi. Oleh karena itu penulis mengucapkan terima kasih kepada : 1. Jajang Kusnendar, M.T, sebagai dosen pembimbing mata kuliah Analisis dan Desain Algoritma. 2. Orang Tua yang telah memberikan dukungan dan semangat sehingga makalah ini dapat terselesaikan dengan lancar. 3. Semua pihak yang telah mendukung pembuatan makalah ini. Tak Ada Gading Yang Tak Retak maka dari itu penyusun menerima kritik dan saran yang membangun demi perbaikan makalah ini. Semoga makalah ini dapat menjadi makalah yang bermanfaat

Penulis,

ii

DAFTAR ISI ABSTRAK ............................................................................................................... i KATA PENGANTAR ............................................................................................ ii DAFTAR ISI .......................................................................................................... iii BAB I ...................................................................................................................... 1 PENDAHULUAN .................................................................................................. 1 1.1 1.2 1.3 1.4 Latar Belakang ......................................................................................... 1 Rumusan Masalah .................................................................................... 1 Tujuan ....................................................................................................... 1 Manfaat ..................................................................................................... 2

BAB II METODE DIVIDE DAN CONQUER ...................................................... 3 2.1 2.2 2.3 2.4 Pengertian Divide dan Conquer ............................................................... 3 Penerapan Algoritma ................................................................................ 5 Keuntungan dan Kelemahan Metode Divide dan Conquer ..................... 8 Efisiensi Divide dan Conquer ................................................................... 9

BAB III PENUTUP .............................................................................................. 11 3.1 3.2 Kesimpulan ............................................................................................. 11 Saran ....................................................................................................... 11

DAFTAR PUSTAKA ........................................................................................... 12

iii

BAB I PENDAHULUAN

1.1

Latar Belakang Dalam ilmu komputer, pemecahan masalah dengan cara membagi dan menaklukan suatu algoritma merupakan paradigma penting berdasarkan multi-cabang rekursi. Teknik ini merupakan teknik dasar dalam menyelesaikan masalah-masalah, seperti sortasi (misalnya quicksort, merge sort), mengalikan jumlah besar, analisis sintaksis dan menghitung Fourier Diskrit mengubah (FFTs). Disisi lain, kemampuan untuk memahami dan merancang algoritma adalah keterampilan yang membutuhkan waktu untuk menguasai. Karena setiap permasalahan algoritma merupakan permasalahan yang rumit dan harus diselesaikan dengan cara menaklukan permasalahan itu dan membagi menjadi permasalah yang lebih kecil. Maka dari itu penulis membuat makalah ini yaitu tentang pengurangan permasalahan-permasalahan dalam algoritma yag diselesaikan dengan metode divide dan conquer.

1.2

Rumusan Masalah Berdasarkan latar belakang diatas, maka rumusan masalahnya sebagai berikut : 1.2.1 1.2.2 1.2.3 Apakah metode divide dan conquer itu? Bagaimana penerapan algoritma dengan divide dan conquer? Bagaimanakah keuntungan dan kelemahan menggunakan metode divide dan conquer? 1.2.4 Apakah menggunakan metode divide dan conquer merupakan pemecahan masalah yang efisien?

1.3

Tujuan 1.3.1 Mengetahui pengertian dari metode divide dan conquer.

1.3.2

Mengetahui penerapan algoritma dengan metode divide dan conquer.

1.3.3

Mengetahui keuntungan dan kelemahan pemecahan masalah dengan menggunakan metode divide dan conquer.

1.3.4

Mengetahui efisiensi pemecahan masalah dengan menggunakan metode divide dan conquer.

1.4

Manfaat Penulis berharap dengan adanya makalah yang berjudul Metode Divide dan Conquer ini menjadi makalah yang bermanfaat khususnya dalam dunia pendidikan. Terlebih lagi bisa menjadi suatu rujukan dan pemahaman yang lebih mengenai permasalahan yang dibahas dalam makalah ini. Sehingga makalah ini menjadi makalah yang bermanfaat.

BAB II METODE DIVIDE DAN CONQUER

2.1

Pengertian Divide dan Conquer Algoritma divide dan 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 dan conquer. Untuk menyelesaikan masalah-masalah yang besar, dan dibagi (dipecah) menjadi bagian yang lebih kecil dan menggunakan sebuah solusi untuk menyelesaikan problem awal prinsip dasar dari pemrograman/strategi divide dan conquer. Divide dan conquer adalah varian dari beberapa strategi pemrograman topdown, tetapi keistimewaannya adalah membuat sub-sub masalah dari masalah yang besar, oleh karena itu strategi ini ditunjukan secara berulang-ulang (rekursif), didalam menerapkan algoritma yang sama

dalam sub-sub masalah seperti yang diterapkan pada masalah aslinya. Sebagaimana prinsip dasar algoritma perulangan dibutuhkan sebuah kondisi untuk mengakhiri perulangan tersebut. Biasanya untuk mengecek apakah masalah sudah cukup kecil sehingga dapat diselesaikan secara langsung. Selain dibutuhkan sebuah kondisi, juga diperlukan fase divide untuk membagi/memecah masalah menjadi sub-sub masalah yang lebih kecil, dan fase combine untuk menggabungkan kembali solusi dari sub-sub masalah menjadi solusi dari masalah awal. Langkah utama dalam algoritma divide and conquer adalah : a. Divide : Masalah dibagi menjadi beberapa bagian , setiap bagian nya memiliki permasalahan yang serupa dengan masalah utama.

b. Conquer : Setiap bagian bagian masalah masing masing dipecahkan (dalam pemograman dilakukan secara rekursif). c. Combine : solusi dari masing masing bagian masalah digabungkan sehingga membentuk solusi untuk masalah utama. Selain dari pada langkah utama mengenai divide dan conquer, berikut ini terdapat empat hal penting yang harus dipahami dalam strategi divide dan conquer : 1. Branching Factor Branching factor dalam algoritma divide dan conquer adalah jumlah dari sub masalah yang akan dibagi dari sebuah masalah awal. Ini adalah langkah nyata dari algoritma divide dan conquer, didalam proses pembagian yang sebenarnya, jumlah dari branching factor harus dua atau lebih, karena jika tidak masalah tidak bisa dibagi. Banyak jenis algoritma ini termasuk pula algoritma komputasi geometric yang memiliki branching factor berjumlah dua.

2. Balance Sebuah algoritma divide dan conquer dikatakan balance jika masalah awal dibagi menjadi sub-sub masalah dengan ukuran yang sama. Yang artinya jumlah dari keseluruhan ukuran sub masalah sama dengan sub masalah awal. Algoritma mergesort dan binary tree, dan sama halnya dengan algoritma reduksi dan prefix sum adalah bebrapa contoh algoritma divide dan conquer yang seimbang.

3. Data Dependence of Divide Function Algoritma divide dan conquer memiliki sebuah fungsi pembagian terhadap data yang memiliki ketergantungan, artinya jika ukuran relatif dari sebuah sub msalah tergantung proses input datanya.

Salah satu contoh dari algoritma yang ttidak seimbang adalah algoritma quicksort yang akan membagi sub msalah dengan fungsi data-dependent divide. 4. Control Parallelism of Sequentiality Algoritma divide dan conquer dikatakan berurutan (sequential) jika sub msalah di eksekusi dengan perintah program. Parelisasi dari algoritma divide dan conquer yang terurut pertama kali didefinisikan oleh Mous Divacon [Mou90], yang terjadi ketika hasil dari salah satu sub-eksekusi diperlukan oleh sub-eksekusi yang lain. Dalam kasus ini hasil dari subtree pertama diberikan (passing) kepada proses komputasi subtree kedua, supaya hasil akhir tersebut bisa digunakan sebagai nilai awalnya, tetapi sekarang contoh contoh tersebut tidak dapat dijadikan illustrasi lagi karena teknologi komputer paralel yang semakin canggih dan kompleks.

2.2

Penerapan Algoritma Penerapan algoritma divide dan conquer menurut beberpa sumber bahwa algoritma ini dapat dipakai dalam berbagai hal diantaranya : 2.2.1 Sorting yang terdiri dari : 2.2.1.1 Quicksort Quicksort ditemukan oleh C.A.R Hoare. Seperti pada merge Sort, algoritma ini juga berdasar pada pola divide dan conquer. Berbeda dengan Merge Sort, algoritma ini hanya mengikuti langkah-langkah berikut : 2.2.1.1.1 Divide yaitu memilah masalah menjadi sub-sub masalah 2.2.1.1.2 Conquer yaitu mengurutkan elemen pada sub rangkaian secara rekursif.

Pada algoritma quicksort, langkah kombinasi tidak dilakukan karena telah terjadi pengurutan elemen-elemen pada sub array.

2.2.1.2 Binary Sort Salah satu cara optimasi yang biasa kita lakukan adalah membagi bilangan decimal yang hendak diubah dengan angka 8 ( bukan 2 ). Di sinilah prinsip algoritma Divide and Conquer kita gunakan untuk melakukan optimasi. Kita pecah-pecah angka decimal yang akan kita gunakan dengan cara membaginya dengan angka 8 secara berulang. Angka-angka sisa pembagian yang kita peroleh kemudian kita ubah ke dalam bilangan biner sebelum kita gabungkan menjadi hasil jawaban. Karena angka pembagi yang kita pakai adalah 8 (23), maka kita dapat mengurangi jumlah pembagian yang kita lakukan menjadi 1/3 dari jumlah semula. Hal ini tentu saja akan sangat berpengaruh pada kinerja dan waktu yang diperlukan oleh computer mengingat proses pembagian merupakan salah satu proses yang cukup rumit. Tentu saja optimasi ini harus kita bayar dengan menangani konversi bilangan octal ke biner. Akan tetapi jika kita gunakan teknik perbandingan ( tanpa harus melakukan konversi secara manual ), maka proses ini akan menjadi sangat cepat dan mudah. Penerapan algoritma ini adalah dengan menggunakan sintaks case of. Begitu juga dengan permasalahan pemakaian memori ( kompleksitas ruang ) yang lebih besar yang muncul akibat penggunaan algoritma rekursif. Karena pada proses rekursif-nya kita tidak banyak menggunakan variable yang memerlukan tempat yang begitu besar, maka hal ini biasa kita abaikan.

Dengan penggunaan optimasi ini, maka seharusnya proses konversi akan lebih cepat karena pemangkasan jumlah pembagian yang dilakukan.

2.2.2

Computational Geometry yang terdiri dari : 2.2.2.1 Closest Pairs Closest Pairs adalah memcari pasangan titik yang jaraknya paling dekat yaitu dengan cara jika n = 2, maka jarak kedua titik dihitung langsung dengan rumus Euclidean. Setelah itu bagi menjadi dua bagian yaitu Pleft dan Pright, setiap bagian mempuny ai jumlah titik yang sama. Setelah kedua jarak tersebut mempunyai jarak yang sama, maka secara rekursif terapkan algoritma D dan C pada masing-masing bagian yang akan menghasilkan tiga kemungkinan jarak terdekat dari titk tersebut. Dan akhirnya jarak titik yang paling dekat terdapat pada Pleft.

2.2.2.2 Convex Hull Pada penyelesaian masalah pencarian convex hull dengan menggunakan algoritma divide dan conquer, hal ini dapat dipandang sebagai generalisasi dari algoritma penguruan merge sort. Permasalahan convex hull adalah sebuah permasalahan yang memiliki aplikasi terapan yang cukup banyak, seperti permasalahan terhadap grafika komputer, otomasi desain, pengenalan pola (pattern recognition), dan penelitian operasi. Algoritma divide dan conquer merupakan salah satu solusi dalam penyelesaian masalah convex hull. Algoritma ini ternyata memiliki ompleksitas waktu yang cukup kecil dan efektif dalam menyelesaikan permasalahan ini (jika dibandingkan algoritma lain). Selain itu juga,

algoritma ini dapat di generalisasi untuk permasalahan convex hull yang berdimensi lebih dari tiga.

2.2.2.3 Delaunay Triangulation

2.2.3

Graph Theory yang terdiri dari : 2.2.3.1 Travelling Salesman Problem (TSP) 2.2.3.2 Graph Separator

2.2.4

Numerical yang terdiri dari : 2.2.4.1 Matrix Multiplication 2.2.4.2 FFT

2.2.5

Not Data Parallel yang terdiri dari : 2.2.5.1 Naive Merge Sort

2.3 Keuntungan dan Kelemahan Metode Divide dan Conquer 2.3.1 Berikut ini adalah beberapa keuntungan dengan menggunakan algoritma divide dan conquer. 2.3.1.1 Dapat memecahkan permasalahan yang sulit (kompleks) Algoritma divide and conquer merupakan alat yang sangat berguna untuk memecahkan masalah yang kompleks, contohnya dalam permainan Menara Hanoi (Tower of Hanoi). Penyelesaian yang harus dilakukan adalah

membagi menjadi beberapa bagian masalah dan mencari solusi yang tepat lalu dilakukan berulang kali (rekursif).

2.3.1.2 Efisien Dalam masalah pengurutan, algoritma divide and conquer dapat menjadi solusi yang baik untuk mengatasi efisiensi. Sebagai contoh, metoda quicksort dan mergesort memiliki dasar algoritma divide and conquer dan dikenal sebagai

metode pengurutan yang paling efesien. Efisiensi algoritma divide and conquer bernotasi O(n log n).

2.3.1.3 Paralel Penggunaan algoritma divide and conquer sesuai untuk eksekusi pada mesn multi prosessor ,terutama pembagian sistem memori dimana sub-masalah dapat dijalankan pada prosessor yang berbeda. 2.3.1.4 Akses Memori Permasalahan yang diselesaikan dengan algoritma divide and conquer juga dapat berpengaruh dalam pengaksesan memori, dikarenakan masalah dibagi menjadi beberapa bagian dan setiap bagian diselesaikan dengan solusi yang sama maka dalam pengaksesan memori setiap sub-masalah diselesaikan cukup dengan mengakses cache memory yang tidak terlalu lambat. 2.3.2 Berikut ini adalaha kelemahan jika menggunakan algoritma divide dan conquer 2.3.2.1 Sering menggunakan rekursi yang menyebabkan overhead. 2.3.2.2 Dapat diterapkan dan inferior untuk solusi algoritmik yang lebih sederhana.

2.4 Efisiensi Divide dan Conquer Algoritma divide and conquer memliki efesiensi dengan notasi O(n log n) . Kelas notasi (n log n) berkaitan erat dengan masalah pengurutan, quick sort yang merupakan salah satau metode pengurutan memliki efesiensi dengan kelas notasi (n log n) . Pengurutan sangat berkaitan dengan posisi, ada banyak peluang tahap yang harus dilakukan agar bilangan bilangan dapat terurut sehingga akan berkaitan dengan permutasi. Dalam proses pengurutan langkah

utamanya adalah perbandingan antara kedua bilangan yang akhirnya hanya ada 2 pilihan apakah bilangan yang dibandingkan lebih besar atau lebih kecil dari bilangan yang kedua, hal ini disebut binary comparison karena hanya berpeluang 2 jawaban. Setiap perbandingan, karena binary maka segala kemungkinan dibagi dua (setengah), contoh menyelesaikan masalah C, maka : c >= log n! = log (n * (n-1) * ... * 1) = log n + log (n-1) + ... + log 1 = log n + log (n-1) + ... + log (n/2) = n/2 * log (n/2) = n log n

10

BAB III PENUTUP

3.1 Kesimpulan Dari penjelasan diatas, maka dapat diratik kesimpulan mengenai algoritma divide dan conquer yaoitu : 3.1.1 Algoritma divide dan conquer sudah lama diperkenalka sebagai sumber dari pengendalian proses parallel, karena masalahmasalah yang terjadi dapat diatasi secara independent. Banyak arsitektur dan bahasa pemrograman parallel mendesain implementasinya (aplikasi) dengan struktur dasar dari

algoritma divide dan conquer.

3.1.2

Penerapan algoritma dapat dipakai untuk sorting (quicksort, binary sort), computational geometry, graph theory, numerical dan not data parallel.

3.1.3

Keuntungan menggunakan algoritma divide dan conquer adalah dapat memecahkan permasalahan yang sulit, lebih efisien, parallel atau sub masalah dapat dijalankan pada processor yang berbeda serta akses memori setiap sub masalah diselesaikan cukup mengakses cache memory yang tidak terlalu lambat.

3.2 Saran Penulis sadar bahwa makalah ini jauh dari kesempurnaan, maka dari itu enulis mengharapkan kritik dan saran yang membangun demi perbaikan makalah ini sehingga makalah ini menjadi makalah yang baik dan berguna khususnya dalam ruang lingkup pendidikan.

11

DAFTAR PUSTAKA http://id.wikipedia.org/wiki/Divide_and_Conquer (Diakses tanggal 03 Maret 2012 pukul 21.43 WIB) http://en.wikipedia.org/wiki/Divide_and_conquer_algorithm (Diakses tanggal 03 Maret 2012 pukul 21.43 WIB) http://www.crsr.net/Notes/BigO.html (Diakses tanggal 03 Maret 2012 pukul 21.43 WIB) http://www.core.org.cn/NR/rdonlyres/Electrical-Engineering-and-ComputerScience/6-046JIntroduction-to-AlgorithmsFall2001/A02B0C08-F6F3-410DAE98-3F7EF50E540E/lecture03.pdf (Diakses tanggal 04 Maret 2012 pukul 14.35 WIB) http//www.algorithmdesign.net/handouts/DivideAndConquer.pdf (Diakses tanggal 05 Maret 2012 pukul 19.04 WIB) Munir, Rinaldi, Diktat Kuliah IF2251 Strategi Algoritmik, Program Studi Teknik Informatika, ITB, 2007.

12

You might also like