Analisis Algoritma Non Rekursif dan Rekursif.ppt

36
ANALISIS ALGORITMA REKURSIF DAN NONREKURSIF 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

description

Analisis

Transcript of Analisis Algoritma Non Rekursif dan Rekursif.ppt

Page 1: Analisis Algoritma Non Rekursif dan Rekursif.ppt

ANALISIS ALGORITMA REKURSIF DAN NONREKURSIF

KELOMPOK 2AI 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

Page 2: Analisis Algoritma Non Rekursif dan Rekursif.ppt

PENDAHULUAN

Bagaimana menganalisis algoritma Rekursif ?

Bagaimana menganalisis algoritma Non-Rekursif ?

Bagaimana cara mencari kompleksitas waktu pada algoritma Rekursif dan Non- Rekursif ?

Bagaimana cara menentukan notasi asimptotik dari algoritma Rekursif dan Non- Rekursif ?

Page 3: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Manipulasi Penjumlahan Penting

)(2

1

2

)1(...21

bawahdan ataslimit integer : ;11

)(

22

10

111

11

nnnn

nii

ullu

baba

acca

n

i

n

i

u

li

u

ii

u

ii

u

iii

u

ii

u

ii

Page 4: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Manipulasi Penjumlahan Penting

n

i

n

n

ii

nn

n

i

i

kkkkn

i

k

n

i

nni

n

aa

aaaaa

nk

ni

nnnn

ni

1

12

1

1

1

12

0

1

1

3222

1

2

lglg

...5772.0;ln...1

)1(1

1...1

1

1...21

3

1

6

)12)(1(...21

Page 5: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Algoritma Rekursif

Page 6: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Bentuk Rekursif

Suatu subrutin/fungsi yang memanggil dirinya sendiri.

Pemanggilan fungsi yang berulang terdapat dalam bodi fungsi

Dengan rekursif, program akan lebih mudah dilihat

Page 7: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Tujuan Bentuk Rekursif

Menyederhanakan penulisan program Menggantikan bentuk iterasi

Page 8: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Syarat Bentuk Rekursif

Ada kondisi terminal (basis) Ada subroutine call yang melibatkan

parameter yang nilainya menuju kondisi terminal (recurrence)

Page 9: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Efisiensi Waktu Algoritma Recursive

Langkah-langkah dalam analisis matematis dari algoritma rekursif:1. Tentukan parameter n yang menunjukkan

ukuran input2. Tentukan operasi dasar algoritma (loop

terdalam)3. Tentukan apakah untuk ukuran input yang

sama banyaknya eksekusi basic operation sama atau berbeda.

4. Tentukan relasi rekurens, dengan kondisi awal yang tepat untuk berapa kali algoritma akan dijalankan

5. Menyelesaikan solusi relasi rekurens yang didapat di nomor 4 (t(n))

6. Tentukan g(n) dimana t(n) termasuk salah satu O(g(n)),Ω(g(n)), atau Ɵ(g(n))

Page 10: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Contoh

Menghitung faktorial Menar hanoi

Page 11: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Menghitung Faktorial

Function Faktorial (input n : integer) → integermenghasilkan nilai n!, n tidak negatif

Algoritma :

If n=0 thenReturn 1

ElseReturn ( n*faktorial (n-1) )

Endif

Page 12: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Analisis 1

Ukuran input = 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)

Page 13: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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)

Page 14: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Visualisasi

Page 15: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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.

Page 16: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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

Page 17: Analisis Algoritma Non Rekursif dan Rekursif.ppt
Page 18: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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 264−1 detik = 10.446.744.073.709.551.615 detik= kira-kira 600 milyar tahun

Page 19: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Visualisasi

Page 20: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Algoritma Non Rekursif

Page 21: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Efisiensi Waktu Algoritma Nonrekursif

Langkah-langkah dalam analisis matematis dari algoritma nonrekursif:1. Tentukan parameter n yang menunjukkan

ukuran input.2. Tentukan operasi dasar algoritma (loop

terdalam).3. Tentukan apakah untuk ukuran input yang

sama banyaknya eksekusi operasi dasar yang dilakukan sama atau berbeda.

4. Tentukan rumus sigma yang menunjukkan berapa kali operasi dasar dijalankan.

5. Selesaikan rumus sigma untuk menghitung banyaknya operasi dasar dijalankan.

6. Tentukan g(n) dimana t(n) termasuk salah satu O(g(n)),Ω(g(n)), atau Ɵ(g(n))

Page 22: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Contoh:

Perkalian Matriks Max Element

Page 23: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Contoh1. Perkalian Matriks

Algoritma PerkalianMatrik(A[0…n-1,0…n-1], B[0…n-1,0…n-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,0for k 0 to n – 1 do

C[i,j] C[i,j] + A[i,k] * B[k,j]return C

Page 24: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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

1

0

321

0

1

0

1

0

1

0

1

0

1)(n

i

n

i

n

j

n

i

n

j

n

k

nnnnM

Page 25: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Contoh1. Analisis (2)

Perkiraan waktu berjalannya algoritma pada mesin tertentu

Perkiraan yang lebih akurat (termasuk penambahan)

cm :waktu satu perkalian

ca :waktu satu tambahan

3)()( ncnMcnT mm

333 )()()()( nccncncnAcnMcnT amamam

Page 26: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Visualisasi

Page 27: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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 Amax A[0]for i 1 to n-1 doif A[i] > maxmax A[i]

return max

Page 28: Analisis Algoritma Non Rekursif dan Rekursif.ppt

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.

Page 29: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Contoh2. Analisis (2)

Page 30: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Visualisasi

Page 31: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Pertanyaan

Mengapa dalam T(n) ∈ O(n) memakai notasi O? Dan mengapa dalam manipulasi penjumlahan penting terdapat pernyataan ? (Meri Sriyati)

Buktikan bahwa ? (Eka Ayuningsih)

Apa maksud dari terminal dan body fungsi? (Tutde Suputrawan)

)2()( nOnT

Page 32: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Pembahasan

1. Pembuktian T(n)∈ O(n)Misalkan diberikan limit :

Sehingga 11limlim

)(

)(lim

nn

n

nng

nt

n

Jadi benar bahwa T(n)∈ O(n)

Page 33: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Pembuktian

Misalkan diberikan limit:

Jika hasil:0 maka OoG TA(n) < OoG TB(n) notasi : O

C maka OoG TA(n) = OoG TB(n) notasi : Ɵ

∞ maka OoG TA(n) > OoG TB(n) notasi : Ω

)(2

122 nn

)(

)(lim

~ nT

nT

B

A

n

Page 34: Analisis Algoritma Non Rekursif dan Rekursif.ppt

Sehingga

Jadi benar bahwa

2

1

2

1lim2

1lim

2

2

nn

n

n

)(2

1 22 nn

Page 35: Analisis Algoritma Non Rekursif dan Rekursif.ppt

2. Pembuktian

Jadi benar bahwa

)2()( nOnT

01

2.2log

1lim

2

lim

nnn

n

n

)2()( nOnT

Page 36: Analisis Algoritma Non Rekursif dan Rekursif.ppt

3. Terminal adalah kondisi awal dari suatu fungsi rekursif, dimana kondisi terminal adalah tempat perhentian fungsi rekursif, sedangkan body fungsi mengandung fungsi rekursif . Pemanggilan fungsi yang berulang terdapat dalam bodi fungsi.

Contoh dalam pseudocode faktorial, yang menjadi terminal adalah if (n=0) then return 1, yang menjadi bodi fungsi adalah return (n*factorial(n-1))