Anda di halaman 1dari 27

9/13/2022

Prodi Teknik Informatika FT UNIB 1

 Sebelum memulai mata kuliah ini, anda sudah


mampu:
◦ Menggunakan Induksi Matematika untuk
pembuktian.
◦ Membuat algoritma sederhana

Prodi Teknik Informatika FT UNIB 2


Boko Susilo 1
2
9/13/2022

 Pada akhirperkuliahanandamampu
◦ Menjelaskanlangkah-langkahmenyelesaikanmasalah
◦ Mendiskripsikanbagaimanamenganalisasuatualgoritma
◦ Menjelaskanbagaimanamemilihoperasi yang dihitungdanmengapa
yang lain tidak
◦ Menjelaskanbagaimanamelakukananalisa best-case, worst-case,
dan average-case
◦ Bekerjadenganlogaritma, probabilitas, danpenjumlahan
◦ Mendeskripsikan 𝑓 ,  𝑓 , 𝑑𝑎𝑛 𝑂 𝑓 , 𝑙𝑎𝑗𝑢 𝑝𝑒𝑟𝑡𝑢𝑚𝑏𝑢ℎ𝑎𝑛,
𝑜𝑟𝑑𝑒𝑟 𝑠𝑢𝑎𝑡𝑢 𝑎𝑙𝑔𝑜𝑟𝑖𝑡𝑚𝑎
◦ Menggunakanpohonkeputusanuntukmenentukanbatasbawah
(lower bound) danbatasatas (upper bound) running time
darisuatualgoritma

Prodi Teknik Informatika FT UNIB 3

 Problem Pemecahan masalah Solusi

 Input Computer Output

• Input berisi data-data pada permasalahan


• Output data data pada solusinya

Prodi Teknik Informatika FT UNIB 4


Boko Susilo 2
4
9/13/2022

1 Mencari maksimum dari sebarisan elemen elemen {x1, x 2 , x 3 ,..., x n }


.

Input:
barisan bilangan x , x , x ,..., x
1 2 3 n
Output:
sebuah bilangan yang terbesar diantara bilangan {x , x , x ,..., x }
1 2 3 n
Misalkan: Input : { 2, 4, 7, 1}
Output :7
2. Mengurutkan (sorting) barisan x , x , x ,...,,x
1 2 3 n
maka
Output: barisan bilangan terurut {y , y , y ,..., y }
1 2 3 n
Misalkan:
input : { 2, 4, 7, 1}
output : { 1, 2, 4, 7}

Prodi Teknik Informatika FT UNIB 5

 Cari minimum spanning tree


 Input: 10
2 1
7
4
 A 4
1 B
5
3

 Output 2 1
4
1

Prodi Teknik Informatika FT UNIB 6


Boko Susilo 3
6
9/13/2022

Hardware
 Input Software
Output

Hardware: melakukan langkah-langkah


komputasi yang sederhana (add,
subtract, compare) dengan cepat
Software: menspesifikasi dan mengatur
langkah-langkah komputasi untuk di
eksekusi (platform Operating System,
programming language, compiler,
dsb).

Prodi Teknik Informatika FT UNIB 7

 Melakukan perancangan algoritma

 Input Algoritma Output

 Algoritma : sederetan langkah-langkah komputasi yang


mengubah input menjadi output

 Pembahasan desain algoritma mencakup:


◦ Incremental/iterative
◦ Devide and conquer
◦ Greedy
◦ Dynamic Programming
◦ Backtracking
◦ Branch and Bound

Prodi Teknik Informatika FT UNIB 8


Boko Susilo 4
8
9/13/2022

 Ada 2 hal yang menjadi perhatian dalam


analisa algoritma, yaitu:
1. Correctness suatu algortma, yaitu membuktikan
bahwa suatu algoritma menghasilkan output yang
diminta (benar) untuk semua instance dari
problem.
2. Complexity suatu algoritma, mencakup
sumberdaya (resources) komputer, yaitu time,
space, dan cost measure lainnya.

Prodi Teknik Informatika FT UNIB 9

 Kompleksitas algoritma dapat meliputi kekompleksitasan


algoritma terhadap ruang(space), waktu (time), atau
ukuran biaya (cost measure) lainnya.
 Waktu yang diperlukan untuk mengerjakan langkah
