You are on page 1of 12

Nama: Dwi Prima Handayani Putri

Nim: 1915101012
Kelas: Ilkom VI A

1. (Computing time complexity, 15 point)


1.1 What is the time complexity of the “naive gcd algorithm” and the “Euclidean
algorithm” explained in the lecture? Justify your answer!
a. Naive GCD Algorithm

The number of operations:


Assignments: line 2, 3, 5; with: 1 + 1 + n = n + 2 operations
Mod: line 5, with n operations
Min: line 3, with 1 operations

T = Ο(1) + Ο(1) + n × Ο(1)


=1+1+𝑛
=2+𝑛

T = Ο(1) + Ο(1) + n × Ο(1)


= 𝑐1 + 𝑐2 + 𝑐4 n
= 𝑐3 + 𝑐4 n
= Ο(n)

Complexity: T(n) = a(2+n) + bn + c = (a + b)n + (2a + c)

For assignments 2 and 3 roughly takes the same amount of time everytime, no
matter how big or small the i value is. Meanwhile, the 5 assignment, needs to
repeat the process n time, until the if statement fulfilled. So, the time
complexity for the Naive GCD Algorithm is 2 + n.
b. Euclidean Algorithm

The number of operations:


Assignments: line 3, 4, 5; with: n + 1 + 1 = n + 2 operations
Mod: line 3, with n operations

T = Ο(1) × n + Ο(1) + Ο(1)


=n+1+1
=2+𝑛

T = Ο(1) × n + Ο(1) + Ο(1)


= 𝑐1 n + 𝑐2 + 𝑐3
= 𝑐4 n + 𝑐3
= Ο(n)

Complexity: T(n) = a(2+n) + bn + c = (a + b)n + (2a + c), and it is Ο(n).

1.2 Compute the best-case, worst-case, and average-case complexities of the


following algorithm!

a. Best case
Best case akan terjadi jika A[1] = x, sehingga found bernilai
benar.𝑇 𝑀𝑖𝑛(𝑛) = 1
b. Worst Case
Worst case terjadi jika A[i] = x, sehingga algoritma melakukan perulangan
(while). Hal ini menyebakan nilai x tidak diemukan. 𝑇 𝑀𝑎𝑥(𝑛) = 𝑛.
c. Average Case
𝑛(𝑛 + 1)
1 + 2 + 3 + ⋯ . +𝑛 2 𝑛(𝑛 + 1) 1 𝑛 + 1
𝑇𝑎𝑣𝑔 = = 𝑛 = . =
𝑛 2 𝑛 2
1

2. (Dominant terms in a function, 20 point)


Select the dominant term(s) and specify the lowest O-complexity of each
algorithm! Give a short proof or an explanation for each function to justify your
answer!
Expression Dominant terms(s) O(.)
1. 5 + 0.001𝑛3 + 0.025𝑛 0.001𝑛3 Ο(𝑛3 )
2. 500𝑛 + 100𝑛1,5 + 50nlog10 𝑛 100𝑛1,5 Ο(𝑛1,5 )
3. 0,3𝑛 + 5𝑛1,5 + 2.5𝑛1,75 2.5𝑛1,75 Ο(𝑛1,75 )
4. 𝑛2 log 2 𝑛 + 𝑛 (log 2 𝑛)2 𝑛2 log 2 𝑛 𝛰(𝑛2 log n)
5. 𝑛 log 3 𝑛 + 𝑛 log 2 𝑛 𝑛 log 3 𝑛 , 𝑛 log 2 𝑛 𝛰 (n log n)
6. 3 log 8 𝑛 + log 2 log 2 log 2 𝑛 3 log 8 𝑛 𝛰 ( log n)
7. 2𝑛 + 𝑛0,5 + 0,5𝑛1,25 0,5𝑛1,25 Ο(𝑛1,25 )
8. 0,01𝑛𝑙𝑜𝑔2 𝑛 + 𝑛(log 2 𝑛)2 0,01𝑛𝑙𝑜𝑔2 𝑛 𝛰 (n log n)
9. 100𝑛𝑙𝑜𝑔3 𝑛 + 𝑛3 + 100𝑛 𝑛3 Ο(𝑛3 )
10. 0,003𝑙𝑜𝑔4 𝑛 + log 2 log 2 𝑛 0,003𝑙𝑜𝑔4 𝑛 𝛰 ( log n)

