You are on page 1of 27

Analysis

Efisiensi Algoritma
Pertemuan : II

Jurusan Teknik Informatika – Universitas Widyatama


Analysis of algorithms

• Issues:
– correctness
– time efficiency
– space efficiency
– optimality

• Approaches:
– theoretical analysis
– empirical analysis
Analisis Algoritma

Algoritma tidak cukup hanya benar saja


(correctness), tetapi juga harus efisien
baik dari segi waktu (time) dan ruang
memory (space)

3
Tujuan Analisis Algoritma

1. Mengukur efisiensi algoritma dari segi


waktu (time efficiency) dan ruang
memori (space efficiency).

2. Membanding-bandingkan dua/lebih
algoritma untuk masalah yang sama.

4
Efficiency Algoritma

Time Efficiency
•How fast an algorithm in question runs
•Seberapa cepat suatu algoritma berjalan.

Space Efficiency
Space (memory) yang diperlukan oleh
algoritma tersebut.

5
Time efficiency
Time efficiency is analyzed by determining the number of
repetitions of the basic operation as a function of input
size
• Basic operation: the operation that contributes the most
towards the running time of the algorithm

input size

T(n) ≈ copC(n)
running time execution time Number of times
for basic operation basic operation is
or cost executed

Note: Different basic operations may cost differently!


Empirical analysis of time
efficiency
• Select a specific (typical) sample of inputs

• Use physical unit of time (e.g., milliseconds)


or
Count actual number of basic operation’s
executions

• Analyze the empirical data


Input’s Size (Ukuran Input)

• Almost all algorithm run longer on larger


input
• Contoh :
Searching (pencarian), sorting
(pengurutan), Evaluasi polynomial,
mencari nilai max/min.

IF-UTAMA 8
Input size examples

Problem Input size

Pencarian bilangan pada suatu Ukuran array atau list


list/array (misalkan n)

Dimensi matriks (ukuran


Perkalian dua matriks
baris dikali kolom)

Pengujian apakah suatu bilangan n’size = number of digits


prima atau bukan (in binary representation)

graph problem #vertices and/or edges


Basic Operation

•The most important operation of the algorithm –


operasi atau proses yang paling penting pada
algoritma tersebut.

•The most time-consuming operation in the


algorithm’s innermost loop – operasi atau proses
yang paling memakan waktu biasanya pada loop
terdalam pada suatu algoritma.

10
Basic Operation examples

Problem Basic operation

Pencarian bilangan pada suatu


Key comparison
list/array

Perkalian dua matriks Multiplication of two numbers

Pengujian apakah suatu


Division
bilangan prima atau bukan

graph problem Visiting a vertex or traversing an edge


Time Efficiency

Counting the number of times the


algorithm’s basic operation is executed
on input of size n

12
Contoh 1 : Penjumlahan isi array
Misalkan terdapat array S berikut :

45 6 17 3 21
S[1] S[2] S[3] S[4] S[5]
Jumlahkan semua isi array tersebut :
sum = 0
sum = sum + S[1]
sum = sum + S[2]
.
.
sum = sum + S[5]

Input Size : 5 (ukuran array)


Basic Operation : Penjumlahan
T(n) : berapa kali penjumlahan dilakukan
T(n) = 5

13
Contoh 1 : Penjumlahan isi array
Misalkan terdapat array S berikut :
45 6 17 3 21
S[1] S[2] S[3] S[4] S[5]

Input Size : 5 (ukuran array)


Basic Operation : Penjumlahan
T(n) : berapa kali penjumlahan dilakukan
T(n) = 5

14
Contoh 1 : Penjumlahan isi array
Problem : menjumlahkan semua angka yang ada pada array
Input : array ukuran n (indeks 1..n) berisi angka integer positif
Output : sum (jumlah angka yang ada pada array input)

function sum(n: integer; S:array[1..n] of number):integer;


var
i:index
begin
sum:=0
for i:=1 to n do
sum:=sum + S[i]
end
end
15
Contoh 1 : Penjumlahan isi array
Proses yang dilakukan:
sum = 0
sum = S[1]+S[2]+S[3]…….+S[n]

Input Size :
Jumlah atau ukuran array = n

Basic Operation:
Penjumlahan

T(n): (berapa kali Basic Operation dilakukan terhadap Input Size)


T(n) = n

