Vous êtes sur la page 1sur 20

ALGORITMA KOMPLEKS

OLEH
SUNANTO,S.Kom,M.Kom

ALGORITMA KOMPLEKS
Pada

bagian sebelumnya kita telah


mempelajari mengenai algoritma yang
baik,
serta
bagaimana
membuktikan
sebuah algoritma akan memberikan hasil
yang benar. Selain memberikan hasil yang
benar, efisiensi dari waktu eksekusi
ataupun
penggunaan
memori
dari
algoritma adalah hal yang penting bagi
sebuah
algoritma.
Bagian
ini
akan
membahas bagaimana mengukur efisiensi
sebuah algoritma, sehingga kita dapat
memilih
algoritma
yang
baik
atau

Landasan Umum Algoritma Kompleks


Sebuah algoritma tidak saja benar, tetapi juga harus

efisien.
Algoritma yang efisien ialah algortima yang
meminimumkan kebutuhan waktu dan ruang
Keefisienan sebuah algoritma diukur dari beberapa
jumlah waktu dan ruang (space) memori yang
dibutuhkan untuk menjalankannya Analisis
Algoritma
Kebutuhan waktu dan ruang suatu algoritma
bergantung pada ukuran masukan (n), yang
menyatakan jumlah data yang di proses.
Keefisienan algoritma dapat digunakan untuk menillai
algoritma yang terbaik.

Analisis Algoritma
Tujuan

Mengukur efisiensi sebuah algoritma


Membanding-bandingkan dua/lebih algoritma
untuk masalah yang sama
Efisiensi diukur dari : waktu (time) dan memori
(space).
Dua besaran yang digunakan : kompleksitas
algoritma adalah
1. Kompleksitas waktu T(n)
2. Kompleksitas ruang S (n)
.Independen dari spesifikasi komputer dan
compiler

Ukuran input (inputs size)


Hampir seluruh algortima memiliki waktu eksekusi lebih

lama jika mendapatkan input yang berukuran besar


Ukuran masukan (n) : jumlah data yang di proses oleh
sebuah algoritma.
Contoh
Algoritma pengurutan 1000 elemen

larik, maka n = 1000


Algoritma perkalian 2 buah matriks
berukuran 50 x 50, maka n =50
Dalam praktek perhitungan kompleksitas, ukuran

masukan dinyatakan sebagai variabel n saja

Contoh Operasi Khas didalam Algoritma


Algoritma pencarian didalam larik
operasi khas : perbandingan elemen larik
Algoritma pengurutan
operasi khas : perbandingan elemen,
penukaran elemen
Algoritma penjumlahan 2 buah matriks
operasi khas : penjumlahan
Algorima perkalian 2 buah matriks
operasi khas : perkalian dan penjumlahan

Kompleksitas Waktu Asimptotik


Notasi asimtotik merupakan

himpunan fungsi yang dibatasi oleh


suatu fungsi
n N yang cukup
besar.
Fungsi : N R (sering R+)
Notasi Asimtotik digunakan untuk
menentukan kompleksitas suatu
algoritma dengan melihat waktu
tempuh algoritma. Waktu tempuh
algoritma merupakan fungsi : N R+

Continue Asimptotik
Terdapat tiga macam yaitu :

Keadaan terbaik (best case)


Dilambangkan dengan notasi (...)
dibaca Theta

Keadaan rata-rata (average case)


Dilambangkan dengan notasi (...)
dibaca Omega

Keadaan terburuk (worst case)


Dilambangkan
dengan notasi
O(...)
Kinerja
sebuah algoritma
biasanya
dibaca Big-O

diukur dengan menggunakan patokan


keadaan terburuk (worst case) yang
dinyatakan dengan Big-O

Notasi Big Oh
Definisi 1 : waktu terburuk

f n g n iff ada dua bilangan konstanta c dan no

f n c g n , n no

A n an n .... a1n a0
Theorema : Misal
adalah suatu polinom derajat n. Maka A n n m
m

Notasi Theta
Definisi 2 : waktu tercepat

f n g n

iff ada dua konstanta c dan no

f n c g n , n no

Notasi Omega
Definisi 3 : waktu rata-rata

f n g n

iff ada tiga konstanta positif c1, c2, dan no

c1 g n f n c2 g n , n no

Intro to asymptotic

Sebuah coefisients (a,b,c) di jabarkan pada tabel berikut

ini :
Home computer
Desktop computer
Array size n

Data to intro asymtotic

f1(n) = home computer data


f2(n) = desktop computer data

Kompleksitas waktu asymtotic


Tinjau + 6n + 1

Perbandingan pertumbuhan T(n) dengan n2

10
100
1000
10.000

261

100

Tabel kompleksitas waktu asymtotic


10

261

100

100

2061

1000

1000

2.006.001

1.000.000

2.000.060.001

1.000.000

10.000

Untuk n yang besar, pertumbuhan T(n) sebanding dengan


T(n) tumbuh seperti tumbuh
T(n) tumbuh seperti tumbuh saat n bertambah. Ditulis :
T(n)=
Notasi O disebut notasi O-Besar (Big-O) yang merupakan

notasi kompleksitas waktu asimptotik

MENGHITUNG WAKTU PROSES (1)


Contoh : Pseudocode Selection Sort (pseudocode 3.6)

1 for i=1 to N-1 do


2
min=i
3
for j=i+1 to N do
4
if A[j]<A[min] then
5
min=j
6
end if
7
end for
8
swap(A[i],A[min])
9 end for
Hitung waktu proses algoritma yang diperlukan untuk mengurutkan deretan yang berisi 8

angka acak !
Bagaimana jika ukuran input belum diketahui?
Dinyatakan dengan N
Waktu proses dinyatakan dengan sebuah persamaan N, selanjutnya disebut Fungsi
Kompleksitas
Fungsi Kompleksitas menyatakan seberapa kompleksnya sebuah algoritma

MENGHITUNG WAKTU PROSES (2)


Asumsi bahwa nilai N belum diketahui
Bisa dihitung bahwa untuk setiap perulangan i akan

terjadi perulangan j sebanyak N-1, N-2, N-3, ..., 1 kali


Misalkan nilai N adalah 5, berarti kita perlu menghitung
5+4+3+2+1 (rumus deret hitung)
Dengan nilai a dan b = 1 diperoleh :
N
D

N 2 (2a ( N 1)b)

DN

N ( N 1)
2

FUNGSI KOMPLEKSITAS
Fungsi Kompleksitas algoritma Selection Sort di atas
f ( n)

n( n 1)
2

Dengan rumus Fungsi Kompleksitas N(N+1)/2 berarti jika N=5 maka

waktu proses adalah 15.


Jika nilai N diperbesar menjadi 8, maka waktu proses menjadi 36.
Nilai N dan waktu proses bisa dipetakan dalam sebuah koordinat
Cartesius dengan N di sumbu x dan waktu proses di sumbu y.
Terlihat bahwa waktu proses algoritma Selection Sort bertumbuh
(growth rate) secara linear.

Thank you

See your next week

MATERI
Notasi Asimtotik
Kriteria Efisiensi Umum
O(1): Kompleksitas Konstan
O(log n): Kompleksitas Logaritmik
O(n): Kompleksitas Linear
O(n log n)
O(nm): Kompleksitas Polinomial

Vous aimerez peut-être aussi