Anda di halaman 1dari 55

Fungsi Pertumbuhan dan

Kompleksitas Algoritma
Sukmawati Nur Endah
Departemen Informatika UNDIP
Fungsi Pertumbuhan
Algoritma fungsi
perpangkatan?
 Contoh
f(x,y) = xy


Algoritma Perpangkatan

 Dengan algoritma diatas, berapa langkah untuk pangkat


(2,1) ?
Alg Perpangkatan

 Terdapat 3 langkah
 Bagaimana dengan pangkat (2,2)? Ada berapa langkah?
 Bagaimana dengan pangkat (2,5)? Ada berapa langkah?

 Terkait jumlah langkah, apa yang dapat disimpulkan?


Alg Perpangkatan

 baris : hasil = x * hasil dijalankan sebanyak y kali

 Fungsi pangkat akan selalu diselesaikan dalam 2+y


Alg Perpangkatan

 Pengaruh y terhadap jumlah eksekusi

 Nilai angka 2 semakin tidak signifikan untuk y yang besar


 Untuk itu dapat disederhanakan fungsi pangkat dapat
diselesaikan dalam y langkah
Bagaimana jika sebuah alg
mempunyai y2 langkah?
Fungsi Pertumbuhan
 Efisiensi algoritma dilihat dari ukuran pertumbuhan
jumlah langkah eksekusi terhadap ukuran jumlah data
 Fungsi pangkat mempunyai fungsi pertumbuhan linier
Notasi Asimtotik

 Fungsi pertumbuhan mempunyai notasi ➔ notasi Asimtotik

 Notasi Asimtotik
 Big O (O besar)
 Big Ω (Omega Besar)
 Big Θ (Tetha Besar)
Big O

 Notasi Big-O digunakan untuk :


 mengkategorikan algoritma ke dalam fungsi yang
menggambarkan batas atas (upper limit) dari pertumbuhan
sebuah fungsi ketika masukan dari fungsi tersebut
bertambah banyak

 Definisi:
T(n) = O(f(n)) bila terdapat konstanta C dan n0 sedemikian
sehingga T(n) ≤ C. f(n), untuk n ≥ n0
Fungsi Big-O
O(1): Kompleksitas Konstan

 Berapapun ukuran data atau masukan yang diterima,


algoritma dengan kompleksitas konstan akan memiliki
jumlah langkah yang sama untuk dieksekusi

 merupakan algoritma paling efisien dari seluruh kriteria


yang ada.

 Contoh : algoritma yang digunakan untuk menambahkan


elemen baru ke dalam linked list
O(1): Kompleksitas Konstan

 Contoh implementasi dengan bahasa C


O(1): Kompleksitas Konstan
Latihan

 Buatlah algoritma untuk menpertukarkan nilai a dan b.


Setelah ditukar, nilai a berisi nilai b dan nilai b berisi
nilai a

 Berapa langkah dari algoritma yang Anda buat?


O(log n): Kompleksitas
Logaritmik

 Algoritma dengan kompleksitas logaritmik merupakan


algoritma yang menyelesaikan masalah dengan membagi-
bagi masalah tersebut menjadi beberapa bagian,
sehingga masalah dapat diselesaikan tanpa harus
melakukan komputasi atau pengecekan terhadap seluruh
masukan.

 Contoh : algoritma binary search


O(log n): Kompleksitas
Logaritmik
 Implementasi binary search dengan python
O(log n): Kompleksitas
Logaritmik
 Perhitungan
O(log n): Kompleksitas
Logaritmik
 Berapa kali harus melakukan perulangan??
 Kondisi perulangan dilihat dari dua hal berikut :
O(log n): Kompleksitas
Logaritmik
 Diturunkan lebih lanjut
O(log n): Kompleksitas
Logaritmik
 kondisi dari pemberhentian perulangan adalah ketika sisa
elemen list adalah 1

 Sehingga dapat dikatakan bahwa binary search memiliki


kompleksitas O(log2 n), atau sederhananya, O(log n).
O(log n): Kompleksitas
Logaritmik
O(n): Kompleksitas Linear

 Algoritma dengan kompleksitas linear bertumbuh selaras


