Anda di halaman 1dari 18

Ernawati, ST, MCs

 Algoritma : Urutan langkah-langkah dalam


menyelesaikan permasalahan
 Algoritma dapat dianalisis efisiensi dan

kompleksitasnya
 Penilaian algoritma didasarkan pada :
 Waktu eksekusi (paling utama)
 Penggunaan memori / sumber daya
 Kesederhanaan dan kejelasan algoritma.
 Analisa algoritma tidak mudah dilakukan
secara pasti, maka hanya diambil :
 Kondisi rata – rata (average case).
 Kondisi terburuk (worst case)
 Waktu eksekusi dipengaruhi oleh :
 Jenis data input
 Jumlah data input
 Pemilihan instruksi bahasa pemrograman
 Langkah – langkah analisis algoritma
• Menentukan jenis / sifat data input.
• Mengidentifikasi abstract operation dari data input
• Menganalisis secara matematis untuk menentukan
average case atau worst case nya.
 Unit untuk menghitung running time
pendekatan yang digunakan adalah dengan
cara menghitung banyaknya basic operation,
yaitu operasi dasar dari suatu algoritma
terjadi selama running time
 Formula untuk mengestimasi running time
T(n) suatu program

T(n) ≈ cop C (n)

T(n) = running time


cop = waktu eksekusi sebuah basic
operation
C (n) = jumlah basic operation
n = input size
 Di dalam sebuah algoritma terdapat bermacam jenis
operasi:
◦ Operasi baca/tulis 1
◦ Operasi aritmetika (+, -, *, /) 1
◦ Operasi pengisian nilai (assignment) 1
◦ Operasi pengakasesan elemen larik )(indexing) 1
◦ Method returns 1
◦ dll
 Find the exact number of basic operations
in the following program fragment:
double x, y;
x = 2.5 ; y = 3.0; 2
for(int i = 0; i <= n; i++) 1 n+2, n+1
{
a[i] = x * y; 2*(n+1)
x = 2.5 * x; 2*(n+1)
y = y + a[i]; 3*(n+1)
}
The total number of basic operations is = 2+1+(n+2)+
(n+1)+(2n+2)+(2n+2)+(3n+3)
T(n)=13+9n= 9n+13
O(n)= n
Algorithm arrayMax(A, n)
currentMax  A[0] 2
for (i =1; i<n; i++) 2n
(i=1 once, i<n n times, i++ (n-1)
times)
if A[i]  currentMax then 2(n  1)
currentMax  A[i] 2(n  1)
return currentMax 1
Total 6n 
1. For Loop (perulangan)
Waktu eksekusi pada for loop, maksimum
sebanyak waktu eksekusi statement – statement
yang ada di dalam loop dikalikan banyaknya
iterasi.
Contoh :
For (a=0; a<n; a++)
{
m=p+q;
t =y*z;
}
waktu eksekusi = 2 x n kali
jadi T(n) = O(n)
2. Nested for loop (perulangan bersarang)
◦ Dianalisis dari loop terdalam kemudian keluar.
◦ Waktu eksekusi total sebuah statement adalah
waktu eksekusi statement tsb dikalikan hasil kali
dari banyaknya iterasi semua loop yang ada
diluarnya.
Contoh :
For (i=0; i<n; i++)
For(j=0; j<m; j++)
A[i,j] = 0;
A[i,j] akan dieksekusi sebanyak ( m x n ) kali
Jadi T(n) = O(n2)
3. Consecutive Statement (statement yang
berurutan)
◦ Untuk statement yang berurutan, waktu
eksekusinya adalah jumlah dari masing – masing
statement.
◦ Berdasarkan pengertian Big – Oh, hal tersebut akan
diambil nilai yang terbesar.
Contoh :
Contoh :
For ( k=0; k<10; k++ ) T1(n) = O(n)
x[k] = 0;
For ( i=0; i<n; i++ ) T2(n) = O(n2)
for( j=0; j<m; j++ )
a[i,j] = 0;

 Jadi T(n) = T1(n) + T2(n) = O(n2)


4. if else
 Total waktu eksekusi adalah waktu test

ditambah waktu yang terbesar dari eksekusi


statement 1 atau statement 2
If ( a < 10 ) waktu tes = 1
{
m=q+r; waktu tes =
2
k=y*z;
}
else
{
for ( t = 0; t < 10; t ++ ) waktu
tes= 10 x =x+t;
}
Jadi total waktu eksekusi adalah 1 + 10 = 11
Jadi T(n) = O(n)
Contoh 1. Menghitung rerata

a1 a 2 a 3 … an
Larik bilangan bulat

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
jumlah : real

Algoritma
jumlah0
k1
while k  n do
jumlahjumlah + ak
kk+1
endwhile
{ k > n }
r  jumlah/n { nilai rata-rata }
(i) Operasi pengisian nilai (jumlah0, k1,
jumlahjumlah+ak, kk+1, dan r  jumlah/n)
Jumlah seluruh operasi pengisian nilai adalah
t1 = 1 + 1 + n + n + 1 = 3 + 2n

(ii) Operasi penjumlahan (jumlah+ak, dan k+1)


Jumlah seluruh operasi penjumlahan adalah
t2 = n + n = 2n

(iii) Operasi pembagian (jumlah/n)


Jumlah seluruh operasi pembagian adalah
t3 = 1

Total kebutuhan waktu algoritma HitungRerata:

t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik T(n)=O(n)=n


 1. sum = 0;
for( i = 0; i < n; i++)
◦ sum++;

 2. sum = 0;
for( i = 0; i < n; i++)
 for( j = 0; j < n; j++)
sum++;

Anda mungkin juga menyukai