Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

dokumen-dokumen yang mirip
Algoritma Divide and Conquer (Bagian 1)

Algoritma Divide and Conquer

Algoritma Divide and Conquer (Bagian 2)

Algoritma Divide and Conquer. (Bagian 2)

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

MAKALAH ALGORITMA DIVIDE AND CONQUER

ALGORITMA DIVIDE AND CONQUER

Decrease and Conquer

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Algoritma Brute Force

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

Design and Analysis of Algorithm

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

Kompleksitas Algoritma

RESUME ALGORITMA MERGE SORT DAN REKURENS

Algoritma Brute Force

Penerapan Algoritma Divide and Conquer pada Material Requirements Planning

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Kompleksitas Algoritma

Kompleksitas Algoritma (1)

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

BAB VII ALGORITMA DIVIDE AND CONQUER

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

STRATEGI DIVIDE AND CONQUER

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Algoritma Divide and Conquer untuk Optimasi Pemberian Efek Aura pada Permainan DotA (Defense of the Ancient)

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Kompleksitas Algoritma

Kompleksitas Algoritma

Algoritma Pendukung Kriptografi

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

MODUL IV PENCARIAN DAN PENGURUTAN

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

Algoritma dan Struktur Data

Teknik Pengurutan Kartu Remi

Algoritma Brute Force Oleh: Rinaldi Munir

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Algoritma Brute Force (Bagian 2) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik

Pengurutan (Sorting) Algoritma Pemrograman

Searching [pencarian] Algoritma Pemrograman

Algoritma Brute Force (lanjutan)

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

UNIVERSITAS GUNADARMA

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Algoritma Brute Force (lanjutan)

Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma

Penentuan Hubungan Kompleksitas Algoritma dengan Waktu Eksekusi pada Operasi Perkalian

Solusi UTS Stima. Alternatif 1 strategi:

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

BAB IV PERANCANGAN. IV.1 Evaluasi Usulan untuk Perancangan Iteratif

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Kompleksitas Algoritma Sorting yang Populer Dipakai

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

JARINGAN UNTUK MERGING

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Algoritma Runut-balik (Backtracking) Bagian 1

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Algoritma dan Kompleksitas Algoritma

Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

ALGORITMA PENGURUTAN & PENCARIAN

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

Kompleksitas Algoritma Quick Sort

Algoritma Greedy (lanjutan)

Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

BAB 3 ANALISA SISTEM

Penerapan Algoritma Divide and Conquer pada Algoritma Convex Hull

Algoritma Pemrograman

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Algoritma Brute Force

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Algoritma Pemrograman

Design and Analysis of Algorithm

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Transkripsi:

Divide and Conquer

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes. Strategi tersebut menjadi strategi fundamental di dalam ilmu komputer dengan nama Divide and Conquer. 2

Definisi Divide: membagi masalah menjadi beberapa upamasalah 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 upamasalah sehingga membentuk solusi masalah semula. 3

Obyek permasalahan yang dibagi : masukan (input) atau instancesyang berukuran nseperti: -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 Conquerlebih natural diungkapkan dalam skema rekursif. 4

Skema Umum Algoritma Divide and Conquer procedure DIVIDE_and_CONQUER(input n : integer) { Menyelesaikan masalah dengan algoritma D-and-C. Masukan: masukan yang berukuran n Keluaran: solusi dari masalah semula } Deklarasi r, k : integer Algoritma if n n 0 then {ukuran masalah sudah cukup kecil } SOLVE upa-masalah yang berukuran n ini else Bagi menjadi r upa-masalah, masing-masing berukuran n/k for masing-masing dari r upa-masalah do DIVIDE_and_CONQUER(n/k) endfor COMBINE solusi dari r upa-masalah menjadi solusi masalah semula } endif 5

Contoh Masalah Mencari Nilai Minimum dan Maksimum (MinMaks) Persoalan: Misalkan diberikan tabel Ayang berukuran nelemen dan sudah berisi nilai integer. Carilah nilai minimum dan nilai maksimum di dalam tabel tersebut. 6