16
Contoh 1 : Penjumlahan isi array
Proses yang dilakukan:
sum = 0
sum = S[1]+S[2]+S[3]…….+S[n]

Input Size :
Jumlah atau ukuran array = n

Basic Operation:
Penjumlahan

T(n): (berapa kali Basic Operation dilakukan terhadap Input Size)


T(n) = n

17
Contoh 2 : Pencarian Nilai Max
Misalkan terdapat array A berikut :
45 6 17 3 21
A[1] A[2] A[3] A[4] A[5]

Bandingkan setiap isi array sampai mendapatkan nilai max:


max = A[1]

Bandingkan max dengan A[2],

jika A[2] lebih besar dari max maka max = A[2],


Jika tidak lanjutkan ke A[3]
Sampai akhir array

18
Contoh 2 : Pencarian Nilai Max
Misalkan terdapat array S berikut :
45 6 17 3 21
A[1] A[2] A[3] A[4] A[5]

Input Size : 5 (ukuran array)


Basic Operation : Perbandingan antara max dengan isi array
T(n) : berapa kali perbandingan dilakukan
T(n) = 4 kali

19
Contoh 2 : Pencarian Nilai Max
Problem : Mencari nilai maks dari suatu array
Input : array ukuran n (indeks 1..n) berisi angka integer positif
Output : max (nilai max pada array input)

procedure cariNilaiMax(input a1, a2, ..., an : integer, output max : integer)


Deklarasi
i : integer
Algoritma
maxa1
i2
while i  n do
if ai > max then
maxai
endif
ii+1
endwhile
{i>n}

20
Contoh 2 : Pencarian Nilai Max
Proses yang dilakukan:
max = A[1]
Bandingkan max dengan semua isi array, jika lebih besar maka max
sama dengan isi array tersebut

Input Size :
Jumlah atau ukuran array = n

Basic Operation:
Perbandingan

T(n): (berapa kali Basic Operation dilakukan terhadap Input Size)


T(n) = n-1
21
Contoh 3 : Sequential Search

Misalkan terdapat array A berikut :


45 6 17 3 21
A[1] A[2] A[3] A[4] A[5]

Problem: apakah nilai ‘X’ ada pada array tersebut

Bandingkan X dengan A[1],

Jika A[1] = X maka ketemu, jika tidak maka lanjut ke indeks


berikutnya.
Jika sampai pada akhir array maka X tidak ketemu

22
Contoh 3 : Sequential Search

Misalkan terdapat array S berikut :


45 6 17 3 21
A[1] A[2] A[3] A[4] A[5]

Input Size : 5 (ukuran array)


Basic Operation : Perbandingan antara X dengan isi array
T(n) : berapa kali perbandingan dilakukan
T(n) tergantung pada X
Jika X (angka yang dicari) = 45, maka T(n)=1 (Best Case)
Jika X= 21 atau tidak ketemu maka T(n)=n (Worst Case)

23
Contoh 3 : Sequential Search

Jumlah operasi perbandingan elemen tabel:

1. Best Case: ini terjadi bila A[1] = x. (ketemu di awal)


Tmin(n) = 1

2. Worst Case: bila A[n] = x atau x tidak ditemukan.

Tmax(n) = n

3. Average Case: Jika x ditemukan pada posisi ke-j, maka operasi


perbandingan (A[k] = x)akan dieksekusi sebanyak j kali.
1
n(1  n)
(1  2  3  ...  n) 2 (n  1)
Tavg(n) =  
n n 2
24
Contoh 3 : Sequential Search
For some algorithms, efficiency depends on form of input:
• Worst case: Cworst(n) – maximum over inputs of size n
• Best case: Cbest(n) – minimum over inputs of size n
• Average case: Cavg(n) – “average” over inputs of size n
– Number of times the basic operation will be executed on
typical input
– NOT the average of worst and best case
– Expected number of basic operations considered as a
random variable under some assumption about the
probability distribution of all possible inputs. So, avg =
expected under uniform distribution.
Contoh 3 : Sequential Search

• Worst case n key comparisons

• Best case 1 comparisons

• Average case (n+1)/2, assuming K is in A


Latihan

Tentukan Input Size, Basic Operation, dan


T(n) pada algoritma berikut :
1.Faktorial
2.Perkalian Matriks nxn

IF-UTAMA 27

You might also like