Decrease and Conquer

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

Algoritma Divide and Conquer. (Bagian 2)

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

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

ALGORITMA DIVIDE AND CONQUER

Algoritma Divide and Conquer (Bagian 1)

Solusi UTS Stima. Alternatif 1 strategi:

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

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

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

STRATEGI DIVIDE AND CONQUER

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

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

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Design and Analysis of Algorithm

BAB VII ALGORITMA DIVIDE AND CONQUER

RESUME ALGORITMA MERGE SORT DAN REKURENS

Kompleksitas Algoritma (1)

Design and Analysis of Algorithm

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

Penyelesaian Fungsi Kontinu menggunakan Decrease and Conquer

Aplikasi Strategi Algoritma dalam Pembagian Kelompok Tugas Besar

UNIVERSITAS GUNADARMA

Algoritma Brute Force

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Kompleksitas Algoritma

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

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

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

Perbandingan Algoritma Brute Force, Divide and conquer, dan Dynamic Programming untuk Solusi Maximum Subarray Problem

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma

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

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Kompleksitas Algoritma

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

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

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

Kompleksitas Algoritma Sorting yang Populer Dipakai

MODUL IV PENCARIAN DAN PENGURUTAN

Pemecahan Masalah Longest Increasing Subsequence Memanfaatkan Program Dinamis dan Binary Search

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Kompleksitas Algoritma

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA SILABUS ALGORITMA PEMROGRAMAN

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

IF5110 Teori Komputasi. Teori Kompleksitas. (Bagian 1) Oleh: Rinaldi Munir. Program Studi Magister Informatika STEI-ITB

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Modifikasi Algoritma Pencarian Decrease and Conquer pada Akinator

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

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Algoritma Divide and Conquer

JARINGAN UNTUK MERGING

Penerapan Algoritma Runut-balik pada Permainan Math Maze

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

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Analisis Kecepatan Sorting Dengan Notasi Big O

Algoritma Brute Force

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

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

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

Implementasi Metode Jumlah Riemann untuk Mendekati Luas Daerah di Bawah Kurva Suatu Fungsi Polinom dengan Divide and Conquer

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Penentuan Hubungan Kompleksitas Algoritma dengan Waktu Eksekusi pada Operasi Perkalian

METODE DEVIDE AND CONQUER (DANDC)

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

Kompleksitas Algoritma Quick Sort

ALGORITMA PENGURUTAN & PENCARIAN

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

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

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

Teknik Pengurutan Kartu Remi

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA SILABUS ALGORITMA DAN STRUKTUR DATA

Sorting Algorithms. Divide and Conquer

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Algoritma Exhaustive Search Dalam Permainan Congklak

BAB 3 ANALISA SISTEM

Gambar 13.1 Ilustrasi proses algoritma sorting

Aplikasi Algoritma Greedy dalam Permainan Kartu Truf

BAB 2 TINJAUAN PUSTAKA

BAB 1 PENDAHULUAN. Universitas Sumatera Utara

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Penerapan Algoritma Backtracking pada Pewarnaan Graf

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

Kompleksitas Algoritma

SORTING (PENGURUTAN DATA)

Penyelesaian Masalah Closest Pair dengan Algoritma Divide and Conquer

Transkripsi:

Decrease and Conquer Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika ITB 1

Decrease and conquer: metode desain algoritma dengan mereduksi persoalan menjadi beberapa subpersoalan yang lebih kecil, tetapi selanjutnya hanya memproses satu sub-persoalan saja. Berbeda dengan divide and conquer yang memproses semua sub-persoalan dan menggabung semua solusi setiap sub-persoalan. 2

Decrease and conquer terdiri dari dua tahapan: 1. Decrease: mereduksi persoalan menjadi beberapa persoalan yang lebih kecil (biasanya dua subpersoalan). 2. Conquer: memproses satu sub-persoalan secara rekursif. Tidak ada tahap combine dalam decrease and conquer. 3

