Anda di halaman 1dari 141

ALGORITMA Dr.

Ernastuti
Dr. D. L. Crispina Pardede
Dr. Ricky Agus
LINGKUP MATERI
ü Pengertian Algoritma

1 ü Kriteria Algoritma yang


baik
ü Perbedaan Teknik Iteratif
dan Teknik Rekursif
6
2
ü Analisis Suatu Algoritma
5 ü Pengertian kompleksitas waktu:
Pengertian Teknik Rekursif worst case, average case, best
Penerapan Teknik Rekursif pada: case
ü Perhitungan Nilai Faktorial
ü Pembentukan Barisan Fibonacci
ü Masalah Menara Hanoi
3 ü Contoh-contoh Soal
4 Menghitung Kompleksitas
Pengertian Teknik Iteratif Waktu Algoritma
Penerapan Teknik Iteratif:
ü Perhitungan Nilai Faktorial
ü Pembentukan Barisan Fibonacci
PROBLEM
LANGKAH-LANGKAH
PENYELESAIN MASALAH MODEL yang TEPAT
Dengan bantuan KOMPUTER
Secara umum, langkah-langkah yang perlu dilalui ALGORITMA
dalam penyelesaian suatu masalah
dengan bantuan komputer
adalah sebagai berikut : PROGRAM
DATA

EKSEKUSI
Problema → Model Yang Tepat → Algoritma →
Program Komputer → Solusi
HASIL/SOLUSI
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 raf
Secara umum graf dapat didefinisikan sebagai
kumpulan simpul yang dihubungkan dengan ruas
PROBLEM
MODEL GRAF
MODEL GRAF

MATRIKS
ALGORITMA

ARRAY DATA PROGRAM

EKSEKUSI

HASIL/ SOLUSI
ALGORITMA
Pertama kali diperkenalkan oleh seorang ahli matematika
ABU JA’FAR MUHAMMAD IBNU MUSA AL KHAWARIZMI.
ALGORITMA
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.
ALGORITMA
Pertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah: Sebuah algoritma
• Urutan dari barisan instruksi menerima input dari sebuah masalah
untuk menyelesaikan suatu masalah. dan mengubahnya menjadi output.
• Sebuah metode atau sebuah proses
Sebuah masalah dapat memiliki banyak
yang diikuti
algoritma.
untuk memecahkan sebuah masalah.
ALGORITMA
Pertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah: Sebuah algoritma
• Urutan dari barisan instruksi menerima input dari sebuah masalah
untuk menyelesaikan suatu masalah. dan mengubahnya menjadi output.
• Sebuah metode atau sebuah proses
Sebuah masalah dapat memiliki banyak
yang diikuti
algoritma.
untuk memecahkan sebuah masalah.

Algoritma adalah suatu metode khusus


untuk menyelesaikan suatu masalah
yang nyata (Webster Dictionary).
ALGORITMA
Pertama kali diperkenalkan oleh seorang ahli matematika
Abu Ja’far Muhammad Ibnu Musa Al Khawarizmi.
Algoritma adalah: Sebuah algoritma
• Urutan dari barisan instruksi menerima input dari sebuah masalah
untuk menyelesaikan suatu masalah. dan mengubahnya menjadi output.
• Sebuah metode atau sebuah proses
Sebuah masalah dapat memiliki banyak
yang diikuti
algoritma.
untuk memecahkan sebuah masalah.

Algoritma adalah suatu metode khusus Algoritma dapat dinyatakan dalam


untuk menyelesaikan suatu masalah bentuk diagram alir, bahasa semu.
yang nyata (Webster Dictionary).
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 Kriteria untuk Menilai Sebuah Algoritma


• Harus “benar” (correct). • Efektif dan efisien
• Tersusun dari serangkaian langkah • Jumlah langkah berhingga
konkrit (concrete steps) • Berakhir
• Tidak mengandung ambiguitas (no • Ada output
ambiguity) tentang langkah mana • Terstruktur
yang harus dilakukan berikutnya.
• Harus mengandung sejumlah hingga
(finite) langkah.
• Harus berakhir/berhenti (terminate).
PROBLEM
PENYELESAIAN MASALAH
DENGAN MODEL yang TEPAT
BANTUAN KOMPUTER
ALGORITMA

Sebuah program komputer adalah


sebuah instant, atau penyajian konkrit, PROGRAM
DATA
dari sebuah algoritma dalam beberapa
bahasa pemrograman. EKSEKUSI

