Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Dr. ErnastutiDr. D. L. Crispina Pardede
Dr. Ricky Agus
ALGORITMA
3
2
1
4
5
6
LINGKUP MATERI ü Pengertian Algoritma
ü Kriteria Algoritma yang baik
ü Analisis Suatu Algoritma
ü Pengertian kompleksitas waktu: worst case, average case, best case
Pengertian Teknik IteratifPenerapan Teknik Iteratif:ü Perhitungan Nilai Faktorialü Pembentukan Barisan Fibonacci
Pengertian Teknik Rekursif Penerapan Teknik Rekursif pada: ü Perhitungan Nilai Faktorial ü Pembentukan Barisan Fibonacci ü Masalah Menara Hanoi
ü Contoh-contoh Soal Menghitung Kompleksitas Waktu Algoritma
ü Perbedaan Teknik Iteratif dan Teknik Rekursif
LANGKAH-LANGKAHPENYELESAIN MASALAHDengan bantuan KOMPUTERSecara umum, langkah-langkah yang perlu dilalui dalam penyelesaian suatu masalah dengan bantuan komputer adalah sebagai berikut :
Problema → Model Yang Tepat → Algoritma → Program Komputer → Solusi
MODEL yang TEPAT
PROGRAM
ALGORITMA
EKSEKUSI
HASIL/SOLUSI
PROBLEM
DATA
G raf G(V,E)Adalah struktur diskrit yang terdiri atas himpunan simpul (V) dan himpunan ruas (E), di mana setiap ruas di dalam E menghubungkan simpul-simpul di V.
G rafSecara umum graf dapat didefinisikan sebagai kumpulan simpul yang dihubungkan dengan ruas
DATA
PROBLEM
MODEL GRAF
PROGRAM
ALGORITMA
EKSEKUSI
HASIL/ SOLUSI
MATRIKS
ARRAY
MODEL GRAF
ALGORITMAPertama kali diperkenalkan oleh seorang ahli matematika
ABU JA’FAR MUHAMMAD IBNU MUSA AL KHAWARIZMI.
ALGORITMAPertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah:• Urutan dari barisan instruksi
untuk menyelesaikan suatu masalah.• Sebuah metode atau sebuah proses
yang diikuti untuk memecahkan sebuah masalah.
ALGORITMAPertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah:• Urutan dari barisan instruksi
untuk menyelesaikan suatu masalah.• Sebuah metode atau sebuah proses
yang diikuti untuk memecahkan sebuah masalah.
Sebuah algoritma menerima input dari sebuah masalah dan mengubahnya menjadi output.
Sebuah masalah dapat memiliki banyak algoritma.
ALGORITMA
Algoritma adalah suatu metode khusus untuk menyelesaikan suatu masalah yang nyata (Webster Dictionary).
Pertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah:• Urutan dari barisan instruksi
untuk menyelesaikan suatu masalah.• Sebuah metode atau sebuah proses
yang diikuti untuk memecahkan sebuah masalah.
Sebuah algoritma menerima input dari sebuah masalah dan mengubahnya menjadi output.
Sebuah masalah dapat memiliki banyak algoritma.
ALGORITMA
Algoritma adalah suatu metode khusus untuk menyelesaikan suatu masalah yang nyata (Webster Dictionary).
Pertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah:• Urutan dari barisan instruksi
untuk menyelesaikan suatu masalah.• Sebuah metode atau sebuah proses
yang diikuti untuk memecahkan sebuah masalah.
Sebuah algoritma menerima input dari sebuah masalah dan mengubahnya menjadi output.
Sebuah masalah dapat memiliki banyak algoritma.
Algoritma dapat dinyatakan dalam bentuk diagram alir, bahasa semu.
ALGORITMA
Sebuah Algoritma Memiliki Sifat• Harus “benar” (correct).• Tersusun dari serangkaian langkah
konkrit (concrete steps)• Tidak mengandung ambiguitas (no
ambiguity) tentang langkah mana yang harus dilakukan berikutnya.
• Harus mengandung sejumlah hingga (finite) langkah.
• Harus berakhir/berhenti (terminate).
ALGORITMA
Sebuah Algoritma Memiliki Sifat• Harus “benar” (correct).• Tersusun dari serangkaian langkah
konkrit (concrete steps)• Tidak mengandung ambiguitas (no
ambiguity) tentang langkah mana yang harus dilakukan berikutnya.
• Harus mengandung sejumlah hingga (finite) langkah.
• Harus berakhir/berhenti (terminate).
Kriteria untuk Menilai Sebuah Algoritma• Efektif dan efisien• Jumlah langkah berhingga• Berakhir• Ada output• Terstruktur
PENYELESAIAN MASALAH DENGAN BANTUAN KOMPUTER
Sebuah program komputer adalah sebuah instant, atau penyajian konkrit, dari sebuah algoritma dalam beberapa bahasa pemrograman.
MODEL yang TEPAT
PROGRAM
ALGORITMA
EKSEKUSI
HASIL/SOLUSI
PROBLEM
DATA
Bagaimana memilih satu pendekatan (algoritma) dari sekian banyak algoritma yang ada?
Dua tujuan dari perancangan program (yang terkadang berlawanan):1. Merancang algoritma yang mudah dimengerti, dikodekan, di-
debug. 2. Merancang algoritma yang menggunakan sumber daya
komputer secara efisien.
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
Merencanakan algoritma merupakan suatu studi tentang teknik variasi design (model)
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
Menyatakannya dengan singkat dalam bahasa pemrograman yang terstruktur, misalnya Pascal, C
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
Validitas algoritma memenuhi kebutuhan yang diinginkan, dan perhitungannya/solusinya selalu benar untuk semua kemungkinan input yang legal
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
Perbandingan waktu dan banyaknya storage/memori yang digunakan (efisiensi).
STUDI TENTANG ALGORITMA
Hal-hal yang dipelajari:1. Bagaimana Merencanakannya2. Bagaimana Menyatakannya3. Bagaimana Validitasnya4. Bagaimana Menganalisisnya5. Bagaimana Menguji suatu program
Pengujian program dilakukan dalam dua fase: debugging dan profiling.
FAKTOR EFISIENSI
1. Waktu tempuh (running time)• banyaknya langkah• besar dan jenis input data• jenis operasi• jenis komputer dan kompilator
2. Jumlah memori yang dipakai
PENGUKURAN EFISIENSI
1. Perbandingan empiris (run programs)2. Analisis algoritma asimtotik
Faktor yg mempengaruhi running time:
• Bagi sebagian besar algoritma, running time tergantung pada “ukuran” input.
• Running time dinyatakan sebagai T(n) untuk beberapa fungsi T untuk kuran input n.
RUNNING TIME
Sebagian besar algoritma mengubah input menjadi output
Running time dari sebuah algoritma berubah sesuai ukuran input
Waktu rata-rata biasanya sulit untuk ditentukan
Worst case running time Lebih mudah dianalisis Penting bagi aplikasi seperti
games, finance dan robotics
0
20
40
60
80
100
120
Running
Time
1000 2000 3000Input Size
4000
best caseaverage caseworst case
Menulis program untuk mengimplementasi algoritma
STUDI EKSPERIMENTAL
Jalankan program dengan berbagai ukuran dan komposisi input Gunakan sebuah metodeuntuk memperoleh running time yang tepatPlot hasilnya 0
1000
2000
3000
4000
5000
6000
7000
8000
9000
0 50 100Input Size
Time (ms)
Menulis program untuk mengimplementasi algoritma
STUDI EKSPERIMENTAL
Jalankan program dengan berbagai ukuran dan komposisi input Gunakan sebuah metodeuntuk memperoleh running time yang tepatPlot hasilnya
Implementasi algoritma bukanlah hal yang mudahHasil tidak menunjukkan running time pada input lain yang tidak digunakan dalam eksperimen.Dalam membandingkan dua algoritma, harus menggunakan lingkungan perangkat keras dan perangkat lunak yang sama
KETERBATASAN EKSPERIMEN
ANALISIS TEORITIS
Menggunakan deskripsi algoritma, bukan eksperimen
Menyatakan running time sebagai fungsi dari ukuran input, n.
Memperhatikan semua input yang mungkin
Memungkinkan pengukuran kecepatan algoritma bebas dari lingkungan hardware/software
KOMPLEKSITAS ALGORITMA
KOMPLEKSITAS adalah:Sebuah fungsi f(n) yang diberikan untuk waktu tempuh dan/atau kebutuhan storage dengan ukuran n input data.
Kompleksitas dapat berupa kompleksitas waktu dan memori.
NOTASI ASIMPTOTIK
O : BIG OH
f(n) = (g(n)) dua konstanta positif c dan n0 sedemikian hingga f(n) cg(n) n n0.
Upper Boundf(n)
O(g(n))
NOTASI BIG OH
CONTOHDiketahui f(n) = 5n2 + 2n + 1
akan dibandingkan dengan g(n) = n2 untuk konstanta c = 8 berlaku f(n) 8n2 , untuk n 1, dan n0 = 1.
Jadi f(n) = 5n2 + 2n + 1 adalah O(n2) (dibaca big oh n kuadrat)
NOTASI ASIMPTOTIK
W : OMEGA
f(n) = W(g(n)) konstanta positif c dan n0 sedemikian hingga f(n) cg(n) n n0
f(n)c(g(n))
Lower Bound
NOTASI BIG OMEGA
CONTOHDiketahui f(n) = 5n2 + 2n + 1
akan dibandingkan dengan g(n) = n2 .untuk c = 5, n0 = 0berlaku 5n2 f(n) , n 0 .
Jadi f(n) = 5n2 + 2n + 1 adalah W(n2)
NOTASI ASIMPTOTIK
: THETA
f(n) = (g(n)) konstanta positif c1, c2 dan n0 sedemikian hingga c1g(n) f(n) c2g(n), n n0
Tight Bound
NOTASI THETA
CONTOHDiketahui f(n) = 5n2 + 2n + 1
akan dibandingkan dengan g(n) = n2 untuk C1 = 5, C2 = 8, n0 = 1. berlaku 5n2 f(n) 8n2 , n 0.
Jadi f(n) = 5n2 + 2n + 1 adalah (n2)
KOMPLEKSITAS ALGORITMA
WORST CASE BIG OH f(n) = (g(n)) dua konstanta positif c dan n0 sedemikian
hingga f(n) cg(n) nn0. BEST CASE BIG OMEGA
f(n) = W(g(n)) konstanta positif c dan n0 sedemikian hinggaf(n) cg(n) n>n0
AVERAGE CASE BIG THETAf(n) = (g(n)) konstanta positif c1, c2 dan n0 sedemikian
hingga c1g(n)f(n) c2g(n), n>n0
KOMPLEKSITAS ALGORITMA
f(n) = 3n5 + 4n4 + 10n2 + 56 = (n5 )
f(n) = 9n7 + 5n6 + 36 = (n7 )
f(n) = 8n9 = (n9 )
f(n) = n6 + 19 = (n6 )
f(n) = 25 = (n0 ) = (1)
TEOREMAJika f(n) = am nm + am-1 nm-1 + . . .+ a1 n + a0 adalah polinomial tingkat m, maka f(n) = (nm)
CONTOH
CONTOH ANALISIS ALGORITMA
(i) c a + b
(ii) for i 1 to n doc a + b
repeat (iii) for i 1 to n do
for j 1 to n doc a + b
repeatrepeat
BAGAIMANA ANALISISNYA?
CONTOH ANALISIS ALGORITMA
(i) c a + b
(ii) for i 1 to n doc a + b
repeat (iii) for i 1 to n do
for j 1 to n doc a + b
repeatrepeat
Banyaknya Operasi ‘+’ f(n) Big Oh
(i) 1 kali f(n) = 1 (1)
(ii) n kali f(n) = n (n)
(iii) n2 kali f(n) = n2 (n2)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
(i) c a + b
(ii) for i 1 to n doc a + b
repeat (iii) for i 1 to n do
for j 1 to n doc a + b
repeatrepeat
Banyaknya Operasi ‘+’ f(n) Big Oh
(i) 1 kali f(n) = 1 (1)
(ii) n kali f(n) = n (n)
(iii) n2 kali f(n) = n2 (n2)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
(i) c a + b
(ii) for i 1 to n doc a + b
repeat (iii) for i 1 to n do
for j 1 to n doc a + b
repeatrepeat
Banyaknya Operasi ‘+’ f(n) Big Oh
(i) 1 kali f(n) = 1 (1)
(ii) n kali f(n) = n (n)
(iii) n2 kali f(n) = n2 (n2)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
(i) c a + b
(ii) for i 1 to n doc a + b
repeat (iii) for i 1 to n do
for j 1 to n doc a + b
repeatrepeat
Banyaknya Operasi ‘+’ f(n) Big Oh
(i) 1 kali f(n) = 1 (1)
(ii) n kali f(n) = n (n)
(iii) n2 kali f(n) = n2 (n2)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir I
Penjumlahan 2 matriks riil berorde (m x n).
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir i
Penjumlahan 2 matriks riil berorde (m x n).
Jumlah operasi ‘+’ Pada loop j = n
ANALISISNYA
n
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir i
Penjumlahan 2 matriks riil berorde (m x n).
Loop pada baris 3-4 dilakukan sebanyak m kali
ANALISISNYA
m
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir I
Penjumlahan 2 matriks riil berorde (m x n).
Jadi, jumlah operasi ‘+’ = mn
ANALISISNYA
n m
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir I
Penjumlahan 2 matriks riil berorde (m x n).
Asumsi: 1 elemen memerlukan 4 satuan memori/byte.
Jumlah elemen: 3
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir I
Penjumlahan 2 matriks riil berorde (m x n).
Asumsi: 1 elemen memerlukan 4 satuan memori/byte.
Jumlah elemen: 3
Jadi, Jumlah memori = 3 mn x 4
= 12 mn
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set A[i,j], B[i,j], C[i,j] real2. Untuk i 1 s/d m kerjakan3. untuk j 1 s/d n kerjakan4. C[i,j] A[i,j] + B[i,j]5. akhir j6. akhir I
Penjumlahan 2 matriks riil berorde (m x n).
Jumlah operasi ‘+’ = mnJumlah memori = 12 mn
TOTAL = 13 mn
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set k:= 1 ; loc := 02. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k n3. IF Item := Data(k) then set loc := k4. Set k := k + 15. IF loc := 0 then
WRITE Elemen tidak ada pada array dataELSE WRITE loc adalah lokasi dari elemen
6. EXIT
Menentukan lokasi suatu elemen pada array data secara linier
CONTOH ANALISIS ALGORITMA
1. Set k:= 1 ; loc := 02. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k n3. IF Item := Data(k) then set loc := k4. Set k := k + 15. IF loc := 0 then
WRITE Elemen tidak ada pada array dataELSE WRITE loc adalah lokasi dari elemen
6. EXIT
Menentukan lokasi suatu elemen pada array data secara linier
Bila elemen (item) yang dicari merupakan elemen terakhir dari array tersebut atau tidak terdapat dalam array, makaWORST CASE F(n) = (n)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set k:= 1 ; loc := 02. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k n3. IF Item := Data(k) then set loc := k4. Set k := k + 15. IF loc := 0 then
WRITE Elemen tidak ada pada array dataELSE WRITE loc adalah lokasi dari elemen
6. EXIT
Menentukan lokasi suatu elemen pada array data secara linier
Bila elemen (item) yang dicari merupakan elemen pertama dari array tersebut, makaBEST CASE F(n) = (1)
ANALISISNYA
CONTOH ANALISIS ALGORITMA
1. Set k:= 1 ; loc := 02. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k n3. IF Item := Data(k) then set loc := k4. Set k := k + 15. IF loc := 0 then
WRITE Elemen tidak ada pada array dataELSE WRITE loc adalah lokasi dari elemen
6. EXIT
Menentukan lokasi suatu elemen pada array data secara linier
Bila elemen (item) yang dicari berada di antara elemen pertama dan elemen terakhir dari array tersebut, makaAVERAGE CASE F(n) = (n)
ANALISISNYA
Materi Terapan Teori Graf M#61. Pengertian Algoritma2. Kriteria Algoritma yang baik3. Analisis Suatu Algoritma 4. Pengertian kompleksitas waktu: worst case, average case, best case5. Pengertian Teknik Iteratif Penerapan Teknik Iteratif pada: (a) Perhitungan Nilai Faktorial (b) Pembentukan Barisan Fibonacci6. Pengertian Teknik Rekursif Penerapan Teknik Rekursif pada: (a) Perhitungan Nilai Faktorial (b) Pembentukan Barisan Fibonacci (c) Masalah Menara Hanoi 7. Perbedaan Teknik Iteratif dan Teknik Rekursif
Teknik Iteratif & Teknik Rekursif
Penerapan Teknik Iteratif: (1) Perhitungan Nilai Faktorial (2) Pembentukan Barisan Fibonacci
Pengertian Teknik IteratifTeknik Iteratif merupakan suatu teknik pembuatan algoritma dengan pemanggilan procedure beberapa kali hingga suatu kondisi tertentu terpenuh
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
FLOWCHART Bilangan FAKTORIAL N!
Penerapan Teknik Iteratif (Bilangan FAKTORIAL)
i = i + 1
FAK=1,i=0
FAK = FAK * i
i=N ?
ALGORITMA FAKTORIAL Teknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Pseudocode
Set FAK, i, n : integer FAK = 1 for i = 1 to n
FAK = FAK * i next i
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
i= FAK=
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
i= FAK=1 1 * 1 = 1
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
i= FAK=1 1 * 1 = 1
2 1 * 2 = 2
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
i= FAK=1 1 * 1 = 1
2 1 * 2 = 2
3 2 * 3 = 6
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
i= FAK=1 1 * 1 = 1
2 1 * 2 = 2
3 2 * 3 = 6
4 6 * 4 = 24
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
Untuk n = 5, maka : gambaran jalannya proses algoritma
FAK=1, kemudian
i= FAK=1 1 * 1 = 1
2 1 * 2 = 2
3 2 * 3 = 6
4 6 * 4 = 24
5 24 * 5 = 120
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)
ALGORITMA FAKTORIALTeknik Iteratif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Set FAK, i, n :integer FAK=1 for i = 1 to n
FAK = FAK * i next i
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
FLOWCHART BIL. FIBONACCI
Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :
Penerapan Teknik Iteratif (Bilangan Fibonacci)
Misal n = 5, maka : gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
x=1, y=1, kemudian
Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :
Penerapan Teknik Iteratif (Bilangan Fibonacci)
i F x y
3 1 + 1 = 2 1 2
Misal n = 5, maka : gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
x=1, y=1, kemudian
Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :
Penerapan Teknik Iteratif (Bilangan Fibonacci)
i F x y
3 1 + 1 = 2 1 2
4 1 + 2 = 3 2 3
Misal n = 5, maka : gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
x=1, y=1, kemudian
Teknik Iteratif pada algoritma untuk menentukan suku ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut :
Penerapan Teknik Iteratif (Bilangan Fibonacci)
i F x y
3 1 + 1 = 2 1 2
4 1 + 2 = 3 2 3
5 2 + 3 = 5 3 5
Misal n = 5, maka : gambaran jalannya proses algoritma tersebut adalah sebagai berikut :
x=1, y=1, kemudian
Teknik Iteratif & Teknik Rekursif
Rekursif (Recurcion)
REKURSIF (RECURCION)
Penerapan Teknik Rekursif: (1) Perhitungan Nilai Faktorial (2) Pembentukan Barisan Fibonacci (3) Menara Hanoi
Pengertian Teknik RekursifTeknik Rekursif merupakan salah satu cara pembuatan algoritma dengan pemanggilan procedure atau function yang sama
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
ALGORITMA menghitung FAKTORIAL Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
Pseudocode
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
Untuk n = 5, maka : gambaran jalannya proses algoritma
ALGORITMA menghitung FAKTORIAL
Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
Misal n = 5, maka : Gambaran jalannya proses algoritma
FAK = 5 * FAK(4)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)ALGORITMA menghitung FAKTORIAL
Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Misal n = 5, maka : Gambaran jalannya proses algoritma
FAK = 5 * FAK(4)FAK = 5 * 4 * FAK(3)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)ALGORITMA menghitung FAKTORIAL
Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Misal n = 5, maka : Gambaran jalannya proses algoritma
FAK = 5 * FAK(4)FAK = 5 * 4 * FAK(3)FAK = 5 * 4 * 3 * FAK(2)
ALGORITMA mehgitung FAKTORIAL Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
Misal n = 5, maka : Gambaran jalannya proses algoritma
FAK = 5 * FAK(4)FAK = 5 * 4 * FAK(3)FAK = 5 * 4 * 3 * FAK(2) FAK = 5 * 4 * 3 * 2 * FAK(1)
ALGORITMA mehgitung FAKTORIAL Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
Misal n = 5, maka : Gambaran jalannya proses algoritma
FAK = 5 * FAK(4)FAK = 5 * 4 * FAK(3)FAK = 5 * 4 * 3 * FAK(2) FAK = 5 * 4 * 3 * 2 * FAK(1)FAK = 5 * 4 * 3 * 2 * 1 * FAK(0)
ALGORITMA mehgitung FAKTORIAL Teknik Rekursif pada algoritma untuk menghitung faktorial dari bilangan bulat positif n:
function FAK(n: integer): integer if n:= 0 then FAK := 1 else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Barisan Bilangan Fibonacci F(i)
Teknik Rekursif pada algoritma untuk menentukan Bilangan ke-n dari barisan bilangan Fibbonaci, adalah sebagai berikut : Gambaran jalannya proses algoritma
tersebut untuk n = 5:
Penerapan Teknik Rekursif (Bilangan Fibonacci)
Procedure F(n : integer) : integer
If n 2 then F(n) = 1
else F(n) = F(n-1) + F(n-2)
Endif
End 1+1=2
2+1=3 1+1=2
3+2=5
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
Berapa Bilangan Fibonacci ke 5?Penerapan Teknik Rekursif (Bilangan Fibonacci)
PERMAINAN MENARA HANOI
Permainan Menara Hanoiü Contoh paling umum dari penggunaan teknik rekursif
adalah pada permainan menara Hanoi.
ü Berdasarkan legenda, pertama kali dimainkan secara manual oleh seorang pendeta Budha di Hanoi, sehingga permainan ini disebut Menara Hanoi.
ü Dalam permainan ini, akan dipindahkan sejumlah piringan yang tidak sama besarnya dari satu tonggak ke tonggak lainnya, dengan diperbolehkan menggunakan (melewati) sebuah tonggak bantuan.
( Jumlah Tonggak ada 3 yaitu: A, B, C )
Penerapan Teknik Rekursif
Ketentuan:
Pemindahan piringan dilakukan satu per satu dan piringan yang lebih besar tidak boleh diletakan di atas piringan yang lebih kecil.
Permainan Menara Hanoiü Contoh paling umum dari penggunaan teknik rekursif
adalah pada permainan menara Hanoi.
ü Berdasarkan legenda, pertama kali dimainkan secara manual oleh seorang pendeta Budha di Hanoi, sehingga permainan ini disebut Menara Hanoi.
ü Dalam permainan ini, akan dipindahkan sejumlah piringan yang tidak sama besarnya dari satu tonggak ke tonggak lainnya, dengan diperbolehkan menggunakan (melewati) sebuah tonggak bantuan.
( Jumlah Tonggak ada 3 yaitu: A, B, C )
Penerapan Teknik Rekursif
Ketentuan:
Pemindahan piringan dilakukan satu per satu dan piringan yang lebih besar tidak boleh diletakan di atas piringan yang lebih kecil.
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Tower of Hanoi (3 piring)Penerapan Teknik Rekursif
Penerapan Teknik RekursifPermainan Menara Hanoi ( 3 piring )
1
2
3
4
5
6
7
Diselesaikan dalam 7 langkah
Penerapan Teknik RekursifPermainan Menara Hanoi ( 4 piring )
Diselesaikan dalam 15 langkah
14
13
12
11
10
8
1 9
3
4
5
6
7
2
15
4
1
56
15
8
48
12
Penerapan Teknik RekursifPermainan Menara Hanoi ( 6 piring )
Diselesaikan dalam 63 langkah
63
60
52
Penyelesaianü Permainan ini dapat diselesaikan dalam 2n - 1 langkah,
di mana n adalah jumlah piring.
ü Jika terdapat 64 piring yang harus dipindahkan, maka
dibutuhkan 264 - 1 atau 18.446.744.073.709.551.615 langkah.
ü Jika setiap langkah membutuhkan waktu 1 detik, maka dibutuhkan sekitar 585 milyar tahun,
yaitu setara dengan 127 kali usia matahari sekarang.
Penerapan Teknik RekursifPermainan Menara Hanoi ( n piring )
Diselesaikan dalam 2n-1 langkah
Persamaan antara teknik iteratif dan rekursif
ITERATIF REKURSIF1. Sama-sama merupakan bentuk
perulangan.
1. Sama-sama merupakan bentuk perulangan.
2. Sama-sama melakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
2. Sama-sama melakukan pengecekan kondisi terlebih dahulu sebelum mengulang.
Perbedaan antara teknik iteratif dan rekursif
ITERATIF REKURSIF
1. Tidak ada variabel lokal baru 1. Ada variabel lokal baru
2. Program tidak sederhana 2. Program menjadi lebih sederhana
No ITERATIF REKURSIF3. Perulangan iteratif merupakan perulangan yang
melakukan proses perulangan terhadap sekelompok intruksi.
Perulangan dilakukan dalam batasan syarat tertentu. Ketika syarat tersebut tidak terpenuhi lagi maka perulangan akan berhenti.
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.
4. Menggunakan FOR, WHILE, DO-WHILE Hanya menggunakan IF.
5. Dapat berjalan pada program yang terdiri dari prosedur (Tidak terdapat fungsi)
Sedangkan rekursif merupakan fungsi.
Perbedaan antara teknik iteratif dan rekursif
KELEBIHANITERATIF REKURSIF
1. Kelebihan perulangan iteratif yaitu mudah dipahami dan mudah dilakukan debuging ketika ada perulangan yang salah
2. Ddapat melakukan nested loop atau yang disebut dengan looping bersarang.
3. Proses lebih singkat karena perulangan terjadi pada kondisi yang telah disesuaikan,
4. Jarang terjadi overflow karena batasan dan syarat perulangan yang jelas.
1. Kelebihan perulangan rekursif yaitu sangat mudah untuk melakukan perulangan dengan batasan yang luas dalam artian melakukan perulangan dalam skala yang besar, dapat melakukan perulangan dengan batasan fungsi.
Perbedaan antara teknik iteratif dan rekursif
KELEMAHANITERATIF REKURSIF
1. Tidak dapat menggunakan batasan berupa fungsi.
2. Perulangan dengan batasan yang luas akan menyulitkan dalam pembuatan program perulangan itu sendiri.
1. Tidak bisa melakukan nested loop (looping bersarang).
2. Membuat fungsi sulit untuk dipahami, hanya cocok untuk persoalan tertentu saja.
3. Memerlukan stack yang lebih besar, sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan ada kalanya akan menyebabkan stack tak cukup lagi (Stack Overum).
4. Proses agak berbelit-belit karena terdapat pemangilan fungsi yang berulang-ulang dan pemanggilan data yang ditumpuk.
Perbedaan antara teknik iteratif dan rekursif
TERIMAKSIH