penyelesaian permasalahan adalah salah cost terpenting.
 Contoh:
 Algoritma persoalan mencari maksimum dari n buah
bilangan.
 Misalkan algoritma tersebut MAX1 disajikan berikut:

◦ MAX1(x1, x2, x3, …,xn, max)


 max  x1
 For i= 2 to n
 If xi > max then max  xi

Prodi Teknik Informatika FT UNIB 10


Boko Susilo 5
10
9/13/2022

Prodi Teknik Informatika FT UNIB 11

11

 Kompleksitas algoritma di atas, terlihat bahwa


bilangan x2, x3, …, xn dibandingkan dengan isi dari
max masing-masing satu kali.
 Misal c adalah waktu yang diperlukan untuk
membandingkan dua buah bilangan, maka total waktu
untuk proses perbandingan seluruh bilangan adalah …..
 (n-1).c.
 Karena c adalah konstanta yang bergantung pada
perangkat komputer yang digunakan (hardware), maka
sering cukup dikatakan bahwa waktu yang diperlukan
untuk mengerjakan (running time) algoritma tersebut
adalah proposional terhadap (n-1)

Prodi Teknik Informatika FT UNIB 12


Boko Susilo 6
12
9/13/2022

MAX1(x1, x2, x3, …,xn, max)


1. max  x1
2. For i= 2 to n
3. If xi > max then max  xi

Prodi Teknik Informatika FT UNIB 13

13

 Contoh: mencari bilangan terbesar diantara 1, 3, 2, 4


 MAX1 (1, 3, 2, 4, max) (diskusikan dengan teman anda),
Cari jumlah operasi yang dilakukan sesuai dengan
algoritma MAX1, waktu 10 menit)

1 max = 1 Baris ke-1 algoritma


3
2
4 max = 1 3 dibandingkan dengan max =1, krn 3 lebih
besar, maka max = 3
1
3
max = 3 max = 3
2 1 1 1 max = 4
4 3 3 3
2 2 2
4 4 4

Prodi Teknik Informatika FT UNIB 14


Boko Susilo 7
14
9/13/2022

 Menyelesaikan mencari bilangan terbesar dari  Pada baris ke-5 dan ke-6, secara
sebarisan bilangan x1, x2, x3, …., xn dengan cara rekursif input dari problem dibagi
membagi barisan menjadi dua subbarisan secara menjadi dua dan algoritma MAX2
rekursif. dikerjakan pada masing-masing
subproblem.
 Setelah ditemukan harga maksimum
 Algoritma MAX2 dari masing-masing subproblem,
MAX2(x1, x2, x3, …, xn, max) bandingkan keduanya dan yang
lebih besar ditempatkan pada max
1. If n=1 then
(baris ke-7 dan ke-8)
2. max  x1
 Bilangan max inilah yang menjadi
3. return solusi dari problem.
4. Else
 Correctness algoritma MAX2 dapat
5. MAX2(x1, x2, …Xn/2, a) dibuktikan dengan induksi
6. MAX2(Xn/2+1, Xn/2 + 2, …, Xn-n/2, b) matematika (exercise mandiri)
7. If a > b then max  a  Running timenya (n-1)
8. else max  b
9. return
( algoritma rekursif)

Prodi Teknik Informatika FT UNIB 15

15

 Contoh:
 Mencari bilangan terbesar diantara barisan
bilangan 1, 3, 4, 2
 Bagi menjadi dua subproblem
1
a=3
3
max = 4

4
b=4
2

Prodi Teknik Informatika FT UNIB 16


Boko Susilo 8
16
9/13/2022

 Bubble sort (A)


1. for i = 1 to n-1
2. do for k = 1 to n- i
3. do if xk > xk+1 then
4. max  xk
5. xk  xk+1
6. xk+1 = max
 Correctness dari algoritma di atas dapat dilihat sbb.:
 Untuk i = 1, semua langkah algoritma telah dilakukan, maka …?
 xn  max
 Bila i = 2, bilangan terbesar kedua akan diletakkan pada xn-1
 Demikian seterusnya, sampai untuk i= n-1, semua langkah telah
dilaksanakan, bilangan terkecil akan diletakkan pada ….?
 x1
 Hasil akhir semua bilangan telah terurut secara ascending

Prodi Teknik Informatika FT UNIB 17

