Kuliah DAA - 03
Kuliah DAA - 03
Pendahuluan
1 2
3 4
5 6
1
9/27/2022
Selection Sort
Sorting (suatu algoritma sorting yang iteratif)
• Misalkan sebuah daftar integer <3, 1, 4, 1, 5, 9, 2, 6, 5 > • Misalkan diberikan sebuah array A = [x1, x2, x3 …, xn]
• Setelah di-sorted • Sorting A secara nondecreasing sehingga ada luaran array
terurut B = [y1, y2, y3, …, yn]
– < 1, 1, 2, 3, 4, 5, 5, 6, 9>
• Dalam proses pengurutan (sorting) terjadi perulangan (iterasi)
• Dalam sorting, tidak hanya mengurutkan nilai-nilainya proses dalam menemukan (select) elemen terkecil sebelum
sehingga yang lebih kecil atau sama telah tersusun menjadi bagian array yang sudah terurut.
mengikuti nilai berikutnya, tetapi juga harus
mempertahankan jumlah kemunculan dari masing-
masing nilai
• Cara mengurutkan bisa membandingkan dua nilai 1 i n
𝑎 ≤ 𝑏 𝑎𝑡𝑎𝑢 𝑙𝑒𝑥𝑖𝑐𝑜𝑔𝑟𝑎𝑝ℎ𝑖𝑐 𝑜𝑟𝑑𝑒𝑟
7 8
9 10
Pembuktian Induktif
Pembuktian sifat-sifat Programs
(inductive Proofs) small := i
2. small := i;
• Buktikan dengan induksi matematika dari
n 3. for j := i+1 to n do
4. if A[j] < A[small]
𝑆𝑛 = Σ 2i = 2n +1 − 1 then j:= i+1
i=0 5. small := j;
Bukti:
• Basis: i = 0 → 𝑆𝑜 = ∑0i=02i = 21 − 1 ↔ 1 = 1 𝑏𝑒𝑛𝑎𝑟 S(k)
• Loop Invariants
• Induksi: andaikan Sn benar, akan dibuktikan bahwa berlaku untuk S(n+1)
• Pada flowcahrt
• Persamaan menjadi𝑆 𝑛 + 1 = ∑n+1 i =1 2 = 2
i n+2
−1 – Pertama, inisilasiasi small ke- i , baris (2)
• Catatan: misalkan Sm=∑mi =02 i = 2 m+1 − 1 j > n? Yes
– Pada permulaan for-loop pada baris (3),
• 𝑗𝑖𝑘𝑎 𝑚 = 𝑛 + 1, 𝑚𝑎𝑘𝑎 ∑ni =0 2 = 2 n +1 +1 − 1 = 2n +2 − 1
+1 i inisialisasi j ke i +1 N
– Kemudian apakah j > n?
• ∑ n+1
i =0 2 i = ∑ ni =02 i + 2 n+1 – Jika No, eksekusi body loop, yang terdiri Loo
dari baris (4) dan (5) p
• ∑in+1
=0 2 = 2
i n+1
− 1 + 2 n+1 (q.e.d) – Pada akhir body, perlu menambah j body
untuk kembali ke test. Baris
j:=j+1(4)
dan
(5)
11 12
2
9/27/2022
Apakah Analysis Algoritma itu? Analisis “Running Time” dari suatu Program
• Analisis dari suatu algoritma adalah proses menentukan
waktu yang efiein yang dibutuhkan oleh suatu algoritma tsb • Psudocode yang digunakan dalam kuliah ini
dalam menyelesaikan sejumlah masalah yang diberikan berbasis pada Bahasa Pemrograman Pascal, C,
Analisis Algoritma bertujuan memeriksa efisiensi
atau C++
algoritma dari dua segi : waktu eksekusi dan
penggunaan memori 1. Running time of Simple Statements
Prinsip pertama,
Efisiensi waktu seberapa cepat algoritma dieksekusi
Pada Pascal assignments: read, write, or goto statement
Efisiensi memori berapa banyak memori yang dibutuhkan untuk
memerlukan O(1) waktu, yakni sejumlah waktu konstan,
menjalankan algoritma
13 14
15 16
ii+1 1x //
tLoop = waktu yang diperlukan untuk
input mengeksekusi loop 1 kali.
if i < n return i 2x // Biasanya ditentukan 1 satuan
perbandingan dan input hasil
waktu tanpa dispesifikasikan
else return -1 Jelaskan algoritma di1x atas
// input
berapa nilainya
17 18
3
9/27/2022
Best case : k ditemukan di elemen 1. Tentukan parameter yang mengindikasikan ukuran input
19 20
21 22
23 24
4
9/27/2022
Step 4 = Tentukan rumus sigma yang menunjukkan Step 4 = Tentukan rumus sigma yang menunjukkan
berapa kali basic operation dieksekusi berapa kali basic operation dieksekusi
Untuk sequential search worst casenya Average case pada sequential search
n
Asumsikan
C(n) = 1
i=1 Data K memang ada di A
Worst case terjadi jika elemen A yang bernilai K Probabilitas K terletak di elemen tertentu A
merupakan elemen terakhir atau tidak ada elemen A terdistribusi merata.
yang bernilai K Probabilitas K terletak di elemen ke i = 1/n
25 26
Step 4 = Tentukan rumus sigma yang menunjukkan Step 4 = Tentukan rumus sigma yang menunjukkan
berapa kali basic operation dieksekusi berapa kali basic operation dieksekusi
Posisi K Banyaknya Probabilitas Kontribusi pada Average case pada sequential search
ditemukan eksekusi basic terjadi C(n)
operation
n
1 1 1/n 1 * 1/n
1
2 2 1/n 2 * 1/n C(n) =
i i * n
… … … … =1
… … … …
n n n N * 1/n
Bentuk umum : i * 1 / n
27 28
Step 5 = Selesaikan rumus sigma yang menunjukkan Step 5 = Selesaikan rumus sigma yang menunjukkan
berapa kali basic operation dieksekusi berapa kali basic operation dieksekusi
Best case untuk sequential search Worst case untuk sequential search
1 n
C (n) = 1 C (n) = 1
i=1 i=1
C(n) = 1 C(n) = n
• Best case pada sequential search C (n) = 1 Worst case pada sequential search C(n) = n
• Untuk input berukuran n, basic operation dilakukan Untuk input berukuran n, basic operation dilakukan
1 kali n kali
29 30
5
9/27/2022
Step 5 = Selesaikan rumus sigma yang menunjukkan Step 5 = Selesaikan rumus sigma yang menunjukkan
berapa kali basic operation dieksekusi berapa kali basic operation dieksekusi
Average case pada sequential search Pada sequential search, average casenya
C (n) =
(n +1)
n
C(n) = 1 2
i i * n
1n
=1
• Untuk n = 10, C(n) = 5,5
C(n) =
n i
i =1
• Apakah itu berarti K berada pada elemen 5 atau 6
• Apa artinya?
C(n) = 1 * 1 n(1+n n)2= 1 (1+ n)
31 32
33 34
Tugas
35