Handout TIF207 Ch 6 Transform and Conquer
1/4/2016
Bab 6: Transform-and-Conquer
Analisis Algoritma:
Agenda.
•
•
•
•
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rd Edition,
Pearson Education, Inc., Addison-Wesley
Fakultas Teknologi dan Desain
1-1 Informatika
Program Studi Teknik
Introduction
Instance Simplification
Representation Change
Problem Reduction
Analisis Algoritma |
Introduction
2
Introduction
• Terdapat tiga variasi utama yang membedakan pengubahan
(transform) yang dilakukan untuk setiap kasus:
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.
• 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.
Analisis Algoritma |
3
Analisis Algoritma |
4
1
1/4/2016
Instance Simplification
Instance Simplification
• Computing the mode
• Checking if all elements are distinct (element uniqueness)
• Finding repeated elements
Presorting.
• Presorting merupakan metode pengurutan (sorting) yang
dilakukan sebelum waktu aktualnya (ahead of time) untuk
mengefisiensikan penyelesaian kasus.
• Contoh kasus 1: Searching with presorting.
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat
menentukan lokasi elemen dengan nilai terkecil pada deret berikut.
• Beberapa permasalahan yang terkait dengan list akan lebih
mudah jika list dalam keadaan terurut:
18 34 26 9 75 10
• Searching
• Computing the median
Analisis Algoritma |
5
Analisis Algoritma |
Instance Simplification
• Contoh kasus 2: Element uniqueness with presorting.
6
Instance Simplification
Latihan 1.
Kasus: Finding repeated elements
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat
menentukan elemen yang sama yang saling berpasangan deret di bawah
ini.
Problem 1: Tentukan prosedur untuk menemukan elemen dengan
kemunculan terbanyak pada deret berikut menggunakan metode presorting.
18 34 12 9 24 12 40 20
34 18 34 9 26 9 75 34
Analisis Algoritma |
7
Analisis Algoritma |
8
2
1/4/2016
Representation Change
Representation Change
Binary Search Tree.
Heapsort.
• Binary search tree merupakan salah satu metode pencarian elemen
yang mengakomodir teknik representation change.
• Heaps merupakan sebuah
binary tree dimana nilai
elemen root lebih besar dari
elemen child
• 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 |
• Heapsort adalah teknik
pengurutan elemen
bilangan yang mengadopsi
heaps.
9
Analisis Algoritma |
Representation Change
• Contoh kasus: Heapsort.
10
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.
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.
• Beberapa algoritma yang didasari oleh strategi ini adalah:
4 18 31 25 26 9 75 40
• Computing the Least Common Multiple
• Counting Path in a Graph
Analisis Algoritma |
11
Analisis Algoritma |
12
3
1/4/2016
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 prima dan .
Analisis Algoritma |
Problem Reduction
Penyelesaian.
1). lcm(24, 60) 24 = 2 . 2 . 2 . 3 = 24
60 = 2 . 2 . 2 . 3 . 5 = 60
lcm(24, 60) = (2 . 2 . 3) . 2 . 5 = 120
2). lcm(10, 5) 10 = 2 . 5 = 10
5=5
lcm(10, 5) = (2 . 5) . 5 = 50
13
Analisis Algoritma |
Problem Reduction
Latihan 3.
Kasus: Least Common Multiple.
14
Problem Reduction
Counting Path in Graph.
• Menentukan banyaknya jalur/path dalam sebuah graph (directed
atau undirected).
Problem 1: Tentukan lcm(280, 630)!
• Problem ini dapat diselesaikan dengan memperhatikan nilai
eksponen yang mewakili notasi setiap adjacency matrix.
Problem 2: Tentukan lcm untuk nilai dan , jika nilai dan pada
problem 1 direduksi menjadi 1/3 bagian!
• Contoh kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph ini.
Analisis Algoritma |
15
Analisis Algoritma |
16
4
1/4/2016
Problem Reduction
Problem Reduction
Latihan 4.
Penyelesaian.
1). lcm(24, 60) 24 = 2 . 2 . 2 . 3 = 24
Kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph yang
ditunjukkan oleh adjacency metrics berikut.
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.
Analisis Algoritma |
17
Analisis Algoritma |
18
Analisis Algoritma:
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rd Edition,
Pearson Education, Inc., Addison-Wesley
1-19
5
Bab 6: Transform-and-Conquer
Analisis Algoritma:
Agenda.
•
•
•
•
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rd Edition,
Pearson Education, Inc., Addison-Wesley
Fakultas Teknologi dan Desain
1-1 Informatika
Program Studi Teknik
Introduction
Instance Simplification
Representation Change
Problem Reduction
Analisis Algoritma |
Introduction
2
Introduction
• Terdapat tiga variasi utama yang membedakan pengubahan
(transform) yang dilakukan untuk setiap kasus:
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.
• 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.
Analisis Algoritma |
3
Analisis Algoritma |
4
1
1/4/2016
Instance Simplification
Instance Simplification
• Computing the mode
• Checking if all elements are distinct (element uniqueness)
• Finding repeated elements
Presorting.
• Presorting merupakan metode pengurutan (sorting) yang
dilakukan sebelum waktu aktualnya (ahead of time) untuk
mengefisiensikan penyelesaian kasus.
• Contoh kasus 1: Searching with presorting.
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat
menentukan lokasi elemen dengan nilai terkecil pada deret berikut.
• Beberapa permasalahan yang terkait dengan list akan lebih
mudah jika list dalam keadaan terurut:
18 34 26 9 75 10
• Searching
• Computing the median
Analisis Algoritma |
5
Analisis Algoritma |
Instance Simplification
• Contoh kasus 2: Element uniqueness with presorting.
6
Instance Simplification
Latihan 1.
Kasus: Finding repeated elements
Problem: Tentukan banyaknya tahapan yang harus dilalui untuk dapat
menentukan elemen yang sama yang saling berpasangan deret di bawah
ini.
Problem 1: Tentukan prosedur untuk menemukan elemen dengan
kemunculan terbanyak pada deret berikut menggunakan metode presorting.
18 34 12 9 24 12 40 20
34 18 34 9 26 9 75 34
Analisis Algoritma |
7
Analisis Algoritma |
8
2
1/4/2016
Representation Change
Representation Change
Binary Search Tree.
Heapsort.
• Binary search tree merupakan salah satu metode pencarian elemen
yang mengakomodir teknik representation change.
• Heaps merupakan sebuah
binary tree dimana nilai
elemen root lebih besar dari
elemen child
• 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 |
• Heapsort adalah teknik
pengurutan elemen
bilangan yang mengadopsi
heaps.
9
Analisis Algoritma |
Representation Change
• Contoh kasus: Heapsort.
10
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.
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.
• Beberapa algoritma yang didasari oleh strategi ini adalah:
4 18 31 25 26 9 75 40
• Computing the Least Common Multiple
• Counting Path in a Graph
Analisis Algoritma |
11
Analisis Algoritma |
12
3
1/4/2016
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 prima dan .
Analisis Algoritma |
Problem Reduction
Penyelesaian.
1). lcm(24, 60) 24 = 2 . 2 . 2 . 3 = 24
60 = 2 . 2 . 2 . 3 . 5 = 60
lcm(24, 60) = (2 . 2 . 3) . 2 . 5 = 120
2). lcm(10, 5) 10 = 2 . 5 = 10
5=5
lcm(10, 5) = (2 . 5) . 5 = 50
13
Analisis Algoritma |
Problem Reduction
Latihan 3.
Kasus: Least Common Multiple.
14
Problem Reduction
Counting Path in Graph.
• Menentukan banyaknya jalur/path dalam sebuah graph (directed
atau undirected).
Problem 1: Tentukan lcm(280, 630)!
• Problem ini dapat diselesaikan dengan memperhatikan nilai
eksponen yang mewakili notasi setiap adjacency matrix.
Problem 2: Tentukan lcm untuk nilai dan , jika nilai dan pada
problem 1 direduksi menjadi 1/3 bagian!
• Contoh kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph ini.
Analisis Algoritma |
15
Analisis Algoritma |
16
4
1/4/2016
Problem Reduction
Problem Reduction
Latihan 4.
Penyelesaian.
1). lcm(24, 60) 24 = 2 . 2 . 2 . 3 = 24
Kasus: Counting path in a graph.
Problem: Tentukan banyaknya jalur yang memungkinkan dari graph yang
ditunjukkan oleh adjacency metrics berikut.
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.
Analisis Algoritma |
17
Analisis Algoritma |
18
Analisis Algoritma:
Anany Levitin, Introduction to Design and Analysis of Algorithm, 3rd Edition,
Pearson Education, Inc., Addison-Wesley
1-19
5