dengan pertumbuhan ukuran data.

 Contoh : algoritma perhitungan pangkat bilangan,


algoritma linear search.
O(n): Kompleksitas Linear

 Contoh linear search pada python


O(n): Kompleksitas Linear

 asumsi n = len(lst)

 nilai kompleksitas dari linear search adalah 5+n, atau


dapat dituliskan sebagai O(n)
O(n): Kompleksitas Linear
O(n log n)

 Pada dasarnya algoritma kelas ini merupakan algoritma


log n yang dijalankan sebenyak n kali.
 Contoh: misalkan kita diminta untuk mencari sepasang
bilangan di dalam sebuah list yang jika ditambahkan
akan bernilai 0. Asumsikan list yang diberikan sudah
terurut.
 Salah satu solusi ;
 dengan menelusuri seluruh list, satu demi satu
(kompleksitas: n)
 mencari elemen yang bernilai invers dari elemen sekarang
menggunakan binary search (kompleksitas: log n).
O(n log n)

 Contoh implementasi

 Perhatikan bagaimana kita melakukan binary search


sebanyak n kali, sehingga secara sederhana kompleksitas
yang akan kita dapatkan adalah n ∗ log n=n log n
O(n log n)
O(nm): Kompleksitas Polinomial

 Algoritma dengan kompleksitas polinomial merupakan


salah satu kelas algoritma yang tidak efisien, karena
memerlukan jumlah langkah penyelesaian yang jauh
lebih besar daripada jumlah data.

 Contoh :...
O(nm): Kompleksitas Polinomial

 Contoh

 Algoritma di atas melakukan perkalian antara a dan b,


dengan melakukan penambahan 1 sebanyak b kali, yang
hasilnya ditambahkan sebanyak a kali.
O(nm): Kompleksitas Polinomial

 Kompleksitas :a*b
 Jika a=b maka kompleksitasnya a2, atau dapat ditulis
sebagai n2 yang diabstrakkan sebagai nm,m=2
O(nm): Kompleksitas
Polinomial
Perbandingan

Kompleksitas Algoritma
Kompleksitas Algoritma
Ingat Kembali :
Notasi Asimtotik
 Fungsi pertumbuhan mempunyai notasi ➔ notasi Asimtotik

 Notasi Asimtotik
 Big O (O besar)
 Big Ω (Omega Besar)
 Big Θ (Tetha Besar)
Big O

 Notasi Big-O digunakan untuk :


 mengkategorikan algoritma ke dalam fungsi yang
menggambarkan batas atas (upper limit) dari pertumbuhan
sebuah fungsi ketika masukan dari fungsi tersebut
bertambah banyak

 Definisi:
T(n) = O(f(n)) (artinya T(n) berorde paling besar f(n)) bila
terdapat konstanta C dan n0 sedemikian sehingga T(n) ≤ C.
f(n), untuk n ≥ n0
Catatan:

 Dari def : T(n) = O(f(n)) bukan sebaliknya

 Simbol “=“ menyatakan “adalah” bukan “sama dengan”

 Untuk menunjukkan T(n) = O(f(n)), hanya perlu


menemukan C dan n0 sedemikian sehingga T(n) ≤ C. f(n)
 Ingat : C dan n0 tidak unik
Contoh :

 Tunjukkkan bahwa T(n) = 2n2 + 6n + 1 = O(n2)!

 Penyelesaian 1:
Jika n ≥ 1 maka n ≤ n2 dan 1 ≤ n2 Sehingga
2n2 + 6n + 1 ≤ 2n2 + 6n2 + n2 = 9n2 untuk semua n ≥ 1

Jadi dengan C = 9 dan n0 = 1 terlihat bahwa


T(n) = 2n2 + 6n + 1 = O(n2)
Lanj.Contoh

 Penyelesaian 2
6n ≤ n2 untuk n ≥ 6 Sehingga
2n2 + 6n + 1 ≤ 2n2 + n2 + n2 = 4n2 untuk semua n ≥ 6

Jadi dengan C = 4 dan n0 = 6 terlihat bahwa


T(n) = 2n2 + 6n + 1 = O(n2)
Lanj. Contoh

 Penyelesaian 3
Untuk C berapa jika n0 = 2?

Dengan kata lain :