17

 Pada baris 1, untuk i = 1 dilakukan perbandingan


sebanyak ….?
 (n-1) kali

 Untuk i= 2, dilakukan perbandingan sebanyak …?

 (n-2) kali, dst.

 Untuk i = (n-1), perbandingan sebanyak …?

 n-(n-1) = 1 kali

 Maka total perbandingan adalah: …..


(n-1) + (n-2) + (n-3) + …+ 2 + 1 = n(n-1)/2
Sehingga runnig time dari Bubble Sort proposional
dengan n(n-1)/2

Prodi Teknik Informatika FT UNIB 18


Boko Susilo 9
18
9/13/2022

1 1 1 4 4 4 4 4 4 4 4 4

3 3 4 1 1 3 3 3 3 3 3 3

2 4 3 3 3 1 1 2 2 2 2 2

4 2 2 2 2 2 2 1 1 1 1 1

Iterasi 1 Iterasi 2 Iterasi 3

Pada semua contoh sorting di atas, terlihat bahwa banyaknya


perbandingan untuk menyelesaikan algoritma tidak bergantung
pada jenis susunan input.

Prodi Teknik Informatika FT UNIB 19

19

1
3
3
3 4
1 4
1 4
2 1
2 2
4 3
4 3
4 3
2 2
2
1
n=4 1
x1 max(x1, x2) max(x1, x2, x3, x4 )

max(x1, x2) 2nd or 3rd


x2
x3 max(x3, x4) 2nd or 3rd
min(x1, x2, x3, x4 )
x4 max(x3, x4)

Prodi Teknik Informatika FT UNIB 20


Boko Susilo 10
20
9/13/2022

Bubble Sort

n 4 8 16 … n
#perband. 6 28 120 … (n-1)+(n-2)+ …+ 3+2+1=
n(n-1)/2 = O(n2)

Bose-Nelson Sort
n 4 8 16 … n
#perband. 5 19 65 … O(n1.57)

Prodi Teknik Informatika FT UNIB 21

21

 Insertion_Sort (A)
1. For j  2 to length[A]
2. Do key  A[j]
3. // sisipkan A[j] ke dalam barisan A[1…(j-1)]
4. i  j-1
5. while i > 0 dan A[i] >key
6. do A[i+1]  A[i]
7. i  i-1
8. A[i+1]  key
 Langkah dalam Insertion Sort seperti pada permainan kartu
bridge.
 Pada Insertion Sort bilangan-bilangan diurutkan secara “in place”
◦ Misal ke-n bilangan input diletakkan di array A, maka bilangan-bilangan
tersebut diurutkan di dalam array sendiri, dengan maksimal sebanyak
konstan buah bilangan darinya diletakkan diluar array A di setiap waktu.
 Pada Insertion sort selesai dikerjakan, array A akan berisi barisan
output yang telah terurut.

Prodi Teknik Informatika FT UNIB 22


Boko Susilo 11
22
9/13/2022

 Contoh:
 Pada pengurutan A = <5, 2, 4, 6, 1, 3>
dengan algoritma Insertion Sort dapat
digambarkan sebagai berikut:
5 2 4 6 1 3

4 6 1 3 1 2 4 5 6 3
2 5

2 4 5 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3

Prodi Teknik Informatika FT UNIB 23

23

 Misalkan tj = banyaknya kali dari pengopersaian


loop while, test dibaris ke-5 untuk j = 2, 3, …, n
 Baris komentar adalah statement yang tidak
dieksekusi, sehingga tidak membutuhkan waktu.
 Misalkan setiap statement pada baris ke-i
membutuhkan cost ci untuk mengeksekusinya.
 Maka bila T(n) adalah time complexity (lebih
sering disebut sebagai running time) dari
Insertion_Sort(A) diperoleh:
T (n)  c1n  c2 (n  1)  c4 (n  1)  c5  t j  c6  (t j  1)  c7  (t j  1)  c8  (n  1)

Prodi Teknik Informatika FT UNIB 24


Boko Susilo 12
24
9/13/2022

Baris Cost #kali


1 For j  2 to length[A] C1 n
2 Do key  A[j] C2 (n-1)
3 // sisipkan A[j] ke dalam barisan A[1…(j-1)] C3 0
4 i  j-1 C4 (n-1)
5 while i > 0 dan A[i] >key C5 tj
6 do A[i+1]  A[i] C6 (tj – 1)
7 i  i-1 C7 (tj – 1)
8 A[i+1]  key C8 (n-1)

