1-1
Analisis Algoritma:
Fakultas Teknologi dan Desain Program Studi Teknik Informatika
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rdEdition, Pearson Education, Inc., Addison-Wesley
Bab 6: Transform-and-Conquer
Agenda.
• Introduction
• Instance Simplification
• Representation Change
• Problem Reduction
Analisis Algoritma | 2
Transform-and-conquer
:
teknik yang digunakan dalam perancangan algoritma yang akan mengubah (to transform) sebuah kasus menjadi bentuk lain, kemudian menentukan solusi (to conquer) dari bentuk baru kasus tersebut.Introduction
• Terdapat tiga variasi utama yang membedakan pengubahan (transform) yang dilakukan untuk setiap kasus:
• Instance simplification: menyederhankan kasus ke dalam bentuk yang lebih sederhana agar mudah diselesaikan.
• Representation change: mengubah representasi kasus ke dalam bentuk representasi yang lebih sederhana agar lebih efisien.
• Problem reduction: mengubah ukuran problem ke dalam ukuran problem yang lebih mudah untuk diselesaikan.
Instance Simplification
Presorting.
• Presorting merupakan metode pengurutan (sorting) yang
dilakukan sebelum waktu aktualnya (ahead of time) untuk mengefisiensikan penyelesaian kasus.
• Beberapa permasalahan yang terkait dengan list akan lebih mudah jika list dalam keadaan terurut:
• Searching
• Computing the median
Analisis Algoritma | 5
Instance Simplification
• Computing the mode
• Checking if all elements are distinct (element uniqueness)
• Finding repeated elements
• Contoh kasus 1: Searching with presorting.
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat menentukan lokasi elemen dengan nilai terkecil pada deret berikut.
18 34 26 9 75 10
Analisis Algoritma | 6
Instance Simplification
• Contoh kasus 2: Element uniqueness with presorting.
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat menentukan elemen yang sama yang saling berpasangan deret di bawah ini.
18 34 12 9 24 12 40 20
Analisis Algoritma | 7
Instance Simplification
Latihan 1.
Kasus: Finding repeated elements
Problem 1: Tentukan prosedur untuk menemukan elemen dengan kemunculan terbanyak pada deret berikut menggunakan metode presorting.
34 18 34 9 26 9 75 34
Representation Change
Binary Search Tree.
• Binary search tree merupakan salah satu metode pencarian elemen yang mengakomodir teknik representation change.
• Mengubah representasi (tampilan) kasus menjadi bentuk lainnya untuk memudahkan pencarian.
• Contoh kasus: Binary search tree.
Problem: Temukan element 35 pada deret bilangan berikut menggunakan binary search tree.
18 62 12 9 24 35 40 20
Analisis Algoritma | 9
Representation Change
Heapsort.
• Heaps merupakan sebuah
binary tree dimana nilai elemen root lebih besar dari elemen child
• Heapsort adalah teknik
pengurutan elemen bilangan yang mengadopsi heaps.
Analisis Algoritma | 10
Representation Change
• Contoh kasus: Heapsort.
Problem: Urutkan deret bilangan berikut menggunakan heapsort.
18 62 12 9 24 35 2
Latihan 2.Kasus: Heapsort.
Problem 1: Urutkan deret bilangan berikut menggunakan heapsort.
4 18 31 25 26 9 75 40
Problem Reduction
• Problem Reduction: sebuah teknik yang digunakan dalam
menemukan suatu solusi dengan cara mereduksi problem ke problem lainnya yang telah diketahui solusi untuk penyelesaiannya.
• Beberapa algoritma yang didasari oleh strategi ini adalah:
• Computing the Least Common Multiple
Problem Reduction
Computing the Least Common Multiple.
• Least Common Multiple (LCM):sebuah metode perkalian untuk
menentukan bilangan bulat (integer) terkecil yang memungkinkan untuk setiap nilai dan .
• Contoh kasus: Least Common Multiple.
Problem: Tentukan lcm(24, 60) dan lcm(10, 5).
• Contoh kasus di atas dapat diselesaikan dengan perkalian sederhana antara bilangan faktorisasi primadan .
Analisis Algoritma | 13
Problem Reduction
Analisis Algoritma | 14
Problem Reduction
Latihan 3.
Kasus: Least Common Multiple. Problem 1: Tentukan lcm(280, 630)!
Problem 2: Tentukan lcm untuk nilai dan , jika nilai dan pada problem 1 direduksi menjadi 1/3 bagian!
Analisis Algoritma | 15
Problem Reduction
Counting Path in Graph.
• Menentukan banyaknya jalur/path dalam sebuah graph (directed atau undirected).
• Problem ini dapat diselesaikan dengan memperhatikan nilai eksponen yang mewakili notasi setiap adjacency matrix.
• Contoh kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph ini.
Penyelesaian.
1). lcm(24, 60)24 = 2 . 2 . 2 . 3 = 24
Problem Reduction
Analisis Algoritma | 17 Penyelesaian.
Untuk graph A terdapat 3 jalur (path) dengan jarak 2 yang menghubungkan antara simpul a dan kembali lagi ke a, yaitu a –b –a, a –d –a, dan a –c – a, sedangkan untuk graph A2, terdapat hanya 1 path dengan jarak 2, yaitu a
–d –c.
Problem Reduction
Latihan 4.
Kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph yang ditunjukkan oleh adjacency metrics berikut.
Analisis Algoritma | 18