Berapa nilai C sdh terpenuhi :
2n2 + 6n + 1 ≤ Cn2 untuk semua n ≥ 2
Latihan

 Tunjukkan bahwa T(n) = 5 = O(1)!

 Penyelesaian :
5 = O(1) karena 5 ≤ 6.1 untuk n ≥ 1
5 = O(1) karena 5 ≤ 10.1 untuk n ≥ 1
Latihan

 Tunjukkan bahwa T(n) = 3n+2 = O(n)!

 Tunjukkan bahwa kompleksitas waktu algoritma selection


sort adalah T(n) = ½ n (n-1) = O(n2)!

 Tunjukkan bahwa T(n) = 5n2 = O(n3) dan T(n) = n3 ≠ O(n2)!


Teorema

 Bila T(n) = amnm + am-1nm-1 + ... + a1n + a0 adalah polinom


berderajat m maka T(n) = O(nm).

 Bukti :
T(n) = amnm + am-1nm-1 + ... + a1n + a0

a n
i
= i
i =0

n a
m
≤ i = C nm , untuk n ≥ 1
i =0
Jadi : T(n) = O(nm).
Teorema Big O

 Misalkan T1(n) = O(f(n)) dan T2(n) = O(g(n)), maka:


(a) (i) T1(n) + T2(n) = O(max(f(n),g(n))
(ii) T1(n) + T2(n) = O(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))


Contoh

 Misalkan T1(n) = O(n), T2(n) = O(n2) dan T3(n) = O(mn),


dengan m adalah peubah, maka :
 T1(n) + T2(n) = O(max(n,n2) = O(n2)
 T2(n) + T3(n) = O(n2+mn)
 T1(n) T2(n) = O(n.n2) = O(n3)

 O(5n2) = O(n2)
 n2= O(n2)
Aturan menentukan
kompleksias waktu asimtotik
 Ditentukan dengan mengambil suku yang mendominasi
fungsi T dan menghilangkan keofisiennya
 Misal :
 Algoritma Cari Elemen Terbesar : T(n) = n-1 = O(n)
 Algoritma Pencarian Linier
Tmin (n) = 1 = O(1)
Tmax (n) = n = O(n)
Taverage(n) = ½ (n + 1) = O(n)

 Menghitung kompleksitas waktu terburuk saja


Notasi Big Ω

 Mendefinisikan batas bawah (lower bound) dari suatu


kompleksitas waktu

 Definisi :
T(n) = Ω(g(n)) (artinya T(n) berorde paling kecil g(n)) bila
terdapat konstanta C dan n0 sedemikian sehingga T(n) ≥ C. g(n),
untuk n ≥ n0
Ilustrasi
Notasi Big Θ

 Definisi
T(n) = Θ(h(n)) bila terdapat konstanta C1, C2 dan n0 sedemikian
sehingga 0 ≤ C1.h(n) ≤ T(n) ≤ C2. h(n), untuk n ≥ n0

 T(n) = Θ(h(n)) (artinya T(n) berorde sama dengan h(n)) jika


T(n) = O(h(n)) dan T(n) = Ω(h(n))
Contoh

 Tentukan notasi Ω dan Θ untuk T(n) = 2n2 + 6n + 1!

 Penyelesaian :
Karena 2n2 + 6n + 1 ≥ 2n2 untuk semua n ≥ 1 maka
T(n) = 2n2 + 6n + 1 = Ω(n2)

 Karena 2n2 + 6n + 1 = O(n2) dan 2n2 + 6n + 1 = Ω(n2) maka


2n2 + 6n + 1 = Θ(n2)
Latihan

 Tentukan notasi O, Ω dan Θ untuk T(n) = 5n3 + 6n2 log n


Teorema

 Bila T(n) = amnm + am-1nm-1 + ... + a1n + a0 adalah polinom


berderajat m maka T(n) adalah berode nm.

 Contoh :
Tentukan notasi O, Ω dan Θ untuk algoritma selection sort!
 Penyelesaian :
T(n) = ½ n(n-1)
= ½ n2 – ½ n
Sesuai teorema maka algoritma ini berorde ....
Jadi notasinya....
Ada Pertanyaan?

Anda mungkin juga menyukai