HASIL/SOLUSI
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 Merencanakannya
2. Bagaimana Menyatakannya
3. Bagaimana Validitasnya
4. Bagaimana Menganalisisnya
5. Bagaimana Menguji suatu program
STUDI TENTANG ALGORITMA

Hal-hal yang dipelajari: Merencanakan algoritma


1. Bagaimana Merencanakannya merupakan suatu studi tentang
2. Bagaimana Menyatakannya teknik variasi design (model)
3. Bagaimana Validitasnya
4. Bagaimana Menganalisisnya
5. Bagaimana Menguji suatu program
STUDI TENTANG ALGORITMA

Hal-hal yang dipelajari:


1. Bagaimana Merencanakannya Menyatakannya dengan singkat
2. Bagaimana Menyatakannya dalam bahasa pemrograman
3. Bagaimana Validitasnya yang terstruktur, misalnya
Pascal, C
4. Bagaimana Menganalisisnya
5. Bagaimana Menguji suatu program
STUDI TENTANG ALGORITMA

Hal-hal yang dipelajari:


1. Bagaimana Merencanakannya Validitas algoritma memenuhi
2. Bagaimana Menyatakannya kebutuhan yang diinginkan, dan
3. Bagaimana Validitasnya perhitungannya/solusinya
selalu benar untuk semua
4. Bagaimana Menganalisisnya
kemungkinan input yang legal
5. Bagaimana Menguji suatu program
STUDI TENTANG ALGORITMA

Hal-hal yang dipelajari:


1. Bagaimana Merencanakannya
2. Bagaimana Menyatakannya
3. Bagaimana Validitasnya Perbandingan waktu dan
4. Bagaimana Menganalisisnya banyaknya storage/memori
5. Bagaimana Menguji suatu program yang digunakan (efisiensi).
STUDI TENTANG ALGORITMA

Hal-hal yang dipelajari:


1. Bagaimana Merencanakannya
2. Bagaimana Menyatakannya
3. Bagaimana Validitasnya
4. Bagaimana Menganalisisnya
5. 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
best case
Sebagian besar algoritma mengubah average case
worst case
input menjadi output 120

Running time dari sebuah algoritma 100

berubah sesuai ukuran input

Running Time
80

60
Waktu rata-rata biasanya sulit untuk
ditentukan 40

20
Worst case running time 0
 Lebih mudah dianalisis
1000 2000 3000 4000
Input Size
 Penting bagi aplikasi seperti
games, finance dan robotics
STUDI EKSPERIMENTAL
Menulis program untuk 9000

mengimplementasi algoritma 8000

7000
Jalankan program dengan 6000
berbagai ukuran dan

Time (ms)
5000
komposisi input 4000

Gunakan sebuah metode 3000

untuk memperoleh running 2000

time yang tepat 1000

Plot hasilnya 0
0 50 100
Input Size
STUDI EKSPERIMENTAL
Menulis program untuk KETERBATASAN EKSPERIMEN
mengimplementasi algoritma
Implementasi algoritma bukanlah
Jalankan program dengan hal yang mudah
berbagai ukuran dan Hasil tidak menunjukkan running
komposisi input time pada input lain yang tidak
Gunakan sebuah metode digunakan dalam eksperimen.
untuk memperoleh running
Dalam membandingkan dua
time yang tepat
algoritma, harus menggunakan
Plot hasilnya
lingkungan perangkat keras dan
perangkat lunak yang sama
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(g(n))
O : BIG OH f(n)
 Upper Bound

f(n) = (g(n))   dua konstanta positif c dan n0


sedemikian hingga
f(n)  cg(n)  n  n0.
NOTASI BIG OH

CONTOH
Diketahui 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
f(n)
W : OMEGA c(g(n))
 Lower Bound

f(n) = W(g(n))   konstanta positif c dan n0


sedemikian hingga
f(n)  cg(n)  n  n0
NOTASI BIG OMEGA

CONTOH
Diketahui f(n) = 5n2 + 2n + 1
akan dibandingkan dengan g(n) = n2 .
untuk c = 5, n0 = 0
berlaku 5n2  f(n) , n  0 .

Jadi f(n) = 5n2 + 2n + 1 adalah W(n2)


NOTASI ASIMPTOTIK

 : THETA
 Tight Bound

f(n) = (g(n))   konstanta positif c1, c2 dan n0