T(n) = an + b (suatu fungsi linier dari n)

Prodi Teknik Informatika FT UNIB 25

25

 Running time yang diperlukan dalam


mengerjakan algoritma Insertion Sort tergantung
pada susunan inputnya.
 Kasus terbaik (best case) artinya running time
untuk mengerjakan algoritma adalah paling kecil.
 Best case pada insertion sort akan terjadi apabila
input array-nya sudah terurut menaik
(increasing)
 Sebaliknya, apabila urutan inputnya terbalik
maka running time dari insertion sort merupakan
kasus terburuk (worst case), artinya memerlukan
waktu paling besar. (buktikan…!)

Prodi Teknik Informatika FT UNIB 26


Boko Susilo 13
26
9/13/2022

 Pendekatan merancang algoritma yang paling


sederhana adalah pendekatan incremental
(iteratif).
 Algoritma MAX1 menggunakan iteratif
(incremental approach):
◦ Cari maksimum dari x1
◦ Cari maksimum dari x1, x2
◦ Cari maksimum dari x1, x2, x3
◦ Dan seterusnya.

Prodi Teknik Informatika FT UNIB 27

27

 Sebuah algoritma tidak saja harus benar, tetapi juga harus


mangkus (efisien).
 Algoritma yang bagus adalah algoritma yang mangkus.
 Kemangkusan algoritma diukur dari berapa jumlah waktu
dan ruang (space) memori yang dibutuhkan untuk
menjalankannya.
 Algoritma yang mangkus ialah algoritma yang
meminimumkan kebutuhan waktu dan ruang.
 Kebutuhan waktu dan ruang suatu algoritma bergantung
pada ukuran masukan (n), yang menyatakan jumlah data
yang diproses.
 Kemangkusan algoritma dapat digunakan untuk menilai
algoritma yang terbaik.

28
Boko Susilo 14
28
9/13/2022

10-4 x 2n

Waktu komputasi (dalam detik)


105 1 hari 10-6 x 2n

104
1 jam
103 10-4 x n3

102
1 menit

10 10-6 x n3
1 detik
1
5 10 15 20 25 30 35 40
10-1 Ukuran masukan

29

29

 Kita dapat mengukur waktu yang diperlukan oleh


sebuah algoritma dengan menghitung banyaknya
operasi/instruksi yang dieksekusi.
 Jika kita mengetahui besaran waktu (dalam satuan
detik) untuk melaksanakan sebuah operasi tertentu,
maka kita dapat menghitung berapa waktu
sesungguhnya untuk melaksanakan algoritma tersebut.

30
Boko Susilo 15
30
9/13/2022

Contoh 1. Menghitung rerata


Diketahui Array (larik): a1, a2, a3, . . ., an
 procedure HitungRerata(input a1, a2, ..., an : integer, output r : real)
 { Menghitung nilai rata-rata dari sekumpulan elemen larik integer a1, a2, ..., an.
 Nilai rata-rata akan disimpan di dalam peubah r.
 Masukan: a1, a2, ..., an
 Keluaran: r (nilai rata-rata)
 }
 Deklarasi
 k : integer Operasi (tugas/instruksi) apa saja yang dilakukan
 jumlah : real oleh algoritma rerata disamping ..?
 Algoritma (i) Operasi pengisian nilai ,
 jumlah  0 (ii) Operasi penjumlahan
 k1 (iii) Operasi pembagian
 while k  n do
 jumlah  jumlah + ak
 k  k+1
 endwhile
 {k>n}
 r  jumlah/n { nilai rata-rata }

31

31

 Operasi (tugas) apa saja yang dilakukan oleh algoritma rerata di atas..?
 (i) Operasi pengisian nilai ,
 (ii) Operasi penjumlahan
 (iii) Operasi pembagian

Operasi Pengisian Nilai Time


jumlah0 1
k1 1
jumlahjumlah+ak n
kk+1 n
r  jumlah/n 1
Total= t1 = 1 + 1 + n + n + 1 = 3 + 2n

32
Boko Susilo 16
32
9/13/2022

Operasi Penjumlahan Time


