Anda di halaman 1dari 39

Matematika Diskrit

Pertemuan 10
Algoritma dan Hubungan Rekurensi

oleh : RRA
Algoritma
Algoritma
adalah suatu langkah-langkah logis untuk menyelesaikan
masalah. Bedanya kalau algoritma setiap langkah difokuskan
pada sistem komputer dan data.
a.Sebuah algoritma tidak saja harus benar (sesuai spesifikasi
persoalan), tetapi juga harus efisien.
b.Algoritma yang baik adala algoritma yang efisien.
c.Efektifitas algoritma diukur dari waktu (time) yang diperlukan
untuk menjalankan algoritma dan ruang (space) memori yang
dibutuhkan oleh algoritma tersebut.
d.Algoritma yang efektif adalah algoritma yang
meminimumkan kebutuhan waktu dan ruang memori.
e.Kebutuhan waktu dan ruang memori suatu algoritma
bergantung pada ukuran masukan (n), yang menyatakan
ukuran data yang diproses oleh algoritma
Algoritma
Beberapa hal yang harus dipahami dalam mencari algoritma
antara lain:
 Masalah seperti apa yang hendak diselesaikan?
 Gagasan apa yang ada pada algoritma tersebut?
 Berapa lama yang diperlukan untuk menyelesaikan
masalah?
 Berapa jumlah data yang dapat ditangani oleh algoritma
tersebut?

Untuk mengetahui seberapa besar kualitas suatu algoritma,


dinyatakan dengan notasi-O besar ( big O-notation) untuk
menyatakan tingakat kekomplekan suatu algoritma.
Notasi O-besar
Notasi O-besar
Menyatakan kelompok kompleksitas suatu algoritma atau
jumlah operasi yang dilakukan oleh algoritma.
Tabel Kompleksitas dengan
Notasi O-besar Contoh:
Kelompok Nama Jenis Algoritma Kompleksitas
Algoritma
Konstan Logaritmik Linier search Binary
Linier search Bubble sort
N log n Kuadratik Kubik Selection sort
Eksponensial Faktorial Insertion sort Merge
sort Quick sort Heap
sort
Notasi O-besar
Notasi O-besar
Contoh :
Notasi O-besar
Teorema
Definisi:
T(n) = O(f(n))(T(n) adalah O(f(n))
yang artinya T(n) berorde paling besar f(n)) bila terdapat C
dan n0 sedemikian hingga:

T(n)  C(f(n))
Untuk n  n0,
artinya jika sebuah algoritma mempunyai waktu asimtotik
O(f(n)), maka jika n dibuat semakin besar waktu yang
dibutuhkan tidak akan pernah melebihi suatu tetapan C dikali
f(n). Jadi f(n) adalah batas atas dari T(n) untuk n yang besar.
T(n) dikatakan berorde paling besar f(n).
Contoh :

Tunjukkan bahwa 3 n + 2 = O (n)