sedemikian hingga
c1g(n) f(n)  c2g(n),  n  n0
NOTASI THETA
CONTOH
Diketahui 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)  cg(n)  nn0.
BEST CASE  BIG OMEGA
f(n) = W(g(n))   konstanta positif c dan n0 sedemikian
hinggaf(n)  cg(n)  n>n0
AVERAGE CASE  BIG THETA
f(n) = (g(n))   konstanta positif c1, c2 dan n0 sedemikian
hingga c1g(n)f(n) c2g(n), n>n0
KOMPLEKSITAS ALGORITMA
TEOREMA
Jika f(n) = am nm + am-1 nm-1 + . . .+ a1 n + a0 adalah
polinomial tingkat m, maka f(n) = (nm)
CONTOH 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)
CONTOH ANALISIS ALGORITMA

(i) ca+b
(ii) for i  1 to n do
ca+b BAGAIMANA
repeat
ANALISISNYA?
(iii) for i  1 to n do
for j  1 to n do
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i  1 to n do
ca+b (i) 1 kali f(n) = 1 (1)
repeat
(ii) n kali f(n) = n (n)
(iii) for i  1 to n do
for j  1 to n do (iii) n2 kali f(n) = n2 (n2)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i  1 to n do
ca+b (i) 1 kali f(n) = 1 (1)
repeat
(ii) n kali f(n) = n (n)
(iii) for i  1 to n do
for j  1 to n do (iii) n2 kali f(n) = n2 (n2)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i  1 to n do
ca+b (i) 1 kali f(n) = 1 (1)
repeat
(ii) n kali f(n) = n (n)
(iii) for i  1 to n do
for j  1 to n do (iii) n2 kali f(n) = n2 (n2)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i  1 to n do
ca+b (i) 1 kali f(n) = 1 (1)
repeat
(ii) n kali f(n) = n (n)
(iii) for i  1 to n do
for j  1 to n do (iii) n2 kali f(n) = n2 (n2)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).

1. Set A[i,j], B[i,j], C[i,j] real


2. Untuk i  1 s/d m kerjakan
3. untuk j  1 s/d n kerjakan
4. C[i,j]  A[i,j] + B[i,j]
5. akhir j
6. akhir I
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
ANALISISNYA
1. Set A[i,j], B[i,j], C[i,j] real
Jumlah operasi ‘+’
2. Untuk i  1 s/d m kerjakan
Pada loop j = n
3. untuk j  1 s/d n kerjakan
4. C[i,j]  A[i,j] + B[i,j] n
5. akhir j
6. akhir i
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
ANALISISNYA
1. Set A[i,j], B[i,j], C[i,j] real
Loop pada baris 3-4 dilakukan
2. Untuk i  1 s/d m kerjakan
sebanyak m kali
3. untuk j  1 s/d n kerjakan
4. C[i,j]  A[i,j] + B[i,j] m
5. akhir j
6. akhir i
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
ANALISISNYA
1. Set A[i,j], B[i,j], C[i,j] real
Jadi, jumlah operasi ‘+’ = mn
2. Untuk i  1 s/d m kerjakan
3. untuk j  1 s/d n kerjakan
4. C[i,j]  A[i,j] + B[i,j] n m
5. akhir j
6. akhir I
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
ANALISISNYA
1. Set A[i,j], B[i,j], C[i,j] real Asumsi: 1 elemen memerlukan 4 satuan
2. Untuk i  1 s/d m kerjakan memori/byte.
Jumlah elemen: 3
3. untuk j  1 s/d n kerjakan
4. C[i,j]  A[i,j] + B[i,j]
5. akhir j
6. akhir I
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
ANALISISNYA
1. Set A[i,j], B[i,j], C[i,j] real Asumsi: 1 elemen memerlukan 4 satuan
2. Untuk i  1 s/d m kerjakan memori/byte.
Jumlah elemen: 3
3. untuk j  1 s/d n kerjakan
Jadi, Jumlah memori = 3 mn x
4. C[i,j]  A[i,j] + B[i,j]
4
5. akhir j
= 12 mn
6. akhir I
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).

1. Set A[i,j], B[i,j], C[i,j] real ANALISISNYA