Penyelesaian dengan Algoritma Brute Force procedure MinMaks1(input A : TabelInt, n : integer, output min, maks : integer) { Mencari nilai minimum dan maksimum di dalam tabel A yang berukuran n elemen, secara brute force. Masukan: tabel A yang sudah terdefinisi elemen-elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi i : integer Algoritma: min A 1 { inisialisasi nilai minimum} maks A 1 { inisialisasi nilai maksimum } for i 2 to n do if A i < min then min A i endif if A i > maks then maks A i endif endfor 7

Penyelesaian dengan Divide and Conquer Contoh 4.1. Misalkan tabel A berisi elemen-elemen sebagai berikut: 4 12 23 9 21 1 35 2 24 Ide dasar algoritma secara Divide and Conquer: 4 12 23 9 21 1 35 2 24 DIVIDE 4 12 23 9 21 1 35 2 24 SOLVE: tentukan min & maks pada tiap bagian 4 12 23 9 21 1 35 2 24 min = 4 min = 1 maks = 23 maks = 35 COMBINE 4 12 23 9 21 1 35 2 24 min = 1 maks = 35 8

Ukuran tabel hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan maksimum dapat diselesaikan (SOLVE) secara lebih mudah. Dalam hal ini, ukuran kecil yang dipilih adalah 1 elemen atau 2 elemen. 9

MinMaks(A, n, min, maks) Algoritma: 1. Untuk kasus n= 1 atau n= 2, SOLVE: Jika n= 1, maka min= maks= A[n] Jika n= 2, maka bandingkan kedua elemen untuk menentukan min dan maks. 2. Untuk kasus n> 2, (a) DIVIDE: Bagi dua tabel Amenjadi dua bagian yang sama, A1 dan A2 (b) CONQUER: MinMaks(A1, n/2, min1, maks1) MInMaks(A2, n/2, min2, maks2) (c) COMBINE: if min1 <min2 then min <-min1 else min <-min2 if maks1 <maks2 then maks <-maks2 else maks <-maks1 10

Contoh 4.2. Tinjau kembali Contoh 4.1 di atas. DIVIDE dan CONQUER: 4 12 23 9 21 1 35 2 24 4 12 23 9 21 1 35 2 24 4 12 23 9 21 1 35 2 24 SOLVE dan COMBINE: 4 12 23 9 21 1 35 2 24 min = 4 min = 9 min = 1 min = 35 min = 2 maks = 12 maks = 23 maks = 21 maks =35 maks = 24 4 12 23 9 21 1 35 2 24 min = 4 min = 1 min = 2 maks = 23 maks = 21 maks = 35 4 12 23 9 21 1 35 2 24 min = 4 min = 1 maks = 23 maks = 35 4 12 23 9 21 1 5 2 24 min = 1 maks = 35 11

procedure MinMaks2(input A : TabelInt, i, j : integer, output min, maks : integer) { Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide and Conquer. Masukan: tabel A yang sudah terdefinisi elemen-elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi min1, min2, maks1, maks2 : integer Algoritma: if i=j then { 1 elemen } min A i maks A i else if (i = j-1) then { 2 elemen } if A i < A j then maks A j min A i else maks A i min A j endif else { lebih dari 2 elemen } k (i+j) div 2 { bagidua tabel pada posisi k } MinMaks2(A, i, k, min1, maks1) MinMaks2(A, k+1, j, min2, maks2) if min1 < min2 then min min1 else min min2 endif if maks1<maks2 then maks maks2 else maks maks2 endif 12

Kompleksitas waktu asimptotik: T ( n) = 0 1 2T ( n / 2) + 2, n = 1, n = 2, n > 2 Penyelesaian: Asumsi: n = 2 k, dengan k bilangan bulat positif, maka T(n) = 2T(n/2) + 2 = 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2 = 4T(2T(n/8) + 2) + 4 + 2 = 8T(n/8) + 8 + 4 + 2 =... = 2 k 1 T(2) + i= k 1 1 2 i = 2 k 1 1 + 2 k 2 = n/2 + n 2 = 3n/2 2 = O(n) 13

MinMaks1 secara brute force: T(n) = 2n 2 MinMaks2 secara divide and conquer: T(n) = 3n/2 2 Perhatikan: 3n/2 2 < 2n 2, n 2. Kesimpulan: algoritma MinMaks lebih mangkus dengan metode Divide and Conquer. 14

Perpangkatan a n Misalkan a Rdan nadalah bilangan bulat tidak negatif: a n = a a a (nkali), jika n> 0 = 1, jika n= 0 15

Penyelesaian dengan Algoritma Brute Force function Exp1(input a, n : integer) integer { Menghitung a n, a > 0 dan n bilangan bulat tak-negatif Masukan: a, n Keluaran: nilai perpangkatan. } Deklarasi k, hasil : integer Algoritma: hasil 1 for k 1 to n do hasil hasil * a endfor return hasil Kompleksitas waktu algoritma: T(n) = n = O(n) 16

Penyelesaian dengan Divide and Conquer Algoritma menghitung a n : 1. Untuk kasus n= 0, maka a n = 1. 2. Untuk kasus n> 0, bedakan menjadi dua kasus lagi: (i) jika ngenap, maka a n = a n/2 a n/2 (ii) jika nganjil, maka a n = a n/2 a n/2 a 17

Contoh 4.6. Menghitung 3 16 dengan metode Divide and Conquer: 3 16 = 3 8 3 8 = (3 8 ) 2 = ((3 4 ) 2 ) 2 = (((3 2 ) 2 ) 2 ) 2 = ((((3 1 ) 2 )) 2 ) 2 ) 2 = ((((3 0 ) 2 3) 2 ) 2 ) 2 ) 2 = ((((1) 2 3) 2 ) 2 ) 2 ) 2 = ((((3) 2 )) 2 ) 2 ) 2 = (((9) 2 ) 2 ) 2 = (81) 2 ) 2 = (6561) 2 = 43046721 18