jumlah+ak n
k+1 n
Total=t2 = n + n = 2n

Operasi Pembagian Time


jumlah/n 1
Total (t3) = 1
Total kebutuhan waktu algoritma HitungRerata:
t = t1 + t2 + t3 = (3 + 2n)a + 2nb + 1c detik
= 2(a+b)n + 3a + 2b +1c = xn + k

33

33

 Model perhitungan kebutuhan waktu seperti di atas kurang


dapat diterima:
 Dalam praktik kita tidak mempunyai informasi berapa waktu
sesungguhnya untuk melaksanakan suatu operasi tertentu
 Komputer dengan arsitektur yang berbeda akan berbeda pula
lama waktu untuk setiap jenis operasinya.
◦ Selain bergantung pada komputer, kebutuhan waktu sebuah program
juga ditentukan oleh compiler bahasa yang digunakan.
◦ Model abstrak pengukuran waktu/ruang harus independen dari
pertimbangan mesin dan compiler apapun.
◦ Besaran yang dipakai untuk menerangkan model abstrak pengukuran
waktu/ruang ini adalah kompleksitas algoritma.

34
Boko Susilo 17
34
9/13/2022

 Ada dua macam kompleksitas algoritma, yaitu kompleksitas waktu


dan kompleksitas ruang.
◦ Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi
yang dibutuhkan untuk menjalankan algoritma sebagai fungsi
dari ukuran masukan n.
◦ Kompleksitas ruang, S(n), diukur dari memori yang digunakan
oleh struktur data yang terdapat di dalam algoritma sebagai
fungsi dari ukuran masukan n.
◦ Dengan menggunakan besaran kompleksitas waktu/ruang
algoritma, kita dapat menentukan laju peningkatan waktu
(ruang) yang diperlukan algoritma dengan meningkatnya ukuran
masukan n.

35

35

 Dalam praktek, kompleksitas waktu dihitung


berdasarkan jumlah operasi abstrak yang mendasari
suatu algoritma, dan memisahkan analisisnya dari
implementasi.
 Contoh 2. Tinjau algoritma menghitung rerata pada
 (Lihat Contoh 1):
 Operasi yang mendasar pada algoritma tersebut
adalah operasi penjumlahan elemen-elemen ak (yaitu
jumlahjumlah+ak),
 Kompleksitas waktu HitungRerata adalah T(n) = n.

36
Boko Susilo 18
36
9/13/2022

procedure CariElemenTerbesar(input a1,  Operasi (tugas) apa saja


a2, ..., an : integer, output maks : pada algoritma
integer) CariElemenTerbesar
{ Mencari elemen terbesar dari
sekumpulan elemen larik integer a1, a2, disamping?
..., an. ◦ Operasi pengisian
Elemen terbesar akan disimpan di dalam
maks. ◦ Operasi perbandingan
Masukan: a1, a2, ..., an ◦ Operasi penjumlahan
Keluaran: maks (nilai terbesar)
}  Kompleksitas waktu
Deklarasi algoritma dihitung
k : integer berdasarkan jumlah
Algoritma
operasi perbandingan
maksa1
k2 elemen larik
while k  n do  ( a[i] > maks).
if ak > maks then
maksak  Kompleksitas waktu
endif CariElemenTerbesar :
ii+1
endwhile  T(n) = n – 1.
{ k > n }

37

37

 Kompleksitas waktu dibedakan atas tiga macam :


 1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst
case),
  kebutuhan waktu maksimum.
 2. Tmin(n) : kompleksitas waktu untuk kasus terbaik (best case),
  kebutuhan waktu minimum.
 3. Tavg(n): kompleksitas waktu untuk kasus rata-rata (average
case)
  kebutuhan waktu secara rata-rata

38
Boko Susilo 19
38
9/13/2022

procedure PencarianBeruntun(input a1, a2, ..., an : integer, x: integer, output idx : integer)
Deklarasi
k : integer
ketemu : boolean {bernilai true jika x ditemukan atau false jika x tidak ditemukan }
Algoritma:
k1
ketemu  false
while (k  n) and (not ketemu) do
if ak = x then
ketemutrue
else
kk+1
endif
endwhile
{ k > n or ketemu }
if ketemu then { x ditemukan }
idx  k
else
idx  0 { x tidak ditemukan }
endif

39