2. Untuk i  1 s/d m kerjakan Jumlah operasi ‘+’ = mn
3. untuk j  1 s/d n kerjakan Jumlah memori = 12 mn
4. C[i,j]  A[i,j] + B[i,j] TOTAL = 13 mn
5. akhir j
6. akhir I
CONTOH ANALISIS ALGORITMA
Menentukan lokasi suatu elemen pada array data secara linier
1. Set k:= 1 ; loc := 0
2. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k  n
3. IF Item := Data(k) then set loc := k
4. Set k := k + 1
5. IF loc := 0 then
WRITE Elemen tidak ada pada array data
ELSE WRITE loc adalah lokasi dari elemen
6. EXIT
CONTOH ANALISIS ALGORITMA
Menentukan lokasi suatu elemen pada array data secara linier
1. Set k:= 1 ; loc := 0 ANALISISNYA
2. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k  n
3. IF Item := Data(k) then set loc := k Bila elemen (item) yang dicari
4. Set k := k + 1 merupakan elemen terakhir
5. IF loc := 0 then dari array tersebut
WRITE Elemen tidak ada pada array data atau tidak terdapat dalam
ELSE WRITE loc adalah lokasi dari elemen array, maka
6. EXIT WORST CASE  F(n) = (n)
CONTOH ANALISIS ALGORITMA
Menentukan lokasi suatu elemen pada array data secara linier
1. Set k:= 1 ; loc := 0 ANALISISNYA
2. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k  n
3. IF Item := Data(k) then set loc := k Bila elemen (item) yang dicari
4. Set k := k + 1 merupakan elemen pertama
5. IF loc := 0 then dari array tersebut, maka
WRITE Elemen tidak ada pada array data BEST CASE  F(n) = (1)
ELSE WRITE loc adalah lokasi dari elemen
6. EXIT
CONTOH ANALISIS ALGORITMA
Menentukan lokasi suatu elemen pada array data secara linier
1. Set k:= 1 ; loc := 0 ANALISISNYA
2. REPEAT langkah 3 dan 4
WHILE loc := 0 dan k  n
3. IF Item := Data(k) then set loc := k Bila elemen (item) yang dicari
4. Set k := k + 1 berada di antara elemen
5. IF loc := 0 then pertama dan elemen terakhir
WRITE Elemen tidak ada pada array data dari array tersebut, maka
ELSE WRITE loc adalah lokasi dari elemen AVERAGE CASE  F(n) = (n)
6. EXIT
Materi Terapan Teori Graf M#6
1. Pengertian Algoritma
2. Kriteria Algoritma yang baik
3. Analisis Suatu Algoritma
4. Pengertian kompleksitas waktu: worst case, average case, best case
5. Pengertian Teknik Iteratif
Penerapan Teknik Iteratif pada:
(a) Perhitungan Nilai Faktorial
(b) Pembentukan Barisan Fibonacci
6. 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
Pengertian Teknik Iteratif
Teknik Iteratif merupakan suatu teknik pembuatan algoritma
dengan pemanggilan procedure beberapa kali hingga suatu
kondisi tertentu terpenuh

Penerapan Teknik Iteratif:


(1) Perhitungan Nilai Faktorial
(2) Pembentukan Barisan Fibonacci
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Nilai Bilangan Faktorial n!
Penerapan Teknik Iteratif (Bilangan FAKTORIAL)

FLOWCHART
Bilangan FAKTORIAL N! FAK=1,i=0

i = i + 1

FAK = FAK * i