Tiga varian decrease and conquer: 1. Decrease by a constant: ukuran instans persoalan direduksi sebesar konstanta yang sama setiap iterasi algoritma. Biasanya konstanta = 1. 2. Decrease by a constant factor: ukuran instans persoalan direduksi sebesar faktor konstanta yang sama setiap iterasi algoritma. Biasanya faktor konstanta = 2. 3. Decrease by a variable size: ukuran instans persoalan direduksi bervariasi pada setiap iterasi algoritma. 4

Decrease by a Constant Persoalan berukuran n Sub-persoalan berukuran n 1 Solusi Sub-persoalan Solsi Persoalan semula 5

Contoh 1: Persoalan perpangkatan a n Dengan metode decrease and conquer: Kompleksitas waktu (berdasarkan jumlah operasi kali): Bila diselesaikan: T(n) = T(n 1) + 1 =. = O(n) sama seperti algoritma brute-force. 0, 1 1) ( 0, 0 ) ( n n T n n T 0, 0, 1 1 n a a n a n n 6

function exp(a : real; n : integer) real Deklarasi k : integer Algoritma: if n = 0 then return 1 else return exp(a, n 1) * a endif 7

Contoh 2: Selection sort Misalkan tabel a berisi elemen-elemen berikut: 4 12 3 9 1 21 5 2 Langkah-langkah pengurutan dengan Selection Sort: 4 12 3 9 1 21 5 2 1 12 3 9 4 21 5 2 1 2 3 9 4 21 5 12 1 2 3 9 4 21 5 12 1 2 3 4 9 21 5 12 1 2 3 4 5 21 9 12 1 2 3 4 5 9 12 21 1 2 3 4 5 9 12 21 1 2 3 4 5 9 12 21 8

Kompleksitas waktu algoritma Selection Sort: T(n) = waktu pembagian + waktu pemanggilan rekurens Selection Sort untuk bagian tabel kanan yang berukuran n elemen. T ( n) T ( n a 1) cn, n, n 1 1 Persamaan pada bagian rekurensi bila diselesaikan menghasilkan T(n) = O(n 2 ). 9

Decrease by a Constant Factor Persoalan berukuran n Sub-persoalan berukuran n/2 Solusi Sub-persoalan Solusi Persoalan semula 10

Contoh 3: Binary search Kondisi awal: larik A sudah terurut menaik K adalah nilai yang dicari i mid j ½ bagian kiri ½ bagian kanan Jika elemen tengah (mid) k, maka pencarian dilakukan hanya pada setengah bagian larik (kiri atau kanan) Ukuran persoalan selalu berkurang sebesar setengah ukuran semula. Hanya setengah bagain yang diproses, setengah bagian lagi tidak. 11

procedure bin_search(input A : ArrayOfInteger; input i, j : integer; input K : integer; output idx : integer) Deklarasi mid : integer Algoritma: if i > j then { ukuran larik sudah 0} idx -1 { k tidak ditemukan } else mid (i + j)/2 if A(mid) = k then { k ditemukan } idx mid { indeks elemen larik yang bernilai = K } else if K > A(mid then bin_search(a, mid + 1, j, K, idx) else bin_search(a, i, mid - 1, K, idx) endif endif endif 12

Jumlah operasi perbandingan: T ( n) 0 1 T ( n / 2), n, n 0 0 Relasi rekursif tsb diselesaikan sbb: T(n) = 1 + T(n/2) = 1 + (1 + T(n/4)) = 2 + T(n/4) = 2 + (1 + T(n/8)) = 3 + T(n/8) = = j + T(n/2 j ) Asumsi: n = 2 j j = 2 log n T(n) = 2 log n + T(1) = 2 log n + (1 + T(0)) = 1 + 2 log n = O( 2 log n) 13

Contoh 4: Interpolation Search - Analog dengan pencarian data di dalam kamus dengan cara perkiraan letak. - Kondisi awal: larik A sudah terurut menaik K adalah nilai yang dicari 14

K K upper K low K low I I upper I low I low I I ( I I ) low upper low K K upper K low K low 15

procedure interpolation_search(input A : ArrayOfInteger; input i, j : integer; input K : integer; output idx : integer) Deklarasi mid : integer Algoritma: if i > j then { ukuran larik sudah 0} idx -1 { K tidak ditemukan } else mid i + (j i) *(K A(i))/ (A(j) A (i)) if A(mid) = x then { K ditemukan } idx mid { indeks elemen larik yang bernilai = K } else if K < A(mid then interpolation_search(a, mid + 1, j, K, idx) else interpolation_search(a, i, mid - 1, K, idx) endif endif endif 16

Kompleksitas algoritma interpolation search: - Kasus terburuk: O(n), untuk sembarang distribusi data - Kasus terbaik: O(log log n), jika data di dalam senarai terdistribusi uniform 17

Contoh 5 (Mencari koin palsu). Diberikan n buah koin yang identik, satu diantaranya palsu. Asumsikan koin yang palsu mempunyai berat yang lebih ringan daripada koin asli. Untuk mencari yang palsu, disediakan sebuah timbangan yang teliti. Carilah koin yang palsu dengan cara penimbangan. 18

Algoritma decrease and conquer: 1. Bagi himpunan koin menjadi dua sub-himpunan, masingmasing n/2 koin. Jika n ganjil, maka satu buah koin tidak dimasukkan ke dalam kedua sub-himpunan. 2. Timbang kedua sub-himpunan dengan neraca. 3. Jika beratnya sama, berarti satu koin yang tersisa adalah palsu. 4. Jika beratnya tidak sama, maka ulangi proses untuk subhimpunan yang beratnya lebih ringan (salah satu koin di dalamnya palsu). 19

Ukuran persoalan selalu berkurang dengan faktor setengah dari ukuran semula. Hanya setengah bagian yang diproses, setengah bagian yang lain tidak diproses. Jumlah penimbangan yang dilakukan adalah: 0 T( n) 1 T( n / 2 Penyelesaian relasi rekurens T(n) mirip seperti binary search: ), n, n 1 1 T(n) = 1 + T(n/2) =. = O( 2 log n) 20

Decrease by a Variable Size Contoh 6: Menghitung median dan Selection Problem. Selection problem: mencari elemen terkecil ke-k di dalam sebuah senarai beranggotan n elemen. Jika k = 1 elemen paling kecil (minimum) Jika k = n elemen paling besar (maksimum) Jika k = n/2 elemen median Bagaimana mencari median dari senarai yang tidak terurut namun tidak perlu mengurutkan senarai terlebih dahulu? 21

Algoritmanya: 1. Lakukan partisi pada senarai seperti proses partisi pada algoritma Quick Sort (varian 2). Partisi menghasilkan setengah elemen senarai lebih kecil atau sama dengan pivot p dan setengah bagian lagi lebih besar dari pivot p. ai ai p ai a 1 s1 s1 in p p 2. Misalkan s adalah posisi pem-partisian. Jika s = n/2, maka pivot p adalah nilai median yang dicari Jika s > n/2, maka median terdapat pada setengah bagian kiri Jika s < n/2, maka median terdapat pada setengah bagian kanan 22

Contoh: Temukan median dari 4, 1, 10, 9, 7, 12, 8, 2, 15. pada contoh ini, k = 9/2 = 5, sehingga persoalannya adalah mencari elemen terkecil ke-5 di dalam senarai. Partisi senarai dengan memilih elemen pertama sebagai pivot: 4 1 10 9 7 12 8 2 15 Hasil partisi: 2 1 4 9 7 12 8 10 15 Karena s = 3 < 5, kita memproses setengah bagian kanan: 9 7 12 8 10 15 8 7 9 12 10 15 Karena s = 6 > 5, kita memproses setengah bagian kiri: 8 7 7 8 Sekarang s = k = 5 stop. Jadi median = 8 23

Kompleksitas algoritma: T ( n) T ( n / a 2) cn, n, n 1 1 Solusi dari relasi rekurens tersebut adalah (dengan menggunakan Teorema Master): T(n) = T(n/2) + cn = = O(n) 24