39

 Jumlah operasi perbandingan elemen tabel:


 1. Kasus terbaik: ini terjadi bila a1 = x.
 Tmin(n) = 1
 2. Kasus terburuk: bila an = x atau x tidak ditemukan.
 Tmax(n) = n
 3. Kasus rata-rata: Jika x ditemukan pada posisi ke-j, maka
operasi perbandingan (ak = x) akan dieksekusi sebanyak j kali.

 Tavg(n) =

40
Boko Susilo 20
40
9/13/2022

 Cara lain:
 asumsikan bahwa P (aj = x) = 1/n. Jika aj = x maka Tj yang
dibutuhkan adalah Tj = j. Jumlah perbandingan elemen larik
rata-rata:
n n 1 1 n
Tavg(n) =  T P ( A[ j ]  X )   T
j j
 Tj
j 1 j 1 n n j 1
1 n 1 n ( n  1) n 1
=  j = ( )
n j1 n 2 2

41

41

procedure PencarianBiner(input a1, a2, ..., an :


integer, x : integer, output idx : integer)
Deklarasi
i, j, mid : integer
ketemu : boolean
Algoritma
1. Kasus terbaik
i1 Tmin(n) = 1
jn
ketemufalse
while (not ketemu) and ( i  j) do
mid  (i+j) div 2
2. Kasus terburuk:
if amid = x then Tmax (n) = 2log n
ketemu  true
else
if amid < x then { cari di belahan kanan }
i  mid + 1
else { cari di belahan kiri }
j  mid - 1;
endif
endif
endwhile
{ketemu or i > j }

if ketemu then
idxmid
else
idx0
endif

42
Boko Susilo 21
42
9/13/2022

procedure Urut(input/output a1, a2, ...,an: integer)


Deklarasi
i, j, imaks, temp : integer
Algoritma
for i  n downto 2 do {pass sebanyak n – 1 kali}
imaks 1
for j2 to i do
if aj > aimaks then
imaks  j
endif
endfor
{ pertukarkan aimaks dengan ai }
temp  ai
ai  aimaks
aimaks  temp
endfor

43

43

 (i) Jumlah operasi perbandingan elemen

 Untuk setiap pass ke-i,


 i = 1  jumlah perbandingan = n – 1
 i = 2  jumlah perbandingan = n – 2
 i = 3  jumlah perbandingan = n – 3
 i = k  jumlah perbandingan = n – k
 i = n – 1  jumlah perbandingan = 1
 Jumlah seluruh operasi perbandingan elemen-elemen larik
adalah n 1
n(n  1)
 T(n) = (n – 1) + (n – 2) + … + 1 =  n  k 
i 1
2

44
Boko Susilo 22
44
9/13/2022

 Ini adalah kompleksitas waktu untuk kasus terbaik dan terburuk,


karena algoritma Urut tidak bergantung pada batasan apakah data
masukannya sudah terurut atau acak.

 (ii) Jumlah operasi pertukaran


 Untuk setiap i dari 1 sampai n – 1, terjadi satu kali pertukaran
elemen, sehingga jumlah operasi pertukaran seluruhnya adalah
 T(n) = n – 1.
 Jadi, algoritma pengurutan maksimum membutuhkan n(n – 1 )/2
buah operasi perbandingan elemen dan n – 1 buah operasi
pertukaran.

45

45

 Tinjau T(n) = 2n 2 + 6n + 1
 Perbandingan pertumbuhan T(n) dengan n 2
n T(n) = 2n2 + 6n + 1 n2
10 261 100
100 2061 1000
1000 2.006.001 1.000.000
10.000 1.000.060.001 1.000.000.000

• Untuk n yang besar, pertumbuhan T(n) sebanding dengan n2. Pada kasus
ini, T(n) tumbuh seperti n2 tumbuh.
• T(n) tumbuh seperti n2, tumbuh saat n bertambah. Kita katakan bahwa
T(n) berorde n2 dan kita tuliskan T(n) = O(n2)
• Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi
kompleksitas waktu asimptotik.