i=N ?
Penerapan Teknik Iteratif (Bilangan FAKTORIAL 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!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
next i
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
1 1*1=1
next i
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
1 1*1=1
next i
2 1*2=2
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
1 1*1=1
next i
2 1*2=2
3 2*3=6
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
1 1*1=1
next i
2 1*2=2
3 2*3=6
4 6 * 4 = 24
Penerapan Teknik Iteratif (Bilangan FAKTORIAL n!)

ALGORITMA FAKTORIAL
Teknik Iteratif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:
Untuk n = 5, maka :
gambaran jalannya proses algoritma
Set FAK, i, n :integer
FAK=1, kemudian
FAK=1
for i = 1 to n i= FAK=
FAK = FAK * i
1 1*1=1
next i
2 1*2=2
3 2*3=6
4 6 * 4 = 24
5 24 * 5 = 120
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
Penerapan Teknik Iteratif (Bilangan Fibonacci)
Teknik Iteratif pada algoritma untuk
menentukan suku ke-n dari barisan bilangan
Fibbonaci, adalah sebagai berikut :
Misal n = 5, maka :
gambaran jalannya proses algoritma
tersebut adalah sebagai berikut :

x=1, y=1, kemudian


Penerapan Teknik Iteratif (Bilangan Fibonacci)
Teknik Iteratif pada algoritma untuk
menentukan suku ke-n dari barisan bilangan
Fibbonaci, adalah sebagai berikut :
Misal n = 5, maka :
gambaran jalannya proses algoritma
tersebut adalah sebagai berikut :

x=1, y=1, kemudian

i F x y
3 1+1=2 1 2
Penerapan Teknik Iteratif (Bilangan Fibonacci)
Teknik Iteratif pada algoritma untuk
menentukan suku ke-n dari barisan bilangan
Fibbonaci, adalah sebagai berikut :
Misal n = 5, maka :
gambaran jalannya proses algoritma
tersebut adalah sebagai berikut :

x=1, y=1, kemudian

i F x y
3 1+1=2 1 2
4 1+2=3 2 3
Penerapan Teknik Iteratif (Bilangan Fibonacci)
Teknik Iteratif pada algoritma untuk
menentukan suku ke-n dari barisan bilangan
Fibbonaci, adalah sebagai berikut :
Misal n = 5, maka :
gambaran jalannya proses algoritma
tersebut adalah sebagai berikut :

x=1, y=1, kemudian

i F x y
3 1+1=2 1 2
4 1+2=3 2 3
5 2+3=5 3 5
Teknik Iteratif &
Teknik Rekursif
Rekursif (Recurcion)
REKURSIF (RECURCION)
Pengertian Teknik Rekursif
Teknik Rekursif merupakan salah satu cara pembuatan
algoritma dengan pemanggilan procedure atau function yang
sama

Penerapan Teknik Rekursif:


(1) Perhitungan Nilai Faktorial
(2) Pembentukan Barisan Fibonacci
(3) Menara Hanoi
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
NILAI FAKTORIAL n !
Penerapan Teknik Rekursif (Bilangan 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!)
ALGORITMA menghitung FAKTORIAL Untuk n = 5, maka :
gambaran jalannya proses algoritma
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!)
ALGORITMA menghitung FAKTORIAL

Teknik Rekursif pada algoritma untuk


menghitung faktorial dari bilangan bulat
positif n:

Misal n = 5, maka :
function FAK(n: integer): integer Gambaran jalannya proses algoritma
if n:= 0 then FAK := 1
FAK = 5 * FAK(4)
else FAK := n * FAK(n-1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)
ALGORITMA menghitung FAKTORIAL

Teknik Rekursif pada algoritma untuk


menghitung faktorial dari bilangan bulat
positif n:

Misal n = 5, maka :
function FAK(n: integer): integer Gambaran jalannya proses algoritma
if n:= 0 then FAK := 1
FAK = 5 * FAK(4)
else FAK := n * FAK(n-1)
FAK = 5 * 4 * FAK(3)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)

ALGORITMA mehgitung FAKTORIAL


Teknik Rekursif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:

Misal n = 5, maka :
function FAK(n: integer): integer Gambaran jalannya proses algoritma
if n:= 0 then FAK := 1
FAK = 5 * FAK(4)
else FAK := n * FAK(n-1)
FAK = 5 * 4 * FAK(3)
FAK = 5 * 4 * 3 * FAK(2)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)

ALGORITMA mehgitung FAKTORIAL


Teknik Rekursif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:

Misal n = 5, maka :
function FAK(n: integer): integer Gambaran jalannya proses algoritma
if n:= 0 then FAK := 1
FAK = 5 * FAK(4)
else FAK := n * FAK(n-1)
FAK = 5 * 4 * FAK(3)
FAK = 5 * 4 * 3 * FAK(2)
FAK = 5 * 4 * 3 * 2 * FAK(1)
Penerapan Teknik Rekursif (Bilangan FAKTORIAL n!)

ALGORITMA mehgitung FAKTORIAL


Teknik Rekursif pada algoritma untuk
menghitung faktorial dari bilangan bulat
positif n:

Misal n = 5, maka :
function FAK(n: integer): integer Gambaran jalannya proses algoritma
if n:= 0 then FAK := 1
FAK = 5 * FAK(4)
else FAK := n * FAK(n-1)
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)
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)
Penerapan Teknik Rekursif (Bilangan Fibonacci)
Teknik Rekursif pada algoritma untuk
menentukan Bilangan ke-n dari barisan
bilangan Fibbonaci, adalah sebagai berikut : Gambaran jalannya proses algoritma
tersebut untuk n = 5:
Procedure F(n : integer) : integer
If n  2 then F(n) = 1 3+2=5

