Anda di halaman 1dari 7

05/05/2013

1
PERTEMUANII
Pseudocode Convention & Insertion Sort
Algorithm
Pseudocode
Pseudocode dapat dianalogikan
sebagai sebuah blueprint dari
suatu algoritma, yang mana
blueprint tersebut dapat
diterjemahkan ke dalamberbagai
macambahasa pemrograman.
Apa cara lain untuk mengekspresikanAlgoritma?
Tata Cara PenulisanPseudocode
Setiap blok struktur diindikasikandengan identation.
Perulangan dilambangkan dengan kata while atau for
Percabangan dilambangkan dengan kata if
Simbol // melambangkan komentar
Simbol = melambangkan variabel assignment (men-set
nilai variabel)
Array dilambangkan dengan sebuah string atau karakter
dan diakhiri oleh tanda [], contohA[].
Elemen array diakses dengan memanggil nama array dan
diikuti dengan indexnya di dalamkurung siku, contohA[1]
05/05/2013
2
Struktur Percabangan
Percabanganmerupakan salah satu
komponen dasar dari penulisan algoritma
ke dalamsebuah pseudocode. Struktur
penulisanpercabanganadalah sebagai
berikut :
If kondisi
premis
Else
premis
Cont.
Contoh :
If a <5
Tidak lulus
Else
Lulus
Struktur Perulangan
Perulangan dapat ditulis denganwhile
atau for. Bentuk dari perulangan while
adalah sbb :
While kondisi
Premis
Counter
Cont.
Contoh :
While x<5
Do y=y*2
x++
end
05/05/2013
3
Cont.
Bentuk perulangan for adalah sbb :
For i=1 to length A
x=x+2
Insertion Sort
Insertionsortadalah algoritma
yangefisien untuk mensort
angkaangka dalam jumlah
kecil.Angkaangka masukan
diurutkan ditempat (inplace)
PseudocodeInsertion Sort
INSERTION-SORT(A)
1 FOR j = 2 TO length[A]
2 DO key = A[j];
3 //sisipkan A[j] ke deretan yg sudah terurut A[1 .. J-1]
4 i = j 1;
5 WHILE i > 0 dan A[i] > key
6 DO A[i+1] = A[i];
7 i = i 1
END
8 A[i+1] = key
END
KebenaranAlgoritma
Kitamenggunakan loopinvariantuntuk membantu kita
memahami mengapa suatu algoritma bisa dikatakan
benar.
Harus ditunjukkan tiga hal untuk loopinvariant:
1. Initialization:dia benar sebelum iterasi pertama.
2. Maintenance:jika dia benar sebelum iterasi pertama,
maka dia tetap benar sebelum masuk ke iterasi
berikutnya.
3. Termination:ketika loopselesai,loopinvariantakan
memberikan suatu properti yangberguna untuk
membantu menunjukkan bahwa algoritma tersebut
benar.
05/05/2013
4
KebenaranInsertion Sort
Initialization:loopinvariant
berlaku sebelum iterasi loop
pertama,yaitu saat j=2.Sub
arrayA[1..,j1],dengan demikian
terdiri dari hanya satu elemen
A[1],yangsebetulnya merupakan
elemen asal dari A[1](terurut)
Cont.
Maintenance:setiap iterasi loop
invariantselalu terpenuhi.Bagian
utama dari loopFORbekerja dengan
memindahkan A[j1],A[j2],dan
seterusnya satu posisi ke kanan
sampai posisi yangtepat untuk A[j]
ditemukan (baris 47),dimana nilai
A[j]disisipkan (baris 8).
Cont.
Termination:loopakan berakhir saat nilai
jmelebihi panjang A.kita mendapati
bahwa subarrayA[1..n]terdiri dari
elemenelemen yangterdapat diA[1..n],
tapi dengan posisi terurut.Kitatahu,array
A[1..n]adalah arrayAyangutuh (bukan
sebagian).Dengan demikian,arrayA
sudah terurut,yangartinya algoritma
tersebut benar.
Random Access Machine (RAM)
Menganalisis suatu algoritma artinya memprediksi
sumberdaya (waktu komputasi,memori,bandwidth,
dll)yangdibutuhkan algoritma tersebut.
Kebanyakan yangdiukur adalah waktu komputasi.
Sebelum kita mampu menganalisis algoritma,kita
harus memiliki modeldari teknologi implementasinya.
Kitaakan menggunakan sebuah modelkomputasi
RAM(randomaccessmachine)satu prosesor generik
dan mengimplementasi algoritma kita sebagai
programkomputer pada mesin tersebut.
05/05/2013
5
Model RAM
Berisi instruksiinstruksi yangumum digunakan di
komputer yangnyata:
Aritmatika (tambah,kurang,kali,bagi,sisa,floor,
ceiling)
Pemindahan data(load,store,copy)dan
Control(conditionaldan unconditionalbranch,
subroutinecalldan return
Setiap instruksi tersebut memakan jumlah waktu
tertentu yangkonstan.
Mendukung tipetipe data:integerdan floatingpoint.
AnalisaRunning Time Insertion Sort
Runningtimedari suatu algoritma adalah jumlah dari
operasi primitif atau langkahlangkah yangdieksekusi.
Runningtimebergantung pada:
Ukuran masukan (cth.8elemen vs 8000)
Masukan itu sendiri (cth.Sudah terurut atau belum)
Ekspresi matematika untuk runningtimeINSERTION
SORTbisa ditentukan sebagai berikut:
Untuk setiap j=2,3,,n,dimana n=length[A],
anggap t
j
adalah berapa kaliputaran whileloopdi
baris 5dieksekusi untuk nilai jtersebut.
INSERTION-SORT (A) biaya waktu
1 FOR j = 2 TO length[A] c
1
n
2 DO key = A[j]; c
2
n 1
3 //sisipkan A[j] ke array yg sorted
sequence A[1 .. j-1].
0 n 1
4 i = j 1 c
4
n 1
5 WHILE i > 0 and A[i] > key c
5
t
j
6 DO A[i+1] = A[i]; c
6
(t
j
1)
7 i = i 1 END c
7
(t
j
1)
8 A[i+1] = key END c
8
n - 1
Perhitungan
05/05/2013
6
Cont.
Untuk masukanmasukan dengan ukuran
tertentu,runningtimesuatu algoritma
bisa jadi bergantung pada bagaimana
kondisi masukannya.
Kenapa kondisi masukan berpengaruh terhadap running
time algoritma?
Runningtimekasus terbaik :
Sebagai contoh,untuk INSERTIONSORTkasus
terbaik terjadi jika arraymasukannya sudah sorted.
Pada kasus ini,t
j
=1untuk j=2,3,,n.(fungsi
linier)
Running Time Kasus Terburuk
Kasus terburuknya terjadi jika array
masukannya dalam kondisi sortedterbalik.
Pada kasus ini,setiap elemen A[j]harus
dibandingkan dengan semua elemen dari
subarray yangsudah sortedA[1..j1],dan
dengan begitu maka t
j
=juntuk j=2,3,,n.
05/05/2013
7
Cont.
Runningtimekasus terburuk adalah fungsi kuadrat:
Macam-MacamAnalisisAlgoritma
(biasanya) kasus terburuk
T(n)=waktu maksimum untuk setiap ukuran masukan
n.
(kadangkadang) kasus ratarata
T(n)=waktu rataratadari semua ukuran masukan n
(dengan asumsi distribusi statistik masukan)
(tidak pernah) kasus terbaik
Tidak berguna,karena kita bisa mengakali dengan
algoritma lambat yangbekerja cepat untuk beberapa
masukan.
Kuis
Biasanya kita konsentrasi untuk menemukan runningtime
kasus terburuk.Kenapa?
Misal arrayA=[5,3,8,1,2,4,10,9],ilustrasikan operasi
decreasinginsertionsortpada arraytersebut dan tulis
pseudocodenya!
Tugas
Lihat pada kertas yang dibagikan!

Anda mungkin juga menyukai