Anda di halaman 1dari 24

ANALISIS ALGORITMA

NON REKURSIF DAN


REKURSIF
KELOMPOK 2A
I GUSTI BAGUS HADI WIDHINUGRAHA
(1208605010)
NI PUTU SINTYA DEWI
(1208605017)
LUH GEDE PUTRI SUARDANI
(1208605018)
I PUTU INDRA MAHENDRA PRIYADI
(1208605020)

DESAIN ANALISIS DAN ALGORITMA

Algoritma Non Rekursif

Efisiensi Waktu Algoritma


Nonrecursive
1.

2.
3.

4.

5.

Tentukan parameter n yang menunjukkan ukuran input


Tentukan operasi dasar algoritma (loop terdalam)
Periksa apakah operasi dasar dijalankan hanya
bergantung pada ukuran input. Jika tergantung bukan
hanya pada ukuran input saja, kasus terburuk, ratarata, dan jika perlu efisiensi kasus terbaik harus
diselidiki secara terpisah.
Tentukan rumus sigma yang menunjukkan berapa kali
operasi dasar dijalankan C(n)
Selesaikan rumus sigma untuk menghitung banyaknya
operasi dasar dijalankan

Contoh:

Perkalian Matriks
Max Element

Contoh1. Perkalian Matriks


Algoritma PerkalianMatrik(A[0n-1,0n-1], B[0n-1,0n-1])
//mengalikan 2 matriks persegi berordo n
//input: 2 matriks A dan B
//output: Matriks C = AB
for i 0 to n - 1 do
for j 0 to n 1 do
C[i,j] 0,0
for k 0 to n 1 do
C[i,j] C[i,j] + A[i,k] * B[k,j]
return C

Contoh1. Analisis(1)

Ukuran input = matriks ordo n


Loop terdalam = perkalian dan penambahan
calon operasi dasar

Perkalian dan pertambahan dilakukan tepat sekali dalam


setiap perulangan, sehingga kita tidak harus memilih
antara dua operasi

Jumlah dari total perkalian


n 1 n 1 n 1

n 1 n 1

n 1

i 0 j 0 k 0

i 0 j 0

i 0

M (n) 1 n n 2 n 3

Contoh1. Analisis (2)

Perkiraan waktu berjalannya algoritma pada


mesin tertentu

T ( n ) cm M ( n ) cm n 3

Perkiraan yang lebih akurat (termasuk


penambahan)
3
3

T (n) cm M (n) ca A(n) cm n ca n (cm ca )n 3


cm :waktu satu perkalian
ca :waktu satu tambahan

Contoh2. Algoritma
MaxElement

Berikut adalah algoritma untuk mencari elemen


terbesar dari sekumpulan n bilangan:

ALGORITHM MaxElement (A[0..n-1])


//Input: Array A[0..n-1] dari bilangan real
//Output: Nilai dari elemen terbesar pada array A
max A[0]
for i 1 to n-1 do
if A[i] > max
max A[i]
return max

Contoh2. Analisis (1)

Ukuran input dari algoritma ini adalah jumlah


elemen pada array, yaitu n.
Operasi dasar yang paling banyak dieksekusi ada
dalam loop for.
Ada 2 operasi dalam loop: perbandingan A[i]
>max dan assignment max A[i].
Karena operasi perbandingan dieksekusi pada
tiap iterasi (dan operasi assignment tidak), maka
perbandingan dijadikan sebagai operasi dasar.

Contoh2. Analisis (2)

Algoritma Rekursif

Bentuk Rekursif

Suatu subrutin/fungsi yang memanggil dirinya


sendiri.
Bentuk dimana pemanggilan fungsi terdapat
dalam body fungsi
Dengan rekursi, program akan lebih mudah
dilihat

Tujuan Bentuk Rekursif

Menyederhanakan penulisan program


Menggantikan bentuk iterasi

Syarat Bentuk Rekursif

Ada kondisi terminal (basis)


Ada subroutine call yang melibatkan
parameter yang nilainya menuju kondisi
terminal (recurrence)

Efisiensi Waktu Algoritma Recursive

Langkah-langkah dalam analisis matematis dari


algoritma nonrekursif:
1.
2.
3.

4.

5.

Tentukan parameter n yang menunjukkan ukuran input


Tentukan operasi dasar algoritma (loop terdalam)
Periksa apakah operasi dasar dijalankan hanya
bergantung pada ukuran input. Jika tergantung bukan
hanya pada ukuran input saja, kasus terburuk, ratarata, dan jika perlu efisiensi kasus terbaik harus
diselidiki secara terpisah.
Menentukan relasi rekurens, dengan kondisi awal yang
tepat untuk berapa kali algoritma akan dijalankan
Memecahkan atau memastikan urutan solusi rekurens

Contoh

Menghitung faktorial
Menar hanoi

Menghitung Faktorial
Function Faktorial (input n : integer) integer
{menghasilkan nilai n!, n tidak negatif}
Algoritma :
If n=0 then
Return 1
Else
Return ( n*faktorial (n-1) )
Endif

Analisis 1

Ukuran input n = n
Kompleksitas waktu:
Untuk kasus basis, tidak ada operasi perkalian
T(0) = 0 (kondisi awal)
Untuk kasus rekurens, kompleksitas waktu
diukur dari jumlah perkalian (1) ditambah
kompleksitas waktu untuk faktorial (n-1)

Analisis 2
Kompleksitas waktu
T(n) =1+T(n-1)
T(n) =1+1+T(n-2)=2+T(n-2)
T(n) =2+1+T(n-3)=3+T(n-3)
=
=
= n+T(0)
=n+0
Jadi T(n) = n
T(n) O(n)

Menara hanoi

Bagaimana memindahkan seluruh piringan


tersebut ke sebuah tiang yang lain (dari A ke B);
setiap kali hanya satu piringan yang boleh
dipindahkan, tetapi tidak boleh ada piringan besar
di atas piringan kecil. Ada tiang perantara C. Kata
pendeta, jika pemindahan berhasil dilakukan,
maka DUNIA KIAMAT !!!

Algoritma
Procedure Hanoi (input n, A, B, C:integer)
Algoritma
If n=1 then
Write (Pindahkan piringan dari,A,ke,B)
Else

Hanoi(n-1,A,C,B)
Writeln(Pindahkan piringan dari,A,ke,B)
Hanoi(n-1,C,B,A)
Endif
Relasi Rekurens

T(n)=2n+1 adalah jumlah seluruh perpindahan


piringan dari satu tiang ke tiang lainnya.
Bila terdapat 64 tumpukan piringan da
perpindahan 1 piringan butuh waktu 1 detik,
maka waktu yang dibutuhkan : detik 2641
detik
= 10.446.744.073.709.551.615 detik
= kira-kira 600 milyar tahun (???!!!)

Grazias Kiitos
Danke Gratias

Terima
Merci
Thank You
Kasih

Anda mungkin juga menyukai