46
Boko Susilo 23
46
9/13/2022

 DEFINISI. T(n) = O(f(n)) (dibaca “T(n) adalah O(f(n)” yang artinya T(n) berorde
paling besar f(n) ) bila terdapat konstanta c dan n0 sedemikian sehingga T(n)
 c (f (n)) untuk n  n0.
 f(n) adalah batas atas (upper bound) dari T(n) untuk n yang besar

 Contoh 7. Tunjukkan bahwa T(n) = 3n + 2 = O(n).


 Penyelesaian:
 3n + 2 = O(n) 5n -3n >= 2  2n >= 2  n>=1
 karena 3n + 2  3n + 2n = 5n , n  1 (c= 5 dan n0 = 1).

 Contoh 8. Tunjukkan bahwa T(n) = 2n2 + 6n + 1 = O(n2).


 Penyelesaian:
 2n2 + 6n + 1 = O(n2)
 karena 2n2 + 6n + 1  2n2 + 6n2 + n2 = 9n2 ,  n  1.
 atau
 karena 2n2 + 6n + 1  n2 + n2 + n2 = 3n2 ,  n  6 (c=3 dan n0 = 6).

47

47

TEOREMA.
 Bila T(n) = am nm + am-1 nm-1 + ... + a1n + a0 adalah polinom
derajat m maka T(n) = O(nm ).
TEOREMA.
 Misalkan T1(n) = O(f(n)) dan T2(n) = O(g(n)), maka
 (a) T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n), g(n))
 (b) T1(n)T2(n) = O(f(n))O(g(n)) = O(f(n)g(n))
 (c) O(cf(n)) = O(f(n)), c adalah konstanta
 (d) f(n) = O(f(n))

48
Boko Susilo 24
48
9/13/2022

 Contoh 9.
 Misalkan T1(n) = O(n) dan T2(n) = O(n2), maka
 (a) T1(n) + T2(n) = O(max(n, n2)) = O(n2)
 (b) T1(n)T2(n) = O(n.n2) = O(n3)

Contoh 10.
 O(5n2) = O(n2)
 n2 = O(n2)

49

49

 Aturan Untuk Menentukan Kompleksitas Waktu


Asimptotik
 Jika kompleksitas waktu T(n) dari algoritma diketahui.
 Contoh:
 (i) pada algoritma cari maksimum
◦ T(n) =n – 1= O(n)
 (ii) pada algoritma pencarian_beruntun
◦ Tmin(n) = 1 = O(1)
◦ Tmax(n) = n = O(n)
◦ Tavg(n) = (n + 1)/2 = O(n),
 (iii) pada algoritma pencarian_biner,
◦ Tmin(n) = 1 = O(1)
◦ Tmax(n) = 2log n = O(2log n)

50
Boko Susilo 25
50
9/13/2022

 (iv) pada algoritma selection_sort


 T(n) = (n + 2) log(n2 + 1) + 5n2 = O(n2)
 Penjelasannya adalah sebagai berikut:
 T(n) = (n + 2) log(n2 + 1) + 5n2
 = f(n)g(n) + h(n),
 Kita rinci satu per satu:
◦  f(n) = (n + 2) = O(n)
◦  g(n) = log(n2 + 1) = O(log n), karena log(n2 + 1)
 log(2n2) = log 2 + log n2
= log 2 + 2 log n  3 log n untuk n > 2
◦  h(n) = 5n2 = O(n2)
◦ maka
◦ T(n) = (n + 2) log(n2 + 1) + 5n2
= O(n)O(log n) + O(n2
= O(n log n) + O(n2) = O(max(n log n, n2)) = O(n2)

51

51

 Menghitung O-Besar untuk setiap instruksi di dalam algoritma dengan


panduan di bawah ini, kemudian menerapkan teorema O-Besar.
 (a) Pengisian nilai (assignment), perbandingan, operasi aritmetik, read,
write membutuhkan waktu O(1).
 (b) Pengaksesan elemen larik atau memilih field tertentu dari sebuah
record membutuhkan waktu O(1).
 Contoh:
read(x); O(1)
x:=x + a[k]; O(1) + O(1) + O(1) = O(1)
writeln(x); O(1)

52
Boko Susilo 26
52
9/13/2022

 Kompleksitas waktu asimptotik = O(1) + O(1) + O(1) = O(1)


 Penjelasan: O(1) + O(1) + O(1) = O(max(1,1)) + O(1) = O(1) +
O(1) = O(max(1,1)) = O(1)

53

53

Boko Susilo 27

Anda mungkin juga menyukai