1. 5 + 0.001𝑛3 + 0.025𝑛 ≤ 5𝑛3 + 0.001𝑛3 + 0.025𝑛3 = 5,026𝑛3 for all n ≥ 1


In this case, k = 5, 026 = 𝑛0 = 1. So, it Is Ο(𝑛3 )

2. log10 𝑛 ≤ log10 100𝑛1,5


≤ log10 100 + log10 𝑛1,5
≤ 2 + 1,5log10 𝑛
Since 50nlog10 𝑛 ∈ Ο(n), then
500𝑛 + 100𝑛1,5 + 50nlog10 𝑛 ∈ Ο(n) + Ο(𝑛1,5 ) + Ο(n) ∈ Ο(max(Ο(n),
Ο(𝑛1,5 )))
max(n, 𝑛1,5 ) = 𝑛1,5 , then it is Ο(𝑛1,5 )

3. 0,3𝑛 + 5𝑛1,5 + 2.5𝑛1,75 ≤ 0,3𝑛1,75 + 5𝑛1,75 + 2,5𝑛1,75= 7,8𝑛1,75 for all n ≥


1
In this case, k = 7,8 = 𝑛0 =1
So, it is Ο(𝑛1,75 )

4. 𝑛2 log 2 𝑛 + 𝑛 (log 2 𝑛)2

log 2 𝑛 ≤ log 2 𝑛2
≤ 2 log 2 𝑛

(log 2 𝑛)2 ≤ log 2 𝑛2


≤ 2 log 2 𝑛
Since: 𝑛 = ∈ Ο(n)
log 2 𝑛 and (log 2 𝑛)2 = ∈ Ο(log n)
𝑛2 log 2 𝑛 + 𝑛 (log 2 𝑛)2 ∈ (Ο(𝑛2 ) . Ο(log n)) + (Ο(n) . Ο(log n))
∈ Ο(max(𝑛2 log n, n log n))

max(𝛰(𝑛2 log n), Ο(n log n)) = (𝑛2 log n) then is 𝛰(𝑛2log n).

5. 𝑛 log 3 𝑛 + 𝑛 log 2 𝑛
log 3 𝑛 ≤ log 3 𝑛2
≤ 2 log 3 𝑛

