Ernastuti
Dr. D. L. Crispina Pardede
Dr. Ricky Agus
LINGKUP MATERI
ü Pengertian Algoritma
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
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.
HASIL/SOLUSI
Bagaimana memilih satu pendekatan (algoritma)
dari sekian banyak algoritma yang ada?
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
7000
Jalankan program dengan 6000
berbagai ukuran dan
Time (ms)
5000
komposisi input 4000
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.
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.
CONTOH
Diketahui f(n) = 5n2 + 2n + 1
akan dibandingkan dengan g(n) = n2 .
untuk c = 5, n0 = 0
berlaku 5n2 f(n) , n 0 .
: THETA
Tight Bound
(i) ca+b
(ii) for i 1 to n do
ca+b BAGAIMANA
repeat
ANALISISNYA?
(iii) for i 1 to n do
for j 1 to n do
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i 1 to n do
ca+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)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i 1 to n do
ca+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)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i 1 to n do
ca+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)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
ANALISISNYA
(i) ca+b Banyaknya Operasi ‘+’ f(n) Big Oh
(ii) for i 1 to n do
ca+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)
ca+b
repeat
repeat
CONTOH ANALISIS ALGORITMA
Penjumlahan 2 matriks riil berorde (m x n).
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 :
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 :
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 :
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
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
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!)
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!)
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!)
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
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.
ITERATIF REKURSIF
1. Sama-sama merupakan bentuk 1. Sama-sama merupakan bentuk
perulangan. perulangan.
ITERATIF 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.
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