function Exp2(input a :real, n : integer) real { mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer } Algoritma: if n = 0 then return 1 else x Exp2(a, n div 2) if odd(n) then { fungsi odd memberikan true jika n ganjil } return x * x * a else return x * x endif endif 19

Kompleksitas algoritma: T ( n) = 0 1 + T( n/2 ), n, n = 0 > 0 Penyelesaian: T(n) = 1 + T( n/2 ) = 1 + (1 + T( n/4 ) = 2 + T( n/4 ) = 2 + (1 + T( n/8 ) = 3 + T( n/8 ) =... = k + T( n/2 k ) 20

Persamaan terakhir diselesaikan dengan membuat n/2 k =1, (n/2 k ) = 1 log (n/2 k ) = log 1 log n log 2 k = 0 log n k log 2 = 0 log n = k log 2 k = log n / log 2 = 2 log n sehingga T(n) = 2 log n + T(1) = 2 log n + 1 + T(0) = 2 log n + 1 + 0 = 2 log n + 1 = O ( 2 log n) 21

Merge Sort Algoritma: 1. Untuk kasus n= 1, maka tabel Asudah terurut dengan sendirinya (langkah SOLVE). 2. Untuk kasus n> 1, maka (a) DIVIDE: bagi tabel Amenjadi dua bagian, bagian kiri dan bagian kanan, masing-masing bagian berukuran n/2 elemen. (b) CONQUER: Secara rekursif, terapkan algoritma D-and-C pada masing-masing bagian. (c) MERGE: gabung hasil pengurutan kedua bagian sehingga diperoleh tabel Ayang terurut. 22

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

Contoh Merge: A1 A2 B 1 13 24 2 15 27 1 < 2 1 1 1 13 24 2 15 27 2 <13 2 1 2 1 13 24 2 15 27 13<15 13 1 2 13 1 13 24 2 15 27 15<24 15 1 2 13 15 1 13 24 2 15 27 24<27 24 1 2 13 15 24 1 13 24 2 15 27 27 1 2 13 15 24 27 24

procedure MergeSort(input/output A : TabelInt, input i, j : integer) { Mengurutkan tabel A[i..j] dengan algoritma Merge Sort Masukan: Tabel A dengan n elemen Keluaran: Tabel A yang terurut } Deklarasi: k : integer Algoritma: if i < j then { Ukuran(A)> 1} k (i+j) div 2 MergeSort(A, i, k) MergeSort(A, k+1, j) Merge(A, i, k, j) endif 25

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: kidal1 kiri { A[kiri.. tengah] } kidal2 tengah + 1 { A[tengah+1.. kanan] } i kiri while (kidal1 tengah) and (kidal2 kanan) do if A kidal1 A kidal2 then B i A kidal1 kidal1 kidal1 + 1 else B i A kidal2 kidal2 kidal2 + 1 endif i i + 1 endwhile { kidal1 > tengah or kidal2 > kanan } { salin sisa A bagian kiri ke B, jika ada } while (kidal1 tengah) do B i A kidal1 kidal1 kidal1 + 1 i i + 1 endwhile { kidal1 > tengah } { salin sisa A bagian kanan ke B, jika ada } while (kidal2 kanan) do B i A kidal2 kidal2 kidal2 + 1 i i + 1 endwhile { kidal2 > kanan } { salin kembali elemen-elemen tabel B ke A } for i kiri to kanan do A i B i endfor { diperoleh tabel A yang terurut membesar } 26

Kompleksitas waktu: Asumsi: n = 2 k T(n) = jumlah perbandingan pada pengurutan dua buah upatabel + jumlah perbandingan pada prosedur Merge T ( n) = 2T ( n a / 2) + cn, n, n = 1 > 1 27

Penyelesaian: T(n) = 2T(n/2) + cn = 2(2T(n/4) + cn/2) + cn = 4T(n/4) + 2cn = 4(2T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn =... = 2 k T(n/2 k ) +kcn Berhenti jika ukuran tabel terkecil, n = 1: sehingga n/2 k = 1 k = 2 log n T(n) = nt(1) + cn 2 log n = na + cn 2 log n = O(n 2 log n) 28