log 2 𝑛 ≤ log 2 𝑛2
≤ 2log 2 𝑛
Since: 𝑛 = ∈ Ο(n)
log 3 𝑛 and log 2 𝑛 = ∈ Ο(log n)
𝑛 log 3 𝑛 + 𝑛 log 2 𝑛 ∈ (Ο(n) . Ο(log n)+ (Ο(n) . Ο(log n))
∈ Ο(max(n log n, n log n))
max(Ο(n log n), Ο(n log n)) = (n log n) then is Ο(n log n).

6. 3 log 8 𝑛 + log 2 log 2 log 2 𝑛


log 8 𝑛 ≤ log 8 𝑛2
≤ 2 log 8 𝑛

log 2 ≤ 1

Since: 𝑛 and log 2 = ∈ Ο(1)


𝑛 = ∈ Ο(n)
log 8 𝑛 = ∈ Ο(log n)

3 log 8 𝑛 + log 2 log 2 log 2 𝑛 ∈ (Ο(1) . Ο(log n)+ (Ο(1). Ο(1) . Ο(log n )
)
∈ Ο(max(log n, log n))
max(Ο(log n), 0)= (log n) then is Ο(log n).

7. 2𝑛 + 𝑛0,5 + 0,5𝑛1,25 ≤ 2𝑛1,25 + 𝑛1,25 + 0,5𝑛1,25= 3,5𝑛1,25 for all n ≥ 1


In this case, k = 3,5 = 𝑛0 = 1. So, it Is Ο(𝑛1,25 )

8. 0,01𝑛𝑙𝑜𝑔2 𝑛 + 𝑛(log 2 𝑛)2


log 2 𝑛 ≤ log 2 𝑛2
≤ 2 log 2 𝑛

(log 2 𝑛)2 ≤ log 2 𝑛2


≤ 2log 2 𝑛
Since: 0,01𝑛 = ∈ Ο(n)
log 2 𝑛 𝑑𝑎𝑛 (log 2 𝑛)2 = ∈ Ο(log n)

0,01𝑛𝑙𝑜𝑔2 𝑛 + 𝑛(log 2 𝑛)2 ∈ (Ο(n) . Ο(log n)+ Ο(n) .Ο(log 𝑛)


∈ (Ο(n log n)+ Ο(𝑛 log 𝑛))
∈ Ο(max(n log n, 𝑛 log 𝑛 ))

max(Ο(log n), 𝑛 log 𝑛)= (log n) then is Ο(n log n).

9. 100𝑛𝑙𝑜𝑔3 𝑛 + 𝑛3 + 100𝑛
log 3 𝑛 ≤ log 3 𝑛2
≤ 2 log 3 𝑛

Since: 100𝑛 = ∈ Ο(n)


log 3 𝑛 = ∈ Ο(log n)
𝑛3 = ∈ Ο(𝑛3 )

100𝑛𝑙𝑜𝑔3 𝑛 + 𝑛3 + 100𝑛 ∈ (Ο(n) . Ο(log n)+ Ο(𝑛3 ) +Ο(𝑛)


∈ (Ο(n log n)+ Ο(𝑛3 )) + Ο(𝑛)
∈ Ο(max(n log n, 𝑛3 , 𝑛))

max(Ο(n log n), Ο(𝑛3 ), Ο(𝑛)) = (𝑛3 ) then is Ο(𝑛3 ),).

10. 0,003𝑙𝑜𝑔4 𝑛 + log 2 log 2 𝑛

log 4 𝑛 ≤ log 4 𝑛2
≤ 2 log 4 𝑛
log 2 ≤ 1

log 2 n ≤ log 2 𝑛2
≤ 2log 2 𝑛

Since: 0,003 = ∈ Ο(1)


log 4 𝑛 = ∈ Ο(log n)
log 2 𝑛 = 𝛰(log 𝑛)
log 2 = 1

0,003𝑙𝑜𝑔4 𝑛 + log 2 log 2 𝑛 ∈ (Ο(1) . Ο(log n)+ (Ο(1) Ο(log n)


∈ Ο(max(log n, log n))s

max(Ο(log n), 0)= (log n) then is Ο(log n).

3. (Comparing time complexities of two algorithms, 20 point)


a. Suatu algoritma memiliki kompleksitas waktu O(f(n)) dan running time T(n)
= cf(n). Jika algoritma tersebut membutuhkan waktu 10 detik untuk
memproses 1000 data, berapakah waktu yang dibutuhkan untuk memproses
100.000 data jika f(n) = n? Bagaimana halnya jika f(n) = 𝑛3 ?
Penyelesaian:
Dik:
O(f(n))
T(n) = cf(n)
t = 10 sekon
s = 100
Dit:
T(n) untuk memproses 100.000 data, jika f(n) = n dan f(n) = n 3?
Jawab:
T(n) = cf(n)
𝑇(𝑛)
c = 𝑓(𝑛)
10
c = 𝑓(1000)

Nilai T(n) untuk f(n) adalah


T(n) = cf(n)
10
T(100.000) = 𝑓(1000). f(100.000)
𝑓1.000.000
= 𝑓(1000)
= 1.000 sekon

Nilai T(n) untuk f(n) = 𝑛3 adalah


T(n) = cf(n)
10
T(100.000) = . f(100.000)3
𝑓(1000)
𝑓 109
= 𝑓(1000)
= 106 sekon
Jadi, Nilai T(n) untuk f(n) adalah103 sekon dan T(n) untuk f(n) = 𝑛3 adalah
106 sekon.

b. Algoritma A dan B masing-masing memiliki kompleksitas waktu TA(n) = 5n


log 10n and TB(n) = 25n microdetik, jika diberikan input dengan ukuran n.
Dalam aturan Big-O, algoritma manakah yang bekerja lebih baik? Berikan
batasan nilai n agar algoritma B memiliki kompleksitas waktu yang lebih baik!
Dik:
TA(n) = 5n log 10n, TB(n) = 25n microdetik dengan input n.
TA(n) ≤ TB(n) = 5n log 10n ≤ 25n
= log 10n ≤ 5
= 25 ≤ 10n

25
n= 10

TA(n) = 5n log 10n


25 25
= 5. log 10.
10 10
= 5. 3,2 log10. 3,2
= 16 log 32
= 16.5
= 80

TB(n) = 25n
25
= 25. 10
= 80

25
Terbukti, n = 10

Dalam aturan Big-O, algoritma yang bekerja lebih baik adalah O(n).

Batasan nilai n agar algoritma B memiliki kompleksitas waktu yang lebih baik
25
adalah n = .
10

c. Suatu perangkat lunak A dan B masing-masing memiliki kompleksitas waktu


O(n log n) dan O(𝑛2 ). Keduanya memiliki running time TA(n) = 𝐶𝐴 𝑛 log10 𝑛
dan TB(n) = 𝐶𝐵 𝑛 milidetik untuk memproses data dengan ukuran n. Selama
proses pengujian, waktu rata-rata pemrosesan n = 104 data dengan perangkat
A dan B masing-masing adalah 100 milidetik dan 500 detik. Berikan batasan
nilai n agar perangkat A bekerja lebih cepat dibandingkan perangkat B, dan
berikan batasan nilai n untuk kondisi sebaliknya. Perangkat mana yang Anda
rekomendasikan jika kita harus memproses data dengan ukuran tidak lebih
dari n = 109 ?
Dik:
software A = O(n log n)
software B = O(𝑛2 )

TA(n) = cAn log10 n, TB(n) = cBn, untuk meproses data n dalam milidetik
Untukn n = 104 data:
rata-rata TA(n) = 100 milidetik
rata-rata TB(n) = 500 milidetik

Mencari nilai 𝐶𝐴 dan 𝐶𝐵 :


TA(n)
cA = n log
10 n
100
= 104 log 4
10 10
100
=104 .4
1
= 400

TB(n)
cB = n
500
= 104
1
= 20

Batasan nilai n agar perangkat A bekerja lebih cepat dibandingkan perangkat


B:
TA(n) >TB(n)
𝐶𝐴 𝑛 log10 𝑛 > 𝐶𝐵 𝑛

1 1
n log10 𝑛 > 20n
400

n log 𝑛 n
> 20
400

log 𝑛
>1
20
log n >20
1020 >n
Batasan nilai n agar perangkat A bekerja lebih cepat dibandingkan perangkat
B adalah n < 1020 . Adapun batasan nilai n agar perangkat B bekerja lebih
cepat lambat dari perangkat A adalah n > 1020 .

Perangkat mana yang Anda rekomendasikan jika kita harus memproses data
dengan ukuran tidak lebih dari n = 109 adalah perangkat A, karena perangkat
A bekerja lebih cepat dibandingkan perangkat B adalah n < 1020 .

4. (Formal proof, 20 point)


(a) Using the formal definition of Big-O notation, prove the following:
T(n) = 𝑎0 + 𝑎1 𝑛 + 𝑎2 𝑛2 + 𝑎3 𝑛3 ∈ O(𝑛3 )
Hint: temukan konstanta c dan batasan nilai 𝑛0 sedemikian sehingga 𝑐𝑛3 ≥ T(n)
untuk n ≥ 𝑛0 .
Jawab:
𝑎0 + 𝑎1 𝑛 + 𝑎2 𝑛2 + 𝑎3 𝑛3 ≤ |𝑎0 |𝑛3 + |𝑎1 |𝑛3 + |𝑎2 |𝑛3 + |𝑎3 |𝑛3 =
(|𝑎0 |+ |𝑎1 | + |𝑎2 | + |𝑎3 |)𝑛3 , for all n ≥ 1, so 𝑐𝑛3 ≥ T(n).

(b) Let 𝑇1 (𝑛) ∈ O(f(n)) and 𝑇2 (𝑛) ∈ O(g(n)). Prove the following:
(a) 𝑇1 (𝑛) + 𝑇2 (𝑛) ∈ O(f(n)) + O(g(n)) ∈ O(max(f(n), g(n)))
(b) 𝑇1 (𝑛) · 𝑇2 (𝑛) ∈ O(f(n)) · O(g(n)) ∈ O(f(n) · g(n))
(c) O(cf(n)) ∈ O(f(n)), where c is a constant
(d) f(n) ∈ O(f(n))

Jawab:
(a) 𝑇1 (𝑛) + 𝑇2 (𝑛) ∈ O(f(n)) + O(g(n)) ∈ O(max(f(n), g(n)))

𝑇1 (n) ≤ 𝑐1 . 𝑓1 (n)
Untuk n > 𝑛1 , karena 𝑇1 ∈ O(𝑓1 )

𝑇2 (n) ≤ 𝑐2 . 𝑓2 (n)
Untuk n > 𝑛2 , karena 𝑇2 ∈ O(𝑓2 )

𝑇1 (n) + 𝑇2 (n) ≤ 𝑐1 . 𝑓1 (n) + 𝑐2 . 𝑓2 (n)


≤max(𝑐1. 𝑐2 )( 𝑓1 (n) + 𝑓2 (n))
≤⏟2. max(𝑐1 . 𝑐2 ).max(𝑓1 (n) + 𝑓2 (n))

c; c>0
Dengan syarat, n > max
⏟ (𝑛1 , 𝑛2 ) .
𝑛0
(b) 𝑇1 (𝑛) · 𝑇2 (𝑛) ∈ O(f(n)) · O(g(n)) ∈ O(f(n) · g(n))

𝑇1 (n) ≤ 𝑐1 . 𝑓1 (n)
Untuk n > 𝑛1 , karena 𝑇1 ∈ O(𝑓1 )

𝑇2 (n) ≤ 𝑐2 . 𝑓2 (n)
Untuk n > 𝑛2 , karena 𝑇2 ∈ O(𝑓2 )

𝑇1 (n) + 𝑇2 (n) ≤ 𝑐1 . 𝑓1 (n) . 𝑐2 . 𝑓2 (n)


≤ 𝑐1 𝑐2 𝑓1 (n) 𝑓2 (n)

Dengan syarat, n > ⏟


max (𝑛1 , 𝑛2 ) dengan c > 0.
𝑛0

(c) O(cf(n)) ∈ O(f(n)), where c is a constant


(cf(n)) < (c + ∈)f(n) berlaku untuk n > 0 dan ∈ > 0.

Dengan syarat:
Factor konstan diabaikan dan hanya kekuatan fungsi n yang boleh
dieksploitasi.

(d) f(n) ∈ O(f(n))


Jika nilai konstanta dan 𝑛0 adalah bilangan positif maka 0 ≤ f(n) ≤ cg(n)
untuk semua n ≥ 𝑛0 sehingga terbukti f(n) ∈ O(f(n)).

5. (Big-O, Big-Ω, and Big-Θ, 5 point / question, total 40 point)


Let f, g: 𝑁 + → 𝑁 + be two functions. Prove or invalidate each of the following:
a. If f(n) ∈ O(g(n)) then g(n) ∈ O(f(n)
Jawab:
Salah. Contoh kontra:
𝑓(𝑛) = 𝑛 𝑑𝑎𝑛 𝑔(𝑛) = 𝑛2

1
Nilai 𝑓(𝑛) = 𝑂(𝑛2 ) ekuivalen dengan 𝑛 ≤ 𝑎𝑛2 atau 𝑛 ≤ a, jadi cukup untuk
memilih a. Namun, sebaliknya akan membutuhkan 𝑛2 ≤ 𝑎𝑛 atau n ≤ a untuk
tetap benar, yaitu a tidak bisa menjadi konstan.

b. f(n) + g(n) ∈ Θ(min(f(n), g(n))) (assuming that it exists)


Salah. Contoh kontra:

f(n) = 1 dan g(n), sehingga Min (f(n) , g(n)) = 1 apapun n, tetapi jelas f(n) +
g(n) = 1 + n ≠ O(1), jadi demikian juga f(n) + g(n) ≠ 𝜃 (min f(n) , g(n))

c. If f(n) ∈ O(g(n), then log(f(n)) ∈ O(log(g(n))


Benar, g(n) > 1 untuk n cukup besar. Kita ketahui bahwa f(n) = O(g(n)), harus
ada konstan 𝑛𝑜 > 0 dan a > 0 sedemikian rupas
∀𝑛 ≥ 𝑛0 , f(n) ≤ ag(n)
𝑙𝑜𝑔 𝑓(n) ≤ log a + log g(n)

Di sisi lain, log f(n) = O(log(g(n)) berarti ada b>0 sehingga: log f(n) ≤ b log
g(n)
Untuk n cukp besar, bisakah kita menemukan nilai b yang akan menjadi kedua
ketidaksetaraan benar?

log a + log g(n) ≤ b log g(n)

log 𝑎
⟺ log 𝑔(𝑛) + 1 ≤ 𝑏

Bahwa b harus dipilih sebagai untuk membuktikan ini, dan ini hanyalah
mungkin jika g(n) > 1 cukup besar. Jika g secara berkala mencapai 1 saat n
meningkat, maka klaimnya itu salah.

d. If f(n) ∈ O(g(n)) then 2 f(n) ∈ O(2g(n))


Benar
f(n) = O(g(n)) pasti ada a > 0 sedemikian rupa f(n) = ag(n) bernilai benar
untuk n cukup besar. Di sisi lain, log f(n) = O(log g(n)) berarti bisa mencari b
sedemikian rupa:
log f(n) ≤b log g(n)
f(n) ≤ g (𝑛)𝑏

Bernilai benar untuk n cukup besar. Untuk menyimpulkan, cukup lihat


ag(n) ≤ g (𝑛)𝑏
⟺ ag(n) ≤ g (𝑛)𝑏−1
⟺ a ≤ g (𝑛)𝑏−1
⟺ log a ≤ (b - 1) g(n)
log 𝑎
⟺ 𝑔(𝑛) + 1 ≤ b

Jadi b > 1 + log a selalu menjadi salah satu pilihan kemungkinan.


e. f(n) ∈ O(f 2 (n))
1
Benar, 𝑓(𝑛) ≤ 𝑎𝑓 2 (𝑛) ekuivalen dengan a≥ 𝑓(𝑛), jadi cukup lihat a = 1 untuk
menjaga ketidaksetaraan.

Benar. Jika f(n) = O(g(n)), maka ada a > 0 dan 𝑛0 > 0 seperti:
𝑛 ≥ 𝑛0 ⟹ 𝑎𝑔(𝑛)
1
⟺ 𝑔(𝑛) ≥ 𝑎 𝑓(𝑛)
Definisi penjelasannya dari kata Ω denga konstanta penskalaan dipilih sebagai
1/a.
f. If f(n) ∈ O(g(n)) then g(n) ∈ Ω(f(n))
Salah. Contoh penyangkalannya:
𝑛 𝑛
𝑓(𝑛) = 𝑒𝑥𝑝 𝑛 dengan 𝑒𝑥𝑝 𝑛 ≤ 𝑎 exp ( 2) 𝑑𝑎𝑛 𝑎 ≥ 𝑒𝑥𝑝 ( 2)
Jadi a →∞ sebagai n →∞, sebuah kontradiksi dari asumsi itu harus konstan.
g. f(n) ∈ Θ(f(n/2))
Benar
𝑓(𝑛) + 𝑂(𝑓(𝑛)) ≤ 𝑓(𝑛) + 𝑎𝑓(𝑛)
= (1 + 𝑎)𝑓(𝑛)
Untuk beberapa konstan a > 0 dan n cukup besar. Sehingga, dengan jelas
(1 + 𝑎)𝑓(𝑛) ≤ 𝑏𝑓(𝑛) ⟹ 𝑏 ≥ 1 + 𝑎. Menunjukkan validitas dari kesetaraan
di dalam O, dan (1 + 𝑎)𝑓(𝑛) ≥ 𝑐𝑓(𝑛) ⟹ 𝑐 ≤ 1 + 𝑎. Di Ω, dan hasilnya
mengikuti.

You might also like