Jawab :
3 n + 2 = O (n)
karena
3 n + 2 3 n + 2 n = 5 n untuk semua n  1
(C = 5, f(n) = n, dan n0 = 1
O(1)
O(log n)
O(n)
O(n log n)
O(n log n)
Algoritma pencarian
Algoritma Pencarian
1.Pencarian beruntun (sequential search)
2.Pencarian Biner (binary search)
Pencarian beruntun pada array yang tidak terurut
Proses dimulai dari data pertama sampai data terakhir / data ke-n
Berikut ini algoritmanya:
Input ( cari) { meminta data nilai yang akan dicari}
I=1 { indeks array dimulai dari 1}
while (I<n) and (A[I]  cari) do
I = I+1
end while
if A[I] = cari then
output (‘Data berada di index nomor’, I)
else output (‘Data tidak ditemukan’) endif
Algoritma pencarian beruntun yang sudah terurut
Pencarian beruntun pada Array yang sudah
Terurut
Kasus terburuk dari pencarian beruntun kalau data tidak ditemukan
atau terletak paling akhir. Kalau data sudah terurut maka akan
lebih baik kalau proses pencarian dihentikan apabila nilai data
yang dibandingkan sudah lebih besar dari nilai data yang dicari.
Berikut ini algoritmanya:
Input ( cari) { meminta data nilai yang akan dicari}
I=1 { indeks array dimulai dari 1}
while (I<n) and (A[I] < cari) do
I = I+1
end while
if A[I] = cari then
output (‘Data berada di index nomor’, I)
else output (‘Data tidak ditemukan’)
endif
Algoritma pencarian beruntun yang sudah terurut
Pencarian biner
Pencarian Biner
Dilakukan untuk memperkecil jumlah operasi perbandingan yang harus
dilakukan antara data yang dicari dengan data yang ada di dalam tabel,
khususnya untuk data yang besar.
Prinsip dasarnya membagi 2 data sampai data ditemuakan. Algoritmanya:
Input (cari) {meminta niali data yang akan dicari} Batasatas = 1
{indeks array dimulai dari 1} Batasbawah = n
Ketemu = false
While (batasatas < batasbawah) and (not ketemu) do Tengah =
(batasatas+batasbawah)div2
If A[tengah] = cari then ketemu = true
else if (A[tengah] <cari) then { cari dibagian kanan}
batasatas = tengah + 1
else batasbawah = tengah-1 {cari dibagian kiri} endif
endif
endwhile
if (ketemu) then
output (‘ data berada di index nomor’, tengah)
else output (‘data tidak ditemukan’) endif
Algoritma Pengurutan
Yang akan dibahas meliputi bubble sort,
selection sort, dan insertion sort
1. Bubble Sort
menggunakan prinsip kerja gelembung udara
Pengurutan dengan bubble sort

Algoritma Bubble sort For I = 1 to


(n-1) do
for J = N downto (I+1) do
if data [J] < data [J-1] then Bubble =
data [J]
data [J] = data [J-1] data [J-1] =
bubble
endif
endfor endfor
BUBBL SOR
E T yg bekerja dgn menggunakan prinsip
Tehnik Sort
gelembung (bubble) udara yg akan bergerak naik ke
atas secara satuper satu.
Prinsip Kerja dari Bubble Sort adalah :
1. Pengecekan mulai dari data ke-1 sampai data
ke-n
2. Bandingkan data ke-n dengan data sebelumnya
(n-1)
3. Jika lebih kecil maka pindahkan bilangan
tersebut dengan bilanga yg ada didepannya
( sebelumnya n
) satu persatu (n-1,n-2,n-3,....dst)
4. Jika lebih besar maka tidak terjadi pemindahan
5. Ulangi langkah 2 dan 3 s/d sort optimal.
Contoh : 22 10 15 3 8 2
iterasi 1
1 2 3 4 5 6
Langkah 1 : 22 10 15 3 8 2
Langkah 2 : 22 10 15 3 8 2
Langkah 3 : 22 10 15 3 2 8
Langkah 4 : Ulangi langkah 2 dan 3

Hasil iterasi 1 : 2 22 10 15 3 8
Iterasi 2
Langkah 1 : 2 22 10 15 3 8
Langkah 2 : 2 22 10 15 3 8
- 8> mak 8 tidak pinda
3,
untuk selanjutnya bandingkana data h,
sebelumnya yaitu 3.
Langkah 3 : 2 22 10 3 15 8
Langkah 4 : Ulangi langkah 2 dan 3
Hasil Iterasi 2 : 2 3 22 10 15 8
Lakukan Iterasi selanjutnya sampai iterasi ke- 6
Pengurutan dengan Selection sort
2. Selection Sort
salah satu metode pengurutan berdasarkan prioritas antrian.
Algoritma Selection Sort For I = 1 to (n-1) do
for J = (I+1) to N do
if data [J] < data [kecil] then kecil = J
endif
endfor
sementara = data[I] data[I] = data[kecil] data[kecil] =
sementara
endfor
Prinsip Kerja dari Teknik Selection Sort ini
adalah :

1. Pengecekan dimulai data ke-1 sampai


dengan data ke-n
2. Tentukan bilangan dengan Index terkecil
dari data bilangan tersebut
3. Tukar bilangan dengan Index terkecil
tersebut dengan bilangan pertama ( I = 1 )
dari data bilangan tersebut
4. Lakukan langkah 2 dan 3 untuk bilangan
berikutnya ( I= I+1 ) sampai didapatkan
urutan yg optimal.
Contoh : 22 10 15 3 8 2

Iterasi 1
1 2 3 4 5 6
Langkah 1: 22 10 15 3 8 2
Langkah 2: 22 10 15 3 8 2
Langkah 3 : 2 10 15 3 8 22
Langkah 4 : Ulangi langkah 2 dan 3 .
Iterasi 2

Langkah 1: 2 10 15 3 8 22
Langkah 2: 2 10 15 3 8 22
Langkah 3: 2 3 15 10 8 22
Langkah 4: Ulangi langkah 2 dan 3 .

Lakukan Iterasi selanjutnya sampai iterasi


ke-6
Pengurutan dengan Insertion Sort
3. Insertion Sort
Metode ini dilakukan dengan penyisipan nilai data untuk suatu aaray A
yang tidak terurut ke dalam suatu tempat kosong C dan memastikan nilai
data C selalu dalam keadaan terurut.
Algoritma Insertion sort For I = 2 to N do
sementara = data[I]
j=I–1
while (sementara < data[J]) and (J>1) do data [J+1] = data [J]
J=J–1
endwhile
if sementara  data[J] then data[J+1] = sementara
else data [J+1] = data [J] data [J] = sementara
endif
endfor
INSERTION SORT
Prinsip dasar Insertion adalah secara berulang-ulang
menyisipkan / memasukan setiap elemen. ke dlm
posisinya / tempatnya yg benar.
Prinsip Kerja Insertion Sort adalah
1. Pengecekan mulai dari data ke-1 sampai data ke-n
2. Bandingkan data ke-I ( I = data ke-2 s/d data ke-n )
3. Bandingkan data ke-I tersebut dengan data
sebelumnya (I-1), Jika lebih kecil maka data
tersebut dapat disisipkan ke data awal sesuai dgn
posisisi yg seharusnya
4. Lakukan langkah 2 dan 3 untuk bilangan
berikutnya ( I= I+1 ) sampai didapatkan urutan yg
optimal.
Contoh : 22 10 15 3 8 2
Iterasi 1
1 2 3 4 5 6
Langkah 1: 22 10 15 3 8 2
Langkah 2: 10 22 15 3 8 2
Langkah 3: 10 22 15 3 8 2
Langkah 4: Ulangi langkah 2 da
n3
Iterasi 2

Langkah 1: 10 22 15 3 8 2
Langkah 2: 10 15 22 3 8 2
Langkah 3: 10 15 22 3 8 2
Langkah 4: Ula langkah 2 3
Lakukan Iterasingi dan iterasi
selanjutnya sampai
ke- 6
Catatan : Setiap ada pemindahan, maka elemen.
Yang sudah ada akan di insert sehingga akan
bergeser kebelakang.
Hubungan Rekurensi
Hubungan Rekurensi
Sebuah hubungan rekurensi untuk urutan a0, a1,…adalah
sebuah persamaan yang menghubungkan a0 dengan suku
tertentu pendahulunya a0,a1,…,an-1. Kondisi awal untuk
urutan a0,a1,… secara eksplisit memberikan nilai kepada
sejumlah suku-suku tertentu dalam urutan itu.
Rekurensi adalah proses perulangan yaitu memanggil
dirinya sendiri (fungsi/prosedur) dengan parameter yang
berbeda, sampai pengulangan berhenti.
Cara lain menyelesaikan rekurensi adalah:
1.Memecahkan masalah yang besar menjadi dua
submasalah.
2.Submasalah tersebut diselesaikan dengan cara yang
sama untuk memecahkan masalah yang besar tersebut.
Permasalahan yang bisa menggunakan
metode rekurensi
Permasalahan yang menggunakan metode rekuren
diantaranya:
1.Faktorial
2.Fibonanci
3. Menara Hanoi
Faktorial
0! = 1
N! = N x (N-1)! Untuk N > 0

Scr notasi pemrograman dapat ditulis sebagai :


FAKT (0) = 1 .............................................. (1)
FAKT(N) = N * FAKT (N-1).................................... (2)
Contoh :

FAKT(5) = 5 * FAKT(4)
FAKT(4) = 4 * FAKT(3)
FAKT(3) = 3 * FAKT(2)
FAKT(2) = 2 * FAKT(1)
FAKT(1) = 1 * FAKT(0)
Nilai Awal
Misal :
hitung 5!, maka dapat dilakukan secara rekursif
dgn cara :
5! = 5 * 4!

Scr rekursif nilai dr 4! Dpt dihitung kembali dgn 4 *


3!,
shg 5! Menjadi :5! = 5 * 4 * 3!

Scr rekursif nilai dr 3! Dpt dihitung kembali dgn 3 *


2!, shg 5! Menjadi : 5! = 5 * 4 * 3 * 2!

Scr rekursif nilai dr 2! Dpt dihitung kembali dgn 2 *


1, shg 5! Menjadi : 5! = 5 * 4 * 3 * 2 * 1 = 120.
Fibonancy
Deret Fibonancy :
0,1,1,2,3,5,8,13,.........
Secara notasi pemrograman dapat ditulis sebagai :
Fibo (1) = 0 & Fibo (2) = 1 ....................................... (1)
Fibo (N) = Fibo (N-1) + Fibo (N-2) ................................. (2)

Contoh :
Fibo(5) = Fibo(4) + Fibo(3)
Fibo(4) = Fibo(3) + Fibo(2)
Fibo(3) = Fibo(2) + Fibo(1)

Nilai Awal
Konsep Menara Hanoi

A B C
Tiang Asal Tiang Tiang
Bantuan Tujuan
Jika n=1, maka
ke tiang C & selesai. langsun piringan
Pindahkan n-1 piringan yg palingg atas dr tiang A ke tiang
dr tiang
Pindahkan B. pindahk A
ketiang C anterakhir)
piringan ke n (piringan saja dr tiang A
Pindahkan n-1 piringan dari tiang B ke tiang C.
Langkah pemindahan tsb diatas dpt diubah
dengan notasi sbb:

Menara (n,asal,bantu,tujuan)

Utk jml piringan n>1 dpt dibagi menjadi 3 notasi


penyelesaian
Menara (n-1, Asal,Tujuan, Bantu);
Menara (n, Asal, Bantu, Tujuan); atau Asal 
Menara Tujuan; (n-1, Bantu, Asal, Tujuan);
Lanjutan
Ilustrasi diatas menghasilkan 15 langkah
penyelesaian
dari permasalahan konsep menara Hanoi dgn jumlah
piringan sebanyak 4 buah18

Untuk Video konsep menara hanoi dapat dilihat pada:


https://www.mathsisfun.com/games/towerofhanoi.html

Rumus Langkah Pemindahan :


2N - 1

N = Jumlah Piringan

Anda mungkin juga menyukai