You are on page 1of 8

Efisiensi algoritma

à kecepatan(waktu) dan space memori


• Faktor-faktor yg mempengaruhinya adalah :
- Banyak langkah
- Tipe data kecepatan
- Operator-operator
- Alokasi memori à
space memori, berkaitan
dgn * struktur data dinais
* procedure/function
call
* recursif
• Tipe Data
- integer
- real
Dua nilai yg sama dgn operator yg sama tapi dgn
variabel yg berbeda, maka terdapat perbedaan
kecepatan/proses penyelesaiannya.
Contoh :
à 250 + 17 = 267 (lebih cepat dari)
à 250.0 + 17.0 = 0.25*103 + 0.17*102
= 0.25*103 + 0.017*103
= (0.25+ 0.17)*103
= 0.267*103
= 267.0
• Operator
Urutan penggunaan operator/penempatan
operator bisa mempengaruhi efisiensi.
Contoh perkalian (*) lebih lama daripada penjumlahan
(+)

• Tetapi dalam perkembangan teknologi, perbedaan


penggunaan operator maupun tipe data dasar tidak
terlalu signifikan.
• Yang perlu diperhatikan adalah banyaknya operasi
aritmatika dan logika yang dilakukan.

1
Operator aritmatika : +,-,*,/,^,div,mod
Operator logika : AND,OR,NOT masing-masing 1.
Operator adalah jika hasil perhitungannya termasuk
dalam himpunan itu sendiri.
2 < 5 à bukan operator tapi konstanta logika
karena tidak menghasilkan nilai yang sejenis
Operator : H x H à H
x = 2<5
x = True Tidak ada operation ( 0 operation)
y=5
y = 5+0 à 1 operation
y = 2+3*5 à 2 operation
y = 3*5+2 à 2 operation

• Banyak langkah dalam suatu algoritma dinyatakan


dengan banyaknya operasi aritmatika dan logika
yang dilakukan. Dengan demikian hal ini
bergantung pada statement dan jenis algoritma :
- sequensial
- branching
- looping
- subroutine call (bisa memanggil prosedur dan
bisa memanggil fungsi)
Banyak langkah (waktu tempuh) + memori
= kompleksitas waktu

- Sequensial
Statement s1 dgn banyak langkah n(s1)
Statement s2 dgn banyak langkah n(s2)
banyak langkah = n(s1)+n(s2)
Assigment dgn konstanta mempunyai waktu
tempuh 0
x=0
y=1 1 operation
n = x+y
Built in subroutine call mempunyai waktu
tempuh 1

2
jika non integer
Sin(x) à 1 op
jika integer
Sin(x*pi/1000) à 3 op

- Branching (percabangan)
If (kondisi) Then statement s1
Else statement s2

contoh
Jika n(kondisi) = waktu tempuh kondisi à 2 op
n(s1) = waktu tempuh statement s1 à 5
op
n(s2) = waktu tempuh satement s2 à3
op
Maka
waktu tempuh = n(kondisi) + max(n(s1),n(s2))
=2+5
=7
- Loop
For Loop
For var ß awal to akhir step diff.
Statement S(var)
Statement S(var) tidak tergantung var
tergantung var

Jika statement dalam inner loop tidak


bergantung pada var,
maka statement tersebut diulang sebanyak
 akhir − awal 
  kali
 step 
t=
  akhir − awal  + 1
  step 
 

Misalnya waktu tempuh untuk statement


tersebut adalah Ts, maka waktu tempuh
dengan loop tsb adalah t*Ts.
Waktu tempuh untuk control loop adalah t*1.
Jadi waktu tempuh untuk loop tersebut
adalah t * Ts + t = t (Ts+1)

3
2 op max(2,1)
Ts = 2

Contoh :

1. for i ß 2 to 30 step 5
x ß x+1
y ß x+y
Berapa waktu tempuhnya ?
 30 − 2 
t=  =6
 5 
T = t (Ts+1)
= 6 (2+1)
= 18
2. n=20
for i ß 2 to 2*n step 5
x ß x+1
y ß x+y
Berapa waktu tempuhnya ?
Looping à
 40 − 2 
t=  =8
 5 
Tfor = t (Ts+1)
= 8 (2+1)
= 24
Waktu tempuh perkalian 2*n à T2*n = 1
Jadi waktu tempuhnya = T = 24 + 1
= 25
3. for iß1 to 10
x ß x+1 à 1 op
if x>=1 then
x ß x-2
y ß x^2
else

4
* *
000000000000000000000000000300040000000000000000000000000000000000000000000000000

y ß x+y à 1 op
Berapa waktu tempuhnya ?
10 − 1
t=  + 1 = 10
 1 
Waktu tempuh dlm percabangan = max(2,1)
Ts = 1 + max(2,1) = 3
T = t (Ts+1) = 10 (3+1) = 40

Jika statement tergantung nilai var


For var ß awal to akhir step diff
S(var)

 akhir − awal 
T =  + Ts ( awal ) + Ts ( awal + step) + ...
 step 
 akhir − awal 
+ Ts ( awal +   step)
 step 

Contoh :

1. for iß1 to 10 à
x ß x+1 à1
for jß1 to i
y ß x+y
x ß x+1
endfor
endfor
Berapa waktu tempuhnya ?

 i − 1
ti =   +1 = i
 1 
Tfor(i) = ti (Ts+1) = i (2+1) = 3i

Hidden 1
T(i) = 1+3i+1 = 2+3i
10

∑ T (i)
T= i =1

5
* *

10

∑ (2 + 3i)
= i =1
10 10

∑2 3∑ i
= i =1 + i =1
= 20 + 3 * ½ * 10 * (10+1)
= 185

2. for iß1 to 10 à t = 10
x ß x+1 à1
for jßi to 10
y ß x+y
x ß x+1
endfor
endfor
Berapa waktu tempuhnya ?

10 − i 
ti =   + 1 = 10 − i + 1
 1 
Tfor(i) = ti (Ts+1) = (10-i+1) * (2+1)
= (10-i+1)*3 = (11-i)*3

Hidden 1
T(i) =1+(11-i)*3+1
= 35-3i
10

∑ T (i)
T= i =1
10

∑ (35 − 3i)
= i =1
10 10

∑ 35 − 3∑ i
= i =1 i =1

= 350 + 3 * ½ * 10 * (10+1)
= 185

6
3. for iß1 to 10
x ß x+1
for jß1 to i
y ß x+y
endfor
endfor
Berapa waktu tempuhnya ? (T=130)

4. for iß1 to n
x ß x+1
for jßi to n
y ß x+y
endfor
endfor
Berapa waktu tempuhnya ? (T(n)=n2+3n)

5. for iß1 to n2
x ß x+1
for jßi+1 to 2n
y ß x+y
x ß x+1
endfor
endfor
Berapa waktu tempuhnya ?
(T(n)=-2n4+8n3+n2+1)

6. for iß1 to 2n
x ß x+1
for jß1 to i+1
y ß x+y
x ß x+1
endfor

7
endfor
Berapa waktu tempuhnya ? (T(n)=6n2+15n+1)

You might also like