Anda di halaman 1dari 3

TUGAS 6 MASTER THEOREM

Asisten Dosen : Jessica Felice Darmawan


Mata Kuliah : Responsi Design Analisis dan Algoritma
Kelas :A

Kelompok : 1. Felix Petra Sanjaya / C14220339


2. Nadya Ribena Sutanto / C14220230
3. Gerald Antonio Yapari / C14210271

Soal :

1. Berikut ini adalah beberapa persamaan yang melambangkan running time dari sebuah
algoritma divide and conquer. Untuk tiap persamaan, berikan time complexity dari
algoritma tersebut jika Master Theorem bisa diaplikasikan pada persamaan tersebut (jika
tidak bisa, tuliskan bahwa Master Theorem tidak bisa diaplikasikan)!

a. T(n)=7 T(n2)+7n3
b. T(n)=2 T(n4)+n
c. T(n)=2n T(n3)+n
d. T(n)=10 T(n2)+3n3+n2+4n log n+1
e. T(n)=3 T(n2)+n2log n

2. Seorang desainer algoritma akan membuat sebuah algoritma menggunakan konsep divide
and conquer. Setelah dirancang, algoritma tersebut ternyata memiliki pemanggilan fungsi
secara rekursif sebanyak 8 kali. Pada setiap pemanggilan rekursi, ukuran input yang
digunakan adalah setengah dari ukuran input awal. Selain itu, ternyata algoritma tersebut
membutuhkan sebuah proses penggabungan output dari rekursi yang time
complexity-nya O(n4).

1) Berapa time complexity dari keseluruhan algoritma tersebut?


2) Jika desainer algoritma tersebut menemukan cara untuk mempercepat proses
penggabungan output dari O(n4) menjadi O(n3), bagaimana pengaruhnya
terhadap time complexity dari algoritma tersebut?
3) Jika proses penggabungan output bahkan dapat dipercepat lagi menjadi O(n2),
bagaimana pengaruhnya terhadap time complexity dari algoritma tersebut?
Jawaban :

1. Time Complexity dari Algoritma Master Theorem

a. T(n) = 7 T(n/2) + 7n^3


7n^3 memiliki notasi big O yaitu O(n^3)
Maka,
a=7
b=2
d=3
b^d = 8
Jadi, a < b^d
O(n) = O(n^d)
O(n) = O(n^3)

b. T(n) = 2 T(n/4) + (n)^1/2


(n)^1/2 memiliki notasi big O yaitu O((n)^1/2)
Maka,
a=2
b=4
d=½
b^d = 2
Jadi, a = b^d
O(n) = O(n^d * logn)
O(n) = O(n^(½) * logn)

c. T(n) = 2n T(n/3) + n
a = 2n.
Nilai a harusnya bersifat konstan. Tapi, Nilai 2n ini merupakan sesuatu yang tidak
konstan karena berubah-ubah sesuai ukuran input. Jadi, Master Theorem tidak bisa
dipakai untuk kasus ini.

d. T(n) = 10 T(n/2) + 3n^3 + n^2 + 4n * log n + 1


(3n^3 + n^2 + 4n * log n + 1) memiliki notasi big O yaitu O(n^3)
Maka,
a = 10
b=2
d=3
b^d = 8
Jadi, a > b^d
O(n) = O(n ^ (logba)
O(n) = O(n ^ (log210)
e. T(n) = 3 T(n/2) + (n^2) * log n
((n^2) * log n) memiliki notasi big O yaitu O(n^2 * logn)
Maka,
a=3
b=2
d = 2 (Dalam kasus ini, kita lihat pangkat dari n saja, yaitu 2. Maka, d = 2)
b^d = 4
Jadi, a < b^d
Dari Slide Page 12, karena a < b^d, yang mendominasi adalah operasi di level 0.
Sehingga, yang diambil hanya sisi kanan [yaitu O(n^2 * logn)] saja.
Jawaban:
O(n) = O(n^2 * logn)

2. Proses penggabungan output dari rekursi yang time complexity-nya O(n4),

1) Time complexity dari algoritma divide and conquer dengan 8 pemanggilan rekursif dan
ukuran input yang berkurang setengahnya pada setiap pemanggilan rekursif adalah
O(nlog n), karena setiap level rekursi membagi ukuran input menjadi dua.

Namun, karena proses penggabungan output memiliki time complexity O(n^4), maka
keseluruhan time complexity dari algoritma tersebut adalah O(n^4 log n).

2) Jika desainer algoritma menemukan cara untuk mempercepat proses penggabungan


output dari O(n^4) menjadi O(n^3), maka keseluruhan time complexity dari algoritma
tersebut akan menjadi O(n^3 log n). Ini karena time complexity dari proses
penggabungan output akan menjadi faktor dominan dalam keseluruhan time complexity
setelah dipercepat.

3) Jika proses penggabungan output dapat dipercepat lagi menjadi O(n^2), maka
keseluruhan time complexity dari algoritma tersebut akan menjadi O(n^2 log n).
Kembali, ini karena time complexity dari proses penggabungan output akan menjadi
faktor dominan dalam keseluruhan time complexity setelah dipercepat.

Anda mungkin juga menyukai