else F(n) = F(n-1) + F(n-2)


2+1=3 1+1=2
Endif
End 1+1=2
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)
Berapa Bilangan Fibonacci ke 5?
PERMAINAN MENARA HANOI
Penerapan Teknik Rekursif
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 Ketentuan:
lainnya, dengan diperbolehkan menggunakan (melewati)
sebuah tonggak bantuan. Pemindahan piringan dilakukan satu
( Jumlah Tonggak ada 3 yaitu: A, B, C ) per satu dan piringan yang lebih besar
tidak boleh diletakan di atas piringan
yang lebih kecil.
Penerapan Teknik Rekursif
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 Ketentuan:
lainnya, dengan diperbolehkan menggunakan (melewati)
sebuah tonggak bantuan. Pemindahan piringan dilakukan satu
( Jumlah Tonggak ada 3 yaitu: A, B, C ) per satu dan piringan yang lebih besar
tidak boleh diletakan di atas piringan
yang lebih kecil.
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
Tower of Hanoi (3 piring)
Penerapan Teknik Rekursif
Permainan Menara Hanoi ( 3 piring )

Diselesaikan
1 5 dalam 7 langkah

2 6

3 7
Penerapan Teknik Rekursif
Permainan Menara Hanoi ( 4 piring )
8

1 9
Diselesaikan
2 10 dalam 15 langkah
3 11

4 12

5 13

6 14

7 15
Penerapan Teknik Rekursif
Permainan Menara Hanoi ( 6 piring )
48
1

Diselesaikan
4 52
dalam 63 langkah

8 56

60
12

15 63
Penerapan Teknik Rekursif
Permainan Menara Hanoi ( n piring )

Penyelesaian
ü Permainan ini dapat diselesaikan dalam 2n - 1 langkah,
di mana n adalah jumlah piring.
Diselesaikan
dalam 2n-1 langkah
ü 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.
Persamaan antara teknik iteratif dan rekursif

ITERATIF REKURSIF
1. Sama-sama merupakan bentuk 1. Sama-sama merupakan bentuk
perulangan. perulangan.

2. Sama-sama melakukan 2. Sama-sama melakukan


pengecekan kondisi terlebih pengecekan kondisi terlebih
dahulu sebelum mengulang. 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


Perbedaan antara teknik iteratif dan rekursif

No
ITERATIF REKURSIF
3. Perulangan iteratif merupakan perulangan yang Perulangan rekursif merupakan salah satu metode
melakukan proses perulangan terhadap didalam pemrograman yang mana dalam sebuah
sekelompok intruksi. fungsi terdapat intruksi yang memanggil fungsi itu
Perulangan dilakukan dalam batasan syarat sendri, atau lebih sering disebut memanggil
tertentu. Ketika syarat tersebut tidak terpenuhi dirinya sendiri.
lagi maka perulangan akan berhenti.

4. Menggunakan FOR, WHILE, DO-WHILE Hanya menggunakan IF.

5. Dapat berjalan pada program yang terdiri dari Sedangkan rekursif merupakan fungsi.
prosedur (Tidak terdapat fungsi)
Perbedaan antara teknik iteratif dan rekursif
KELEBIHAN
ITERATIF REKURSIF
1. Kelebihan perulangan iteratif yaitu 1. Kelebihan perulangan rekursif yaitu
mudah dipahami dan mudah dilakukan sangat mudah untuk melakukan
debuging ketika ada perulangan yang perulangan dengan batasan yang
salah luas dalam artian melakukan
2. Ddapat melakukan nested loop atau perulangan dalam skala yang
yang disebut dengan looping bersarang. besar, dapat melakukan perulangan
dengan batasan fungsi.
3. Proses lebih singkat karena perulangan
terjadi pada kondisi yang telah
disesuaikan,
4. Jarang terjadi overflow karena batasan
dan syarat perulangan yang jelas.
Perbedaan antara teknik iteratif dan rekursif
KELEMAHAN
ITERATIF REKURSIF
1. Tidak dapat menggunakan batasan 1. Tidak bisa melakukan nested loop (looping
berupa fungsi. bersarang).
2. Perulangan dengan batasan yang luas 2. Membuat fungsi sulit untuk dipahami,
akan menyulitkan dalam pembuatan hanya cocok untuk persoalan tertentu saja.
program perulangan itu sendiri. 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.
TERIMAKSIH

Anda mungkin juga menyukai