Anda di halaman 1dari 16

DESAIN DAN ANALISIS ALGORITMA Algoritma Divide & Conquer

Disusun Oleh: Kelompok 5

I Nyoman Nata Suryawan Tutde Suputrawan Aditya Wikardiyan Muhammad Ridwan Satrio

1208605002 1208605007 1208605008 1208605028

PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS UDAYANA 2013

KATA PENGANTAR Puji syukur penulis penjatkan kehadirat Tuhan Yang Maha Esa, karena atas rahmat-Nya 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 dapat dipercaya. 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 dosen bidang studi Desain dan Analisis Algoritma 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

BAB I PENDAHULUAN

A. Latar Belakang

Dalam ilmu komputer, pemecahan masalah dengan cara membagi dan menaklukan suatu algoritma merupakan paradigma penting berdasarkan multicabang rekursi. Teknik ini merupakan teknik dasar dalam menyelesaikan masalahmasalah, 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.


B. Rumusan Masalah

Berdasarkan latar belakang diatas, maka rumusan masalahnya sebagai berikut :

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?

4.

Apakah menggunakan metode divide dan conquer merupakan pemecahan masalah yang efisien?

C. Tujuan

1. 2. 3.

Mengetahui pengertian dari metode divide dan conquer. Mengetahui penerapan algoritma dengan metode divide dan conquer. Mengetahui keuntungan dan kelemahan pemecahan masalah dengan menggunakan metode divide dan conquer.

D. 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 PEMBAHASAN 2.1 Pengertian Algoritma Devide and Conquer

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.
2.1.1 Langkah-langkah umum algoritma Divide and Conquer :

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 masalah tergantung proses input datanya. 4. Control Parallelism of Sequentiality Algoritma divide dan conquer dikatakan berurutan (sequential) jika sub masalah 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.1.2 Skema Umum Algoritma Divide and Conquer :

2.2

Contoh Penerapan Metode Divide & Conquer 1. Mencari Nilai Minimum dan Maksimum

3 Persoalan : : 4 Misalkan diberikan tabel Ayang berukuran n elemen dan sudah berisi nilai integer. Carilah nilai minimum dan nilai maksimum sekaligus di dalam table tersebut.

Penyelesaiannya :

Pseudocodenya :

2. Pengurutan dengan Metode Divide and Conquer

Contoh 4 12 3 9 1 21 5 2

Algoritma pengurutan yang termasuk jenis ini: a. urut-gabung (Merge Sort) b. urut-sisip (Insertion Sort)

a) Merge Sort Algoritma : Untuk kasus n= 1, maka tabel A sudah terurut dengan sendirinya (langkah SOLVE). Untuk kasus n>1, maka a) DIVIDE: bagi tabel A menjadi dua bagian, bagian kiri dan bagian kanan, masing-masing bagian berukuran n/2 elemen. b) CONQUER: Secararekursif, terapkan algoritma D-and-C pada masingmasing bagian c) MERGE: gabung hasil pengurutan kedua bagian sehingga diperoleh tabel A yang Contoh : terurut.

Pseudocode Merge Sort

Prosedur Merge:
procedure Merge(input/output A : TabelInt, input kiri,tengah,kanan : integer) { Menggabung tabel A[kiri..tengah] dan tabel A[tengah+1..kanan] menjadi tabel A[kiri..kanan] yang terurut menaik. Masukan: A[kiri..tengah] dan tabel A[tengah+1..kanan] yang sudah terurut menaik. Keluaran: A[kiri..kanan] yang terurut menaik. } Deklarasi B : TabelInt i, kidal1, kidal2 : integer Algoritma: kidal1kiri { A[kiri .. tengah] } kidal2tengah + 1 { A[tengah+1 .. kanan] } ikiri while (kidal1 tengah) and (kidal2 kanan) do if Akidal1 Akidal2 then BiAkidal1 kidal1kidal1 + 1 else BiAkidal2 kidal2kidal2 + 1 endif i i + 1 endwhile { kidal1 > tengah or kidal2 > kanan } { salin sisa A bagian kiri ke B, jika ada } while (kidal1 tengah) do BiAkidal1 kidal1kidal1 + 1 i i + 1 endwhile { kidal1 > tengah } { salin sisa A bagian kanan ke B, jika ada } while (kidal2 kanan) do BiAkidal2 kidal2kidal2 + 1 i i + 1 endwhile { kidal2 > kanan } { salin kembali elemen-elemen tabel B ke A } for ikiri to kanan do AiBi endfor { diperoleh tabel A yang terurut membesar }

Contoh 4.4. Misalkan tabel A berisi elemen-elemen berikut: 4 12 23 9 21 1 5 2 DIVIDE, CONQUER, dan SOLVE:: 4 12 3 9 1 4 4 4 4 4 4 4 4 12 12 12 12 12 12 12 12 3 3 3 3 3 3 3 3 9 9 9 9 9 9 9 9 1 1 1 1 1 1 1 1

21 21 21 21 21 21 21 21 21

5 5 5 5 5 5 5 5 5

2 2 2 2 2 2 2 2 2

2.3

Keuntungan dan Kelemahan Metode Divide dan Conquer Berikut ini adalah beberapa keuntungan dengan menggunakan algoritma divide dan conquer. 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. 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). 3. Paralel Penggunaan algoritma divide and conquer sesuai untuk eksekusi pada mesn multi prosessor ,terutama pembagian sistem memori dimana submasalah dapat dijalankan pada prosessor yang berbeda. 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 submasalah diselesaikan cukup dengan mengakses cache memory yang tidak terlalu lambat. Berikut ini adalah kelemahan jika menggunakan algoritma divide dan conquer 1. Sering menggunakan rekursi yang menyebabkan overhead. 2. Dapat diterapkan dan inferior untuk solusi algoritmik yang lebih sederhana.

BAB II PENUTUP

E. Kesimpulan Dari penjelasan diatas, maka dapat diratik kesimpulan mengenai algoritma divide dan conquer yaitu : 1. Algoritma divide dan conquer sudah lama diperkenalka 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 dan conquer. 2. Penerapan algoritma dapat dipakai untuk sorting (quicksort, binary sort), computational geometry, graph theory, numerical dan not data parallel. 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.

F. 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.

DAFTAR PUSTAKA

Rinaldi Munir, Algoritma Divide and Conquer. Teknik Informatika Institut Teknologi Bandung, 2004. Rinaldi Munir, Strategi Algoritmik. Teknik Informatika Institut Teknologi Bandung, 2007. - http://www.informatika.org/~rinaldi/Stimik/2006-2007/ Di akses pada tanggal 10 Desember 2013 pukul 21.15