SlideShare a Scribd company logo
Struktur Data & Algoritma
Suryana Setiawan, Ruli Manurung & Ade Azurat
(acknowledgments: Denny)
1
Fasilkom UI
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Pengenalan Analisa Algoritma
2
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
 al•go•rithm
 n.
1 Math. a) any systematic method of solving a certain kind
of problem b) the repetitive calculations used in finding
the greatest common divisor of two numbers (called in
full Euclidean algorithm)
2 Comput. a predetermined set of instructions for solving
a specific problem in a limited number of steps
 Suatu set instruksi yang harus diikuti oleh komputer
untuk memecahkan suatu masalah.
 Program harus berhenti dalam batas waktu yang
wajar (reasonable)
 Tidak terikat pada programming language atau
bahkan paradigma pemrograman (mis. Procedural
vs Object-Oriented)
Algoritma
3
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: Motivasi
 perlu diketahui berapa banyak resource (time
& space) yang diperlukan oleh sebuah
algoritma
 Menggunakan teknik-teknik untuk mengurangi
waktu yang dibutuhkan oleh sebuah algoritma
4
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Tujuan Pengajaran
 Mahasiswa dapat memperkirakan waktu yang
dibutuhkan sebuah algoritma.
 Mahasiswa memahami kerangka matematik
yang menggambarkan running time.
 Mahasiswa mengenali beberapa teknik
sederhana yang dapat memperbaiki running
time.
 Mahasiswa memahami bahwa suatu
permasalahan dapat diselesaikan dengan
beberapa algoritma dengan running time yang
berbeda-beda.
5
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Outline
 Apa itu analisa algoritma?- what
 Bagaimana cara untuk analisa/mengukur? -
how
 Notasi Big-Oh
 Studi kasus: The Maximum Contiguous
Subsequence Sum Problem (Nilai jumlah
berurutan terbesar)
 Algoritma 1: A cubic algorithm
 Algoritma 2: A quadratic algorithm
 Algoritma 3: An N log N algorithm
 Algoritma 4: A linear algorithm
6
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: What?
 Mengukur jumlah sumber daya (time dan
space) yang diperlukan oleh sebuah algoritma
 Waktu yang diperlukan (running time) oleh
sebuah algoritma cenderung tergantung pada
jumlah input yang diproses.
 Running time dari sebuah algoritma adalah fungsi
dari jumlah inputnya
 Selalu tidak terikat pada platform (mesin +
OS), bahasa pemrograman, kualitas
kompilator atau bahkan paradigma
pemrograman (mis. Procedural vs Object-
Oriented)
7
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: How?
 Bagaimana jika kita menggunakan jam?
 Jumlah waktu yang digunakan bervariasi
tergantung pada beberapa faktor lain: kecepatan
mesin, sistem operasi (multi-tasking), kualitas
kompiler, dan bahasa pemrograman.
 Sehingga kurang memberikan gambaran yang
tepat tentang algoritma
Wall-Clock time
CPU time
Process
1:
Process
2:
Process
3:
Idle:
Wall-Clock
time
8
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: how?
 Notasi O (sering disebut sebagai “notasi big-
Oh”)
 Digunakan sebagai bahasa untuk membahas
efisiensi dari sebuah algoritma: log n, linier, n
log n, n2
, n3
, ...
 Dari hasil run-time, dapat kita buat grafik dari
waktu eksekusi dan jumlah data.
9
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
 Contoh: Mencari elemen terkecil dalam
sebuah array
 Algoritma: sequential scan / linear search
 Orde-nya: O(n) – linear
public static int smallest (int a[])
{ assert (length of array > 0);
int elemenTerkecil = a[0];
for (ii = 1; ii < a.length; ii++) {
if (a[ii] < elemenTerkecil) {
elemenTerkecil = a[ii];
}
}
return elemenTerkecil ;
}
Analisa Algoritma: How?
10
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa Algoritma: How?
average case
input size
running
time
n
best case
worst case
11
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big Oh: contoh
 Sebuah fungsi kubik adalah sebuah fungsi
yang suku dominannya (dominant term)
adalah sebuah konstan dikalikan dengan n3
.
 Contoh:
 10 n3
+ n2
+ 40 n + 80
 n3
+ 1000 n2
+ 40 n + 80
 n3
+ 10000
12
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Dominant Term
 Mengapa hanya suku yang memiliki pangkat
tertinggi/dominan saja yang diperhatikan?
 Untuk n yang besar, suku dominan lebih
mengindikasikan perilaku dari algoritma.
 Untuk n yang kecil, suku dominan tidak selalu
mengindikasikan perilakunya, tetapi program
dengan input kecil umumnya berjalan sangat
cepat sehingga kita tidak perlu perhatikan.
13
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big Oh: issues
 Apakah fungsi linier selalu lebih kecil dari fungsi kubik?
 Untuk n yang kecil, bisa saja fungsi linier > fungsi kubik
 Tetapi untuk n yang besar, fungsi kubik > fungsi linier
 Contoh:
• f(n) = 10 n3
+ 20 n + 10
• g(n) = 10000 n + 10000
• n = 10, f(n) = 10.210, g(n) = 110.000
 f(n) < g(n)
• n = 100, f(n) = 10.002.010, g(n) = 1.010.000
 f(n) > g(n)
 Mengapa nilai konstan/koefesien pada setiap suku tidak
diperhatikan?
 Nilai konstan/koefesien tidak berarti pada mesin yang
berbeda
∴ Big Oh digunakan untuk merepresentasikan laju
pertumbuhan (growth rate)
14
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Orde Fungsi Running-Time
Function Name
c Constant
log N Logarithmic
log2
N Log-squared
N Linear
N log N N log N
N2
Quadratic
N3
Cubic
2N
Exponential
N! Factorial
15
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Fungsi Running-Time
 Untuk input yang sedikit, beberapa fungsi
lebih cepat dibandingkan dengan yang lain.
16
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Fungsi Running-Time (2)
 Untuk input yang besar, beberapa fungsi
running-time sangat lambat - tidak berguna.
17
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma
 Mencari dua titik yang memiliki jarak terpendek
dalam sebuah bidang (koordinat X-Y)
Masalah dalam komputer grafis.
Algoritma brute force:
•hitung jarak dari semua pasangan titik
•cari jarak yang terpendek
Jika jumlah titik adalah n, maka jumlah semua
pasangan adalah n * (n - 1) / 2
Orde-nya: O(n2
) - kuadratik
Ada solusi yang O(n log n) bahkan O(n) dengan
cara algoritma lain.
18
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma
 Tentukan apakah ada tiga titik dalam sebuah
bidang yang segaris (colinier).
 Algoritma brute force:
• periksa semua tripel titik yang terdiri dari 3
titik.
 Jumlah pasangan: n * (n - 1) * (n - 2) / 6
 Orde-nya: O(n3
) - kubik. Sangat tidak berguna
untuk 10.000 titik.
 Ada algoritma yang kuadratik.
19
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Studi Kasus
 Mengamati sebuah masalah dengan
beberapa solusi.
 Masalah Maximum Contiguous Subsequence
Sum
 Diberikan (angka integer negatif
dimungkinkan) A1, A2, …, AN, cari nilai
maksimum dari (Ai + Ai+1 + …+ Aj ).
 maximum contiguous subsequence sum
adalah nol jika semua integer adalah negatif.
 Contoh (maximum subsequences
digarisbawahi)
 -2, 11, -4, 13, -4, 2
 1, -3, 4, -2, -1, 6
20
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Brute Force Algorithm (1)
 Algoritma:
 Hitung jumlah dari semua sub-sequence yang
mungkin
 Cari nilai maksimumnya
 Contoh:
 jumlah subsequence (start, end)
• (0, 0), (0,1), (0,2), …, (0,5)
• (1,1), (1,2), …, (1, 5)
• …
• (5,5)
2
-4
13
-4
11
-2
5
4
3
2
1
0
21
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Brute Force Algorithm (2)
public static int maxSubSum1( int [] A )
{
int maxSum = 0;
for(int ii = 0; ii < A.length; ii++) {
for( int jj = ii; jj < A.length; jj++)
{
int thisSum= 0;
for(int kk = ii; kk <= jj; kk++)
thisSum += A[kk];
if( thisSum > maxSum )
maxSum = thisSum;
}
}
return maxSum ;
}
2
-4
13
-4
11
-2
ii jj
22
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
 Iterasi (kk) sebanyak N dalam iterasi (jj)
sebanyak N dalam iterasi (ii) sebanyak N
artinya: O(N3
), atau algoritma kubik.
 Slight over-estimate yang dihasilkan dari
perhitungan iterasi yang kurang dari N adalah
tidak terlalu penting (kk <= jj).
23
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time yang sesungguhnya
 Untuk N = 100, waktu sebenarnya adalah 0.47
detik pada sebuah komputer.
 Dapat menggunakan informasi tersebut, untuk
memperkirakan waktu untuk input yang lebih
besar:
T(N) = cN 3
T(10N) = c(10N)3
= 1000cN 3
= 1000T(N)
 Ukuran input meningkat dengan kelipatan 10 kali,
yang artinya meningkatkan running time dengan
kelipatan 1000 kali.
 Untuk N = 1000, perkiraan waktu 470 detik.
(waktu sebenarnya 449 detik).
 Untuk N = 10,000, perkiraan waktu 449000 detik
(6 hari).
24
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Bagaimana memperbaikinya?
 Membuang sebuah iterasi; Tidak selalu bisa.
 Dalam contoh sebelumnya dimungkinkan: iterasi
paling dalam (kk) tidak diperlukan karena
informasi nya terbuang.
 Nilai thisSum untuk nilai jj selanjutnya dapat
dengan mudah diperoleh dari nilai thisSum yang
sebelumnya:
Yang diperlukan: Aii + A ii+1 + … + A jj-1 + Ajj
Yang telah dihitung: Aii +A ii+1 + …+ A jj-1
Yang dibutuhkan adalah yang telah dihitung + Ajj
Dengan kata lain:
• sum (ii, jj) = sum (ii, jj - 1) + Ajj
25
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
The Better Algorithm
public static int maxSubSum2( int [ ] A )
{
int maxSum = 0;
for( int ii = 0; ii < A.length; ii++ )
{
int thisSum = 0;
for( int jj = ii; jj < A.length; jj++ )
{
thisSum += A[jj];
if( thisSum > maxSum )
maxSum = thisSum;
}
}
return maxSum ;
}
26
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
 Dengan logika yang sama: Saat ini running
time adalah quadratic, or O(N2
)
 Perkirakan waktu eksekusi untuk input
berukuran ribuan. Algoritma ini masih dapat
digunakan untuk ukuran input 10 ribu.
 Ingat, bahwa algoritma kubik sudah tidak
practical lagi bila digunakan untuk ukuran
input tersebut.
27
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Actual running time
 Untuk N = 100, waktu sebenarnya adalah 0.011
detik pada sebuah komputer.
 Perkirakan waktu sebenarnya untuk input lebih
besar:
T(N) = cN 2
T(10N) = c(10N)2
= 100cN 2
= 100T(N)
 Input diperbesar dengan kelipatan 10 artinya
running time akan membesar dengan kelipatan
100.
 Untuk N = 1000, perkiraan running time adalah
1.11 detik. (waktu sebenarnya 1.12 detik).
 Untuk N = 10,000, perkiraan 111 detik (= actual).
28
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Rekursif
 Gunakan pendekatan divide-and-conquer :
 Membagi (divide) permasalahan ke dalam
bagian yang lebih kecil
 Menyelesaikan (conquer) masalah per bagian
secara recursive
 Menggabung penyelesaian per bagian menjadi
solusi masalah awal
29
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Rekursif (2)
 Urutan dengan nilai jumlah terbesar
kemungkinan berada pada:
 terletak di setengah input awal
 terletak di setengah input akhir.
 berawal disetengan input awal dan berakhir di
setengah input akhir.
 Hitung ketiga kemungkinan tersebut. Cari
yang lebih besar.
 Kedua kemungkinan pertama dapat dengan
mudah dihitung secara rekursif.
30
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Menghitung kemungkinan ketiga
 dapat dilakukan dengan dua iterasi; lihat
program
 kemungkinan ketika berasal dari penjumlahan
dua bagian, bagian pertama berawal pada
setengah bagian input pertama berakhir di
tengah. Bagian kedua berasal dari urutan
index setengah +1 hingga setengah bagian
input akhir.
 Untuk bagian pertama gunakan iterasi dari
kanan-ke-kiri (right-to-left) mulai dari element
terakhir pada setengah input awal.
 Untuk bagian kedua, gunakan iterasi dari kiri-
ke-kanan, (left-to-right) mulai dari awal
setengah input akhir.
31
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Ilustrasi
4 -3 5 -2 -1 2 6 -2
4* 0 3 -2 -1 1 7* 5
Tengah-tengah
32
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Versi Rekursif
private int maxSumRec (int[] a, int left, int
right)
{
int center = (left + right) / 2;
if(left == right) { // Base case
return a[left] > 0 ? a[left] : 0;
}
int maxLeftSum = maxSumRec (a, left, center);
int maxRightSum = maxSumRec (a, center+1,
right);
for(int ii = center; ii >= left; ii--) {
leftBorderSum += a[ii];
if(leftBorderSum > maxLeftBorderSum)
maxLeftBorderSum = leftBorderSum;
}
...
33
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Versi Rekursif (lanj.)
...
for(int jj = center + 1; jj <= right; jj++) {
rightBorderSum += a[jj];
if(rightBorderSum > maxRightBorderSum)
maxRightBorderSum = rightBorderSum;
}
return max3 (maxLeftSum, maxRightSum,
maxLeftBorderSum + maxRightBorderSum);
}
// publicly visible routine (a.k.a driver function)
public int maxSubSum (int [] a)
{
return maxSumRec (a, 0, a.length-1);
}
34
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Detil Program
 Pastikan dalam rekursif program anda ada
base case untuk mengatasi zero-element
arrays.
 Gunakan method “driver” yang public
(method rekursif dibuat private)
 Aturan Rekursif :
 Memiliki base case
 Membuat progress menuju ke base case
 Asumsikan bahwa panggilan rekursif bekerja
dengan baik.
 Hindari menghitung sebuah penyelesaian dua
kali.
35
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa
 Misalkan T( N ) adalah waktu untuk
menyelesaikan masalah dengan ukuran
input N.
 maka T( 1 ) = 1 (1 adalah quantum time
unit ketika memproses base case; ingat
konstanta tidak terlalu penting. ).
 T( N ) = 2 T( N / 2 ) + N
 Dua buah pemanggilan rekursif, masing-
masing berukuran N / 2. Waktu yang
dibutuhkan untuk menyelesaikan masing-
masing-nya adalah T( N / 2 )
 Kasus ketiga membutuhkan O( N ) .
36
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Bottom Line
T(1) = 1 = 1 * 1
T(2) = 2 * T(1) + 2 = 4 = 2 * 2
T(4) = 2 * T(2) + 4 = 12 = 4 * 3
T(8) = 2 * T(4) + 8 = 32 = 8 * 4
T(16) = 2 * T(8) + 16 = 80 = 16 * 5
T(32) = 2 * T(16) + 32 = 192 = 32 * 6
T(64) = 2 * T(32) + 64 = 448 = 64 * 7
T(N) = N(1 + log N) = N + N log N = O(N log N)
37
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
N log N
 Setiap algoritma rekursif yang menyelesaikankan
permasalahan dengan membagi dua
permasalahan kemudian melakukan proses linear
(menggabung atau memecah) akan selalu O( N
log N ) karena analisa yang sama tetap berlaku.
 Algoritma yang O( N log N ) adalah jauh lebih
baik dibanding quadratic.
 Tapi masih belum lebih baik dibanding O( N ),
namun tidak terlalu jauh berbeda.
 Untuk permasalahan ini terdapat solusi yang
linear. Menganalisa running time cukup jelas,
namun memeriksa kebenaran program ataupun
menyusun algoritma tersebut tidak mudah .
38
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma linear
 Algoritma Linear merupakan yang terbaik.
 Ingat: linear artinya O( N ).
 Running time yang linear selalu sebanding
dengan ukuran input. Sulit untuk membuat
algoritma yang lebih baik dari linear (kecuali
ada rumusan tertentu).
 Jika input membesar dengan kelipatan 10,
maka running time juga hanya akan
membesar dengan kelipatan yang sama.
39
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Ide
 Ai,j adalah kumpulan bilangan mulai dari
urutan i hingga urutan j.
 Si,j adalah dari kumpulan bilangan tersebut.
 Theorema: Untuk Ai,j dengan Si,j < 0. Jika q >
j, maka Ai,q bukanlah deretan terurut yang
terbesar.
40
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Bukti Theorema
 Bukti:
 Si,q = Si,j + Sj+1,q
 Si,j < 0  Si,q < Sj+1,q
41
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Program – versi 1
static public int
maximumSubSequenceSum3 (int a[])
{
int maxSum = 0;
int thisSum = 0;
for (int jj = 0; jj < a.length; jj++) {
thisSum += a[jj];
if (thisSum > maxSum) {
maxSum = thisSum;
} else if (thisSum < 0) {
thisSum = 0;
}
}
return maxSum;
}
42
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Program – versi 2
static public int
maximumSubSequenceSum3b (int a[])
{
int thisSum = 0, maxSum = 0;
for (int ii = 0; ii < a.length; ii++) {
thisSum = Max(0, a[ii] + thisSum);
maxSum = Max(thisSum, maxSum);
}
return maxSum;
}
43
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time
44
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time: on different machines
 Algoritma Kubik pada mesin Alpha 21164 at 533 Mhz
menggunakan C compiler (mewakili mesin yang cepat)
 Algoritma Linear pada mesin Radio Shack TRS-80 Model III
(a 1980 personal computer with a Z-80 processor running at
2.03 Mhz) using interpreted Basic (mewakili mesin lambat)
n Alpha
21164A,
C compiled,
Cubic
Algorithm
TRS-80,
Basic interpreted,
Linear Algorithm
10 0.6 microsecs 200 milisecs
100 0.6 milisecs 2.0 secs
1,000 0.6 secs 20 secs
10,000 10 mins 3.2 mins
100,000 7 days 32 mins
1,000,000 19 yrs 5.4 hrs
45
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Running Time: Moral Of The Story
 Bahkan teknik programming yang terbaik tak
akan dapat membuat sebuah algoritma yang
tidak efisien menjadi cepat.
 Sebelum kita menginvestasikan waktu untuk
mencoba mengoptimisasi program, kita harus
pastikan algoritma nya sudah yang paling
efisien.
46
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Algoritma Logaritme
 Definisi Formal
 Untuk setiap B, N > 0, logB N = K, if B K
= N.
 Jika (base) B diabaikan, maka default-nya
adalah 2 dalam konteks ilmu komputer (binary
representation).
 Contoh:
 log 32 = 5 (karena 25
= 32)
 log 1024 = 10
 log 1048576 = 20
 log 1 milyard = sekitar 30
 logaritme berkembang jauh lebih lambat dari
N dan lebih lambat dari akar kuadrat dari N.
47
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Contoh Algoritma Logaritme
 BITS IN A BINARY NUMBER
 Berapa banyak bits dibutuhkan untuk
merepresentasikan bilangan bulat?
 REPEATED DOUBLING
 Mulai dari X = 1, berapa kali X harus dikalikan
dua agar mendekati nilai N?
 REPEATED HALVING
 Mulai dari X = N, jika N dibagi dua terus
menerus, berapa kali iterasi agar membuat N
lebih kecil atau sama dengan 1 (Halving rounds
up).
 Jawaban untuk seluruh pertanyaan diatas
adalah:
log N (dibulatkan).
48
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Mengapa log N?
 B bits menyatakan 2B
bilangan bulat. Maka 2B
adalah minimal sebesar N, maka B adalah
minimal log N. Karena B bilangan bulat, maka
pembulatan dibutuhkan.
 Pendekatan serupa untuk contoh-contoh lain.
49
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Repeated Halving Principle
 Sebuah algoritma adalah O( log N ) jika
membutuhkan waktu konstan untuk membagi
input permasalahan dan mengerjakan masing-
masing-nya secara rekursif. (biasanya 1/2).
 Penjelasan: Akan terjadi sebanyak log N dari
proses konstan tersebut.
50
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Linear Search
 Bila diberikan sebuah bilangan bulat X dan sebuah
array A, kembalikan posisi X dalam A atau sebuah
tanda bila tidak ada X dalam A. Jika X muncul lebih dari
sekali, kembalikan posisi manapun. Array A tidak perlu
diubah.
 Jika array input tidak terurut, solusinya adalah
menggunakan linear search. Running times:
 pencarian tidak berhasil: O( N ); setiap element
diperiksa
 pencarian berhasil:
• Worst case: O( N ); setiap element diperiksa
• Average case: O( N ); setengah bagian diperiksa
 Apakah kita akan dapat melakukannya lebih baik bila
diketahui array input terurut?
51
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Binary Search
 Ya! Gunakan binary search.
 Lihat bilangan ditengah (asumsi array terurut dari kiri
ke kanan)
 Kasus 1: Jika X lebih kecil dari bilangan ditengah,
maka hanya perlu lihat sub array bagian kiri.
 Kasus 2: Jika X lebih besar dari bilangan ditengah,
maka hanya perlu lihat sub array bagian kanan
 Kasus 3: Jika X sama dengan bilangan ditengah,
maka selesai.
 Base Case: Jika input sub array kosong, X tidak
ditemukan.
 Logaritme sesuai dengan the repeated halving
principle.
 Algoritma binary search pertama dipublikasikan tahun
1946. Published binary search pertama tanpa bugs
tidak muncul hingga 1962.
52
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
/**
Performs the standard binary search using two comparisons per
level.
@param a the array
@param x the key
@exception ItemNotFound if appropriate.
@return index where item is found.
*/
public static int binarySearch (Comparable [ ] a,
Comparable x ) throws ItemNotFound
{
int low = 0;
int high = a.length - 1;
int mid;
while( low <= high )
{
mid = (low + high) / 2;
if (a[mid].compareTo (x) < 0) {
low = mid + 1;
} else if (a[mid].compareTo (x) > 0) {
high = mid - 1;
} else {
return mid;
}
}
throw new ItemNotFound( "BinarySearch fails" );
}
53
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Analisa program Binary Search
 Dapat melakukan satu perbandingan tiap
iterasi dari pada dua iterasi dengan cara
menggantikan base case:
 Save the value returned by a[mid].compareTo
(x)
 Average case dan worst case dalam
algoritma hasil revisi adalah sama : 1 + log N
perbandingan (dibulatkan). Contoh: If N =
1,000,000, maka 20 bilangan dibandingkan.
 Sequential search akan lebih banyak 25,000
kali dalam kondisi rata-rata (average case).
54
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big-Oh Rules (1)
 Ekspresi matematika untuk menyatakan tingkat laju
pertumbuhan relatif:
 DEFINITION: (Big-Oh) T(N) = O(F(N)) jika ada
konstan positif c dan N0 sehingga T(N) ≤ c F(N)
untuk N ≥ N0.
 DEFINITION: (Big-Omega) T(N) = Ω (F(N)) jika ada
konstan c dan N0 sehingga T(N) ≥ c F(N) untuk N
≥ N0
 DEFINITION: (Big-Theta) T(N) = Θ (F(N)) jika dan
hanya jika T(N) = O(F(N)) dan T(N) = Ω (F(N)).
 DEFINITION: (Little-Oh) T(N) = o(F(N)) jika dan
hanya jika T(N) = O(F(N)) dan T(N) ≠ Θ (F(N)).
55
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Big-Oh Rules (2)
 Arti dari beberapa fungsi tingkat laju.(diambil dari Weiss 2006)
 Jika ada lebih dari satu parameter, maka aturan tersebut
berlaku untuk setiap parameter.
 4 n log(m) + 50 n2
+ 500 m + 1853
 O(n log(m) + n2
+ m)
 4 m log(m) + 50 n2
+ 500 m + 853
 O(m log(m) + n2
)
56
SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010
Latihan
 Urutkan fungsi berikut berdasarkan laju
pertumbuhan (growth rate)
 N, √N, N1.5
, N2
, N log N, N log log N, N log2
N, N
log (N2
), 2/N, 2N
, 2N/2
, 37, N3
, N2
log N
 A5
+ B5
+ C5
+ D5
+ E5
= F5
 0 < A ≤ B ≤ C ≤ D ≤ E ≤ F ≤ 75
 Rancang algoritmanya.
 Apakah algoritm tersebut sudah efisien?

More Related Content

What's hot

Bab 12-kode-huffman
Bab 12-kode-huffmanBab 12-kode-huffman
Bab 12-kode-huffman
Hendriyawan Achmad
 
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas AlgoritmaAnalisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Adam Mukharil Bachtiar
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
Asep Jaenudin
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
Rakhmi Khalida, M.M.S.I
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
ahmad haidaroh
 
Pohon(tree) matematika diskrit
Pohon(tree) matematika diskritPohon(tree) matematika diskrit
Pohon(tree) matematika diskrit
said zulhelmi
 
Analisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi AsimptotikAnalisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi Asimptotik
Adam Mukharil Bachtiar
 
Aritmatika penjumlahan dan pengurangan bilangan biner presentasi
Aritmatika penjumlahan dan pengurangan bilangan biner presentasiAritmatika penjumlahan dan pengurangan bilangan biner presentasi
Aritmatika penjumlahan dan pengurangan bilangan biner presentasi
taki92
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Ari Septiawan
 
Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasi
daru2501
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
Kelinci Coklat
 
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Menyederhanakan fungsi boolean dengan menggunakan metode quin1Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
BAIDILAH Baidilah
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuan
ahmad haidaroh
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyZaenal Khayat
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
Kelinci Coklat
 
Aplikasi loop
Aplikasi loop Aplikasi loop
Aplikasi loop
Fazar Ikhwan Guntara
 
Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02
KuliahKita
 
2. galat
2. galat2. galat
Relasi dan fungsi - matematika diskrit
Relasi dan fungsi - matematika diskritRelasi dan fungsi - matematika diskrit
Relasi dan fungsi - matematika diskrit
haqiemisme
 

What's hot (20)

Bab 12-kode-huffman
Bab 12-kode-huffmanBab 12-kode-huffman
Bab 12-kode-huffman
 
Analisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas AlgoritmaAnalisis Algoritma - Pengantar Kompleksitas Algoritma
Analisis Algoritma - Pengantar Kompleksitas Algoritma
 
Tugas mandiri struktur data
Tugas mandiri struktur dataTugas mandiri struktur data
Tugas mandiri struktur data
 
Algoritma penjadwalan proses
Algoritma penjadwalan prosesAlgoritma penjadwalan proses
Algoritma penjadwalan proses
 
Materi 3 Finite State Automata
Materi 3   Finite State AutomataMateri 3   Finite State Automata
Materi 3 Finite State Automata
 
Pohon(tree) matematika diskrit
Pohon(tree) matematika diskritPohon(tree) matematika diskrit
Pohon(tree) matematika diskrit
 
Analisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi AsimptotikAnalisis Algoritma - Notasi Asimptotik
Analisis Algoritma - Notasi Asimptotik
 
Aritmatika penjumlahan dan pengurangan bilangan biner presentasi
Aritmatika penjumlahan dan pengurangan bilangan biner presentasiAritmatika penjumlahan dan pengurangan bilangan biner presentasi
Aritmatika penjumlahan dan pengurangan bilangan biner presentasi
 
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan AlgoritmaAlgoritma Pemrograman (Flowchart) - Logika dan Algoritma
Algoritma Pemrograman (Flowchart) - Logika dan Algoritma
 
Organisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasiOrganisasi Komputer- representasi informasi
Organisasi Komputer- representasi informasi
 
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
4.1 Operasi Dasar Singly Linked List  1 (primitive list)4.1 Operasi Dasar Singly Linked List  1 (primitive list)
4.1 Operasi Dasar Singly Linked List 1 (primitive list)
 
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Menyederhanakan fungsi boolean dengan menggunakan metode quin1Menyederhanakan fungsi boolean dengan menggunakan metode quin1
Menyederhanakan fungsi boolean dengan menggunakan metode quin1
 
Modul 4 representasi pengetahuan
Modul 4   representasi pengetahuanModul 4   representasi pengetahuan
Modul 4 representasi pengetahuan
 
Contoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzyContoh peyelesaian logika fuzzy
Contoh peyelesaian logika fuzzy
 
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur1. Algoritma, Struktur Data dan Pemrograman Terstruktur
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
 
Aplikasi loop
Aplikasi loop Aplikasi loop
Aplikasi loop
 
Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02Matematika Diskrit - 10 pohon - 02
Matematika Diskrit - 10 pohon - 02
 
2. galat
2. galat2. galat
2. galat
 
Relasi dan fungsi - matematika diskrit
Relasi dan fungsi - matematika diskritRelasi dan fungsi - matematika diskrit
Relasi dan fungsi - matematika diskrit
 
Jaringan perceptron
Jaringan perceptronJaringan perceptron
Jaringan perceptron
 

Similar to Big O - Analisa Algoritma

10 tree
10 tree10 tree
Pengambilan keputusan dalam kondisi pasti
Pengambilan keputusan dalam kondisi pastiPengambilan keputusan dalam kondisi pasti
Pengambilan keputusan dalam kondisi pasti
indra wahyudi
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
Braga Rezpect
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5
Rumah Belajar
 
EFFICIENCY & Complexity.pptx
EFFICIENCY & Complexity.pptxEFFICIENCY & Complexity.pptx
EFFICIENCY & Complexity.pptx
nurnur469094
 
Materi 2 Kompleksitas Waktu dan Ruang (2).pdf
Materi 2 Kompleksitas Waktu dan Ruang (2).pdfMateri 2 Kompleksitas Waktu dan Ruang (2).pdf
Materi 2 Kompleksitas Waktu dan Ruang (2).pdf
AnandaPrasta
 
Simulasi - Pertemuan III
Simulasi - Pertemuan IIISimulasi - Pertemuan III
Simulasi - Pertemuan IIIDimara Hakim
 
1. management science
1. management science1. management science
1. management science
Nadia Rahmatul Ummah
 
7. line balancing
7. line balancing7. line balancing
7. line balancing
Diery Sipayung
 
Pengantar Ekonomika 5.pdf
Pengantar Ekonomika 5.pdfPengantar Ekonomika 5.pdf
Pengantar Ekonomika 5.pdf
Niko Rakhmatdian
 
13. Konsep Penelitian Operasional
13. Konsep Penelitian Operasional13. Konsep Penelitian Operasional
13. Konsep Penelitian Operasional
Mercu Buana University
 
Modul1 metode bagi dua Praktikum Metode Numerik
Modul1 metode bagi dua Praktikum Metode NumerikModul1 metode bagi dua Praktikum Metode Numerik
Modul1 metode bagi dua Praktikum Metode Numerik
James Montolalu
 
sp243-061043-959-1.ppt
sp243-061043-959-1.pptsp243-061043-959-1.ppt
sp243-061043-959-1.ppt
ImamSyaifudin16
 
Materi Seminar.pdf
Materi Seminar.pdfMateri Seminar.pdf
Materi Seminar.pdf
MDevidAlamCarnegie
 
APK-4-Interaksi-Manusia-Mesin.pptx
APK-4-Interaksi-Manusia-Mesin.pptxAPK-4-Interaksi-Manusia-Mesin.pptx
APK-4-Interaksi-Manusia-Mesin.pptx
ssuserf0e83c1
 
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdfMATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
IndahPuspitaMaharani1
 
Tutorial iii jawaban no3
Tutorial iii jawaban no3Tutorial iii jawaban no3
Tutorial iii jawaban no3
Muhammad Mishbah
 
Diktat MatLab
Diktat MatLabDiktat MatLab
Diktat MatLab
Rahman Hakim
 

Similar to Big O - Analisa Algoritma (20)

10 tree
10 tree10 tree
10 tree
 
Pengambilan keputusan dalam kondisi pasti
Pengambilan keputusan dalam kondisi pastiPengambilan keputusan dalam kondisi pasti
Pengambilan keputusan dalam kondisi pasti
 
Dasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliahDasar Pemrograman materi kuliah
Dasar Pemrograman materi kuliah
 
Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5Mikrokontroler pertemuan 5
Mikrokontroler pertemuan 5
 
EFFICIENCY & Complexity.pptx
EFFICIENCY & Complexity.pptxEFFICIENCY & Complexity.pptx
EFFICIENCY & Complexity.pptx
 
Materi 2 Kompleksitas Waktu dan Ruang (2).pdf
Materi 2 Kompleksitas Waktu dan Ruang (2).pdfMateri 2 Kompleksitas Waktu dan Ruang (2).pdf
Materi 2 Kompleksitas Waktu dan Ruang (2).pdf
 
06 sorting
06 sorting06 sorting
06 sorting
 
Simulasi - Pertemuan III
Simulasi - Pertemuan IIISimulasi - Pertemuan III
Simulasi - Pertemuan III
 
1. management science
1. management science1. management science
1. management science
 
7. line balancing
7. line balancing7. line balancing
7. line balancing
 
Pengantar Ekonomika 5.pdf
Pengantar Ekonomika 5.pdfPengantar Ekonomika 5.pdf
Pengantar Ekonomika 5.pdf
 
13. Konsep Penelitian Operasional
13. Konsep Penelitian Operasional13. Konsep Penelitian Operasional
13. Konsep Penelitian Operasional
 
Modul1 metode bagi dua Praktikum Metode Numerik
Modul1 metode bagi dua Praktikum Metode NumerikModul1 metode bagi dua Praktikum Metode Numerik
Modul1 metode bagi dua Praktikum Metode Numerik
 
sp243-061043-959-1.ppt
sp243-061043-959-1.pptsp243-061043-959-1.ppt
sp243-061043-959-1.ppt
 
Floating
FloatingFloating
Floating
 
Materi Seminar.pdf
Materi Seminar.pdfMateri Seminar.pdf
Materi Seminar.pdf
 
APK-4-Interaksi-Manusia-Mesin.pptx
APK-4-Interaksi-Manusia-Mesin.pptxAPK-4-Interaksi-Manusia-Mesin.pptx
APK-4-Interaksi-Manusia-Mesin.pptx
 
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdfMATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
MATERI EKONOMI MANAJERIAL: TEORI DAN ESTIMASI BIAYA.pdf
 
Tutorial iii jawaban no3
Tutorial iii jawaban no3Tutorial iii jawaban no3
Tutorial iii jawaban no3
 
Diktat MatLab
Diktat MatLabDiktat MatLab
Diktat MatLab
 

More from Fajar Baskoro

Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
Fajar Baskoro
 
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdfPemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Fajar Baskoro
 
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptxSkills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Fajar Baskoro
 
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptxSlides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Fajar Baskoro
 
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptxPPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
Fajar Baskoro
 
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptxPPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
Fajar Baskoro
 
RIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptxRIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptx
Fajar Baskoro
 
Pengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSKPengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSK
Fajar Baskoro
 
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
Fajar Baskoro
 
Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
Fajar Baskoro
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
Fajar Baskoro
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
Fajar Baskoro
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
Fajar Baskoro
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Fajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Fajar Baskoro
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
Fajar Baskoro
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
Fajar Baskoro
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
Fajar Baskoro
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
Fajar Baskoro
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
Fajar Baskoro
 

More from Fajar Baskoro (20)

Pengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptxPengantar Penggunaan Flutter - Dart programming language1.pptx
Pengantar Penggunaan Flutter - Dart programming language1.pptx
 
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdfPemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
Pemberdayaan Kelompok Usaha Siswa dengan Tools Wirausaha AI.pdf
 
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptxSkills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
Skills for The Future - Pemberdayaan Remaja Untuk Meningkatkan Keterampilan.pptx
 
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptxSlides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
Slides OOSC - Program Penanganan ATS Unicef Bappeda Jawa Timur.pptx
 
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptxPPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
PPT- Menyiapkan GenerasiTerampilDigitalSkill1.pptx
 
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptxPPT-Menyiapkan Alumni GenerasiTerampil.pptx
PPT-Menyiapkan Alumni GenerasiTerampil.pptx
 
RIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptxRIngkasan Program - Markoding Innovation Challenge.pptx
RIngkasan Program - Markoding Innovation Challenge.pptx
 
Pengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSKPengembangan Program Pelatihan Double Track - DT PLUSK
Pengembangan Program Pelatihan Double Track - DT PLUSK
 
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
DT-PLUSK Pengembangan SMA Double Track Tahun ke 5
 
Generasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptxGenerasi Terampil Digital Skill-2023.pptx
Generasi Terampil Digital Skill-2023.pptx
 
Cara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarterCara Membuat Kursus Online Wordpress-tutorstarter
Cara Membuat Kursus Online Wordpress-tutorstarter
 
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival RamadhanPPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
PPT-Kick Off Double Track 2024 melaksanakan Festival Ramadhan
 
Buku Inovasi 2023 - 2024 konsep capaian KUS
Buku Inovasi 2023 - 2024 konsep capaian  KUSBuku Inovasi 2023 - 2024 konsep capaian  KUS
Buku Inovasi 2023 - 2024 konsep capaian KUS
 
Pemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptxPemaparan Sosialisasi Program Dual Track 2024.pptx
Pemaparan Sosialisasi Program Dual Track 2024.pptx
 
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
Executive Millennial Entrepreneur Award  2023-1a-1.pdfExecutive Millennial Entrepreneur Award  2023-1a-1.pdf
Executive Millennial Entrepreneur Award 2023-1a-1.pdf
 
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx1-Executive Millennial Entrepreneur Award  2023-1-cetak.pptx
1-Executive Millennial Entrepreneur Award 2023-1-cetak.pptx
 
Executive Millennial Entrepreneur Award 2023-1.pptx
Executive Millennial Entrepreneur Award  2023-1.pptxExecutive Millennial Entrepreneur Award  2023-1.pptx
Executive Millennial Entrepreneur Award 2023-1.pptx
 
Pemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptxPemrograman Mobile - JetPack Compose1.pptx
Pemrograman Mobile - JetPack Compose1.pptx
 
Evaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi KaltimEvaluasi KPP Program Dual Track Provinsi Kaltim
Evaluasi KPP Program Dual Track Provinsi Kaltim
 
foto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolahfoto tenda digital skill program dari sekolah
foto tenda digital skill program dari sekolah
 

Recently uploaded

peluang kejadian total dan kaidah nbayes
peluang kejadian total dan kaidah nbayespeluang kejadian total dan kaidah nbayes
peluang kejadian total dan kaidah nbayes
ayyurah2004
 
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
Fathan Emran
 
laporan komunitas belajar sekolah dasar negeri botoputih
laporan komunitas belajar sekolah dasar negeri botoputihlaporan komunitas belajar sekolah dasar negeri botoputih
laporan komunitas belajar sekolah dasar negeri botoputih
SDNBotoputih
 
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdfDemonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
d2spdpnd9185
 
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdfAKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
opkcibungbulang
 
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
Kanaidi ken
 
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdfPanduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
MildayantiMildayanti
 
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG  MENGUKUR KEANEKARAGAMAN JENIS FLORA D...LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG  MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
HengkiRisman
 
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptxPembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
Sosdiklihparmassdm
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdfRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
OswaldusDiwaDoka
 
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
Arumdwikinasih
 
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Kanaidi ken
 
Koneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan marthaKoneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan martha
johan199969
 
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARUAKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
junaedikuluri1
 
Lembar Kerja Asesmen Awal Paud ke sd.pptx
Lembar Kerja Asesmen Awal Paud ke sd.pptxLembar Kerja Asesmen Awal Paud ke sd.pptx
Lembar Kerja Asesmen Awal Paud ke sd.pptx
opkcibungbulang
 
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan Regulasi Terbaru P...
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan  Regulasi  Terbaru P...PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan  Regulasi  Terbaru P...
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan Regulasi Terbaru P...
Kanaidi ken
 
Tugas Refleksi Dwi Mingguan Modul 1.4.pdf
Tugas Refleksi Dwi Mingguan Modul 1.4.pdfTugas Refleksi Dwi Mingguan Modul 1.4.pdf
Tugas Refleksi Dwi Mingguan Modul 1.4.pdf
Thahir9
 
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
Sathya Risma
 
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdfRangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
mad ros
 
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Fathan Emran
 

Recently uploaded (20)

peluang kejadian total dan kaidah nbayes
peluang kejadian total dan kaidah nbayespeluang kejadian total dan kaidah nbayes
peluang kejadian total dan kaidah nbayes
 
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum MerdekaModul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
Modul Ajar Bahasa Inggris Kelas 10 Fase E Kurikulum Merdeka
 
laporan komunitas belajar sekolah dasar negeri botoputih
laporan komunitas belajar sekolah dasar negeri botoputihlaporan komunitas belajar sekolah dasar negeri botoputih
laporan komunitas belajar sekolah dasar negeri botoputih
 
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdfDemonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
Demonstrasi Konseptual Modul 2.1 - RPP Berdiferensiasi.pdf
 
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdfAKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
AKSI NYATA PENDIDIKAN INKLUSIF_Baedlawi.pdf
 
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
PELAKSANAAN (13-14 Juni'24) + Link2 Materi BimTek _"PTK 007 Rev-5 Thn 2023 (P...
 
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdfPanduan Penggunaan Rekomendasi Buku Sastra.pdf
Panduan Penggunaan Rekomendasi Buku Sastra.pdf
 
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG  MENGUKUR KEANEKARAGAMAN JENIS FLORA D...LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG  MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
LAPORAN PRAKTIKUM EKOLOGI UMUM TENTANG MENGUKUR KEANEKARAGAMAN JENIS FLORA D...
 
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptxPembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
Pembentukan-Pantarlih-Pilkada-Kabupaten-Tapin.pptx
 
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdfRANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
RANCANGAN TINDAKAN AKSI NYATA MODUL 1.4.pdf.pdf
 
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
PPT RENCANA AKSI 2 modul ajar matematika berdiferensiasi kelas 1
 
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28  Juni 2024
Workshop "CSR & Community Development (ISO 26000)"_di BALI, 26-28 Juni 2024
 
Koneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan marthaKoneksi Antar Materi modul 2.1.pptx Johan martha
Koneksi Antar Materi modul 2.1.pptx Johan martha
 
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARUAKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
AKSI NYATA TRANSISI PAUD-SD : PENGUATAN DI TAHUN AJARAN BARU
 
Lembar Kerja Asesmen Awal Paud ke sd.pptx
Lembar Kerja Asesmen Awal Paud ke sd.pptxLembar Kerja Asesmen Awal Paud ke sd.pptx
Lembar Kerja Asesmen Awal Paud ke sd.pptx
 
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan Regulasi Terbaru P...
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan  Regulasi  Terbaru P...PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan  Regulasi  Terbaru P...
PELAKSANAAN + Link2 Materi WORKSHOP Nasional _"Penerapan Regulasi Terbaru P...
 
Tugas Refleksi Dwi Mingguan Modul 1.4.pdf
Tugas Refleksi Dwi Mingguan Modul 1.4.pdfTugas Refleksi Dwi Mingguan Modul 1.4.pdf
Tugas Refleksi Dwi Mingguan Modul 1.4.pdf
 
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
Laporan bulanan Dosen Pembimbing lapangan dalam pelaksanaan kampus mengajar a...
 
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdfRangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
Rangkuman Kehadiran Guru di Kelas- www.kherysuryawan.id.pdf
 
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum MerdekaModul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
Modul Ajar Matematika Kelas 11 Fase F Kurikulum Merdeka
 

Big O - Analisa Algoritma

  • 1. Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) 1 Fasilkom UI SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Pengenalan Analisa Algoritma
  • 2. 2 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010  al•go•rithm  n. 1 Math. a) any systematic method of solving a certain kind of problem b) the repetitive calculations used in finding the greatest common divisor of two numbers (called in full Euclidean algorithm) 2 Comput. a predetermined set of instructions for solving a specific problem in a limited number of steps  Suatu set instruksi yang harus diikuti oleh komputer untuk memecahkan suatu masalah.  Program harus berhenti dalam batas waktu yang wajar (reasonable)  Tidak terikat pada programming language atau bahkan paradigma pemrograman (mis. Procedural vs Object-Oriented) Algoritma
  • 3. 3 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa Algoritma: Motivasi  perlu diketahui berapa banyak resource (time & space) yang diperlukan oleh sebuah algoritma  Menggunakan teknik-teknik untuk mengurangi waktu yang dibutuhkan oleh sebuah algoritma
  • 4. 4 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Tujuan Pengajaran  Mahasiswa dapat memperkirakan waktu yang dibutuhkan sebuah algoritma.  Mahasiswa memahami kerangka matematik yang menggambarkan running time.  Mahasiswa mengenali beberapa teknik sederhana yang dapat memperbaiki running time.  Mahasiswa memahami bahwa suatu permasalahan dapat diselesaikan dengan beberapa algoritma dengan running time yang berbeda-beda.
  • 5. 5 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Outline  Apa itu analisa algoritma?- what  Bagaimana cara untuk analisa/mengukur? - how  Notasi Big-Oh  Studi kasus: The Maximum Contiguous Subsequence Sum Problem (Nilai jumlah berurutan terbesar)  Algoritma 1: A cubic algorithm  Algoritma 2: A quadratic algorithm  Algoritma 3: An N log N algorithm  Algoritma 4: A linear algorithm
  • 6. 6 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa Algoritma: What?  Mengukur jumlah sumber daya (time dan space) yang diperlukan oleh sebuah algoritma  Waktu yang diperlukan (running time) oleh sebuah algoritma cenderung tergantung pada jumlah input yang diproses.  Running time dari sebuah algoritma adalah fungsi dari jumlah inputnya  Selalu tidak terikat pada platform (mesin + OS), bahasa pemrograman, kualitas kompilator atau bahkan paradigma pemrograman (mis. Procedural vs Object- Oriented)
  • 7. 7 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa Algoritma: How?  Bagaimana jika kita menggunakan jam?  Jumlah waktu yang digunakan bervariasi tergantung pada beberapa faktor lain: kecepatan mesin, sistem operasi (multi-tasking), kualitas kompiler, dan bahasa pemrograman.  Sehingga kurang memberikan gambaran yang tepat tentang algoritma Wall-Clock time CPU time Process 1: Process 2: Process 3: Idle: Wall-Clock time
  • 8. 8 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa Algoritma: how?  Notasi O (sering disebut sebagai “notasi big- Oh”)  Digunakan sebagai bahasa untuk membahas efisiensi dari sebuah algoritma: log n, linier, n log n, n2 , n3 , ...  Dari hasil run-time, dapat kita buat grafik dari waktu eksekusi dan jumlah data.
  • 9. 9 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010  Contoh: Mencari elemen terkecil dalam sebuah array  Algoritma: sequential scan / linear search  Orde-nya: O(n) – linear public static int smallest (int a[]) { assert (length of array > 0); int elemenTerkecil = a[0]; for (ii = 1; ii < a.length; ii++) { if (a[ii] < elemenTerkecil) { elemenTerkecil = a[ii]; } } return elemenTerkecil ; } Analisa Algoritma: How?
  • 10. 10 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa Algoritma: How? average case input size running time n best case worst case
  • 11. 11 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Big Oh: contoh  Sebuah fungsi kubik adalah sebuah fungsi yang suku dominannya (dominant term) adalah sebuah konstan dikalikan dengan n3 .  Contoh:  10 n3 + n2 + 40 n + 80  n3 + 1000 n2 + 40 n + 80  n3 + 10000
  • 12. 12 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Dominant Term  Mengapa hanya suku yang memiliki pangkat tertinggi/dominan saja yang diperhatikan?  Untuk n yang besar, suku dominan lebih mengindikasikan perilaku dari algoritma.  Untuk n yang kecil, suku dominan tidak selalu mengindikasikan perilakunya, tetapi program dengan input kecil umumnya berjalan sangat cepat sehingga kita tidak perlu perhatikan.
  • 13. 13 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Big Oh: issues  Apakah fungsi linier selalu lebih kecil dari fungsi kubik?  Untuk n yang kecil, bisa saja fungsi linier > fungsi kubik  Tetapi untuk n yang besar, fungsi kubik > fungsi linier  Contoh: • f(n) = 10 n3 + 20 n + 10 • g(n) = 10000 n + 10000 • n = 10, f(n) = 10.210, g(n) = 110.000  f(n) < g(n) • n = 100, f(n) = 10.002.010, g(n) = 1.010.000  f(n) > g(n)  Mengapa nilai konstan/koefesien pada setiap suku tidak diperhatikan?  Nilai konstan/koefesien tidak berarti pada mesin yang berbeda ∴ Big Oh digunakan untuk merepresentasikan laju pertumbuhan (growth rate)
  • 14. 14 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Orde Fungsi Running-Time Function Name c Constant log N Logarithmic log2 N Log-squared N Linear N log N N log N N2 Quadratic N3 Cubic 2N Exponential N! Factorial
  • 15. 15 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Fungsi Running-Time  Untuk input yang sedikit, beberapa fungsi lebih cepat dibandingkan dengan yang lain.
  • 16. 16 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Fungsi Running-Time (2)  Untuk input yang besar, beberapa fungsi running-time sangat lambat - tidak berguna.
  • 17. 17 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Contoh Algoritma  Mencari dua titik yang memiliki jarak terpendek dalam sebuah bidang (koordinat X-Y) Masalah dalam komputer grafis. Algoritma brute force: •hitung jarak dari semua pasangan titik •cari jarak yang terpendek Jika jumlah titik adalah n, maka jumlah semua pasangan adalah n * (n - 1) / 2 Orde-nya: O(n2 ) - kuadratik Ada solusi yang O(n log n) bahkan O(n) dengan cara algoritma lain.
  • 18. 18 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Contoh Algoritma  Tentukan apakah ada tiga titik dalam sebuah bidang yang segaris (colinier).  Algoritma brute force: • periksa semua tripel titik yang terdiri dari 3 titik.  Jumlah pasangan: n * (n - 1) * (n - 2) / 6  Orde-nya: O(n3 ) - kubik. Sangat tidak berguna untuk 10.000 titik.  Ada algoritma yang kuadratik.
  • 19. 19 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Studi Kasus  Mengamati sebuah masalah dengan beberapa solusi.  Masalah Maximum Contiguous Subsequence Sum  Diberikan (angka integer negatif dimungkinkan) A1, A2, …, AN, cari nilai maksimum dari (Ai + Ai+1 + …+ Aj ).  maximum contiguous subsequence sum adalah nol jika semua integer adalah negatif.  Contoh (maximum subsequences digarisbawahi)  -2, 11, -4, 13, -4, 2  1, -3, 4, -2, -1, 6
  • 20. 20 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Brute Force Algorithm (1)  Algoritma:  Hitung jumlah dari semua sub-sequence yang mungkin  Cari nilai maksimumnya  Contoh:  jumlah subsequence (start, end) • (0, 0), (0,1), (0,2), …, (0,5) • (1,1), (1,2), …, (1, 5) • … • (5,5) 2 -4 13 -4 11 -2 5 4 3 2 1 0
  • 21. 21 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Brute Force Algorithm (2) public static int maxSubSum1( int [] A ) { int maxSum = 0; for(int ii = 0; ii < A.length; ii++) { for( int jj = ii; jj < A.length; jj++) { int thisSum= 0; for(int kk = ii; kk <= jj; kk++) thisSum += A[kk]; if( thisSum > maxSum ) maxSum = thisSum; } } return maxSum ; } 2 -4 13 -4 11 -2 ii jj
  • 22. 22 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa  Iterasi (kk) sebanyak N dalam iterasi (jj) sebanyak N dalam iterasi (ii) sebanyak N artinya: O(N3 ), atau algoritma kubik.  Slight over-estimate yang dihasilkan dari perhitungan iterasi yang kurang dari N adalah tidak terlalu penting (kk <= jj).
  • 23. 23 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Running Time yang sesungguhnya  Untuk N = 100, waktu sebenarnya adalah 0.47 detik pada sebuah komputer.  Dapat menggunakan informasi tersebut, untuk memperkirakan waktu untuk input yang lebih besar: T(N) = cN 3 T(10N) = c(10N)3 = 1000cN 3 = 1000T(N)  Ukuran input meningkat dengan kelipatan 10 kali, yang artinya meningkatkan running time dengan kelipatan 1000 kali.  Untuk N = 1000, perkiraan waktu 470 detik. (waktu sebenarnya 449 detik).  Untuk N = 10,000, perkiraan waktu 449000 detik (6 hari).
  • 24. 24 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Bagaimana memperbaikinya?  Membuang sebuah iterasi; Tidak selalu bisa.  Dalam contoh sebelumnya dimungkinkan: iterasi paling dalam (kk) tidak diperlukan karena informasi nya terbuang.  Nilai thisSum untuk nilai jj selanjutnya dapat dengan mudah diperoleh dari nilai thisSum yang sebelumnya: Yang diperlukan: Aii + A ii+1 + … + A jj-1 + Ajj Yang telah dihitung: Aii +A ii+1 + …+ A jj-1 Yang dibutuhkan adalah yang telah dihitung + Ajj Dengan kata lain: • sum (ii, jj) = sum (ii, jj - 1) + Ajj
  • 25. 25 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 The Better Algorithm public static int maxSubSum2( int [ ] A ) { int maxSum = 0; for( int ii = 0; ii < A.length; ii++ ) { int thisSum = 0; for( int jj = ii; jj < A.length; jj++ ) { thisSum += A[jj]; if( thisSum > maxSum ) maxSum = thisSum; } } return maxSum ; }
  • 26. 26 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa  Dengan logika yang sama: Saat ini running time adalah quadratic, or O(N2 )  Perkirakan waktu eksekusi untuk input berukuran ribuan. Algoritma ini masih dapat digunakan untuk ukuran input 10 ribu.  Ingat, bahwa algoritma kubik sudah tidak practical lagi bila digunakan untuk ukuran input tersebut.
  • 27. 27 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Actual running time  Untuk N = 100, waktu sebenarnya adalah 0.011 detik pada sebuah komputer.  Perkirakan waktu sebenarnya untuk input lebih besar: T(N) = cN 2 T(10N) = c(10N)2 = 100cN 2 = 100T(N)  Input diperbesar dengan kelipatan 10 artinya running time akan membesar dengan kelipatan 100.  Untuk N = 1000, perkiraan running time adalah 1.11 detik. (waktu sebenarnya 1.12 detik).  Untuk N = 10,000, perkiraan 111 detik (= actual).
  • 28. 28 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Algoritma Rekursif  Gunakan pendekatan divide-and-conquer :  Membagi (divide) permasalahan ke dalam bagian yang lebih kecil  Menyelesaikan (conquer) masalah per bagian secara recursive  Menggabung penyelesaian per bagian menjadi solusi masalah awal
  • 29. 29 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Algoritma Rekursif (2)  Urutan dengan nilai jumlah terbesar kemungkinan berada pada:  terletak di setengah input awal  terletak di setengah input akhir.  berawal disetengan input awal dan berakhir di setengah input akhir.  Hitung ketiga kemungkinan tersebut. Cari yang lebih besar.  Kedua kemungkinan pertama dapat dengan mudah dihitung secara rekursif.
  • 30. 30 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Menghitung kemungkinan ketiga  dapat dilakukan dengan dua iterasi; lihat program  kemungkinan ketika berasal dari penjumlahan dua bagian, bagian pertama berawal pada setengah bagian input pertama berakhir di tengah. Bagian kedua berasal dari urutan index setengah +1 hingga setengah bagian input akhir.  Untuk bagian pertama gunakan iterasi dari kanan-ke-kiri (right-to-left) mulai dari element terakhir pada setengah input awal.  Untuk bagian kedua, gunakan iterasi dari kiri- ke-kanan, (left-to-right) mulai dari awal setengah input akhir.
  • 31. 31 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Ilustrasi 4 -3 5 -2 -1 2 6 -2 4* 0 3 -2 -1 1 7* 5 Tengah-tengah
  • 32. 32 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Versi Rekursif private int maxSumRec (int[] a, int left, int right) { int center = (left + right) / 2; if(left == right) { // Base case return a[left] > 0 ? a[left] : 0; } int maxLeftSum = maxSumRec (a, left, center); int maxRightSum = maxSumRec (a, center+1, right); for(int ii = center; ii >= left; ii--) { leftBorderSum += a[ii]; if(leftBorderSum > maxLeftBorderSum) maxLeftBorderSum = leftBorderSum; } ...
  • 33. 33 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Versi Rekursif (lanj.) ... for(int jj = center + 1; jj <= right; jj++) { rightBorderSum += a[jj]; if(rightBorderSum > maxRightBorderSum) maxRightBorderSum = rightBorderSum; } return max3 (maxLeftSum, maxRightSum, maxLeftBorderSum + maxRightBorderSum); } // publicly visible routine (a.k.a driver function) public int maxSubSum (int [] a) { return maxSumRec (a, 0, a.length-1); }
  • 34. 34 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Detil Program  Pastikan dalam rekursif program anda ada base case untuk mengatasi zero-element arrays.  Gunakan method “driver” yang public (method rekursif dibuat private)  Aturan Rekursif :  Memiliki base case  Membuat progress menuju ke base case  Asumsikan bahwa panggilan rekursif bekerja dengan baik.  Hindari menghitung sebuah penyelesaian dua kali.
  • 35. 35 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa  Misalkan T( N ) adalah waktu untuk menyelesaikan masalah dengan ukuran input N.  maka T( 1 ) = 1 (1 adalah quantum time unit ketika memproses base case; ingat konstanta tidak terlalu penting. ).  T( N ) = 2 T( N / 2 ) + N  Dua buah pemanggilan rekursif, masing- masing berukuran N / 2. Waktu yang dibutuhkan untuk menyelesaikan masing- masing-nya adalah T( N / 2 )  Kasus ketiga membutuhkan O( N ) .
  • 36. 36 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Bottom Line T(1) = 1 = 1 * 1 T(2) = 2 * T(1) + 2 = 4 = 2 * 2 T(4) = 2 * T(2) + 4 = 12 = 4 * 3 T(8) = 2 * T(4) + 8 = 32 = 8 * 4 T(16) = 2 * T(8) + 16 = 80 = 16 * 5 T(32) = 2 * T(16) + 32 = 192 = 32 * 6 T(64) = 2 * T(32) + 64 = 448 = 64 * 7 T(N) = N(1 + log N) = N + N log N = O(N log N)
  • 37. 37 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 N log N  Setiap algoritma rekursif yang menyelesaikankan permasalahan dengan membagi dua permasalahan kemudian melakukan proses linear (menggabung atau memecah) akan selalu O( N log N ) karena analisa yang sama tetap berlaku.  Algoritma yang O( N log N ) adalah jauh lebih baik dibanding quadratic.  Tapi masih belum lebih baik dibanding O( N ), namun tidak terlalu jauh berbeda.  Untuk permasalahan ini terdapat solusi yang linear. Menganalisa running time cukup jelas, namun memeriksa kebenaran program ataupun menyusun algoritma tersebut tidak mudah .
  • 38. 38 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Algoritma linear  Algoritma Linear merupakan yang terbaik.  Ingat: linear artinya O( N ).  Running time yang linear selalu sebanding dengan ukuran input. Sulit untuk membuat algoritma yang lebih baik dari linear (kecuali ada rumusan tertentu).  Jika input membesar dengan kelipatan 10, maka running time juga hanya akan membesar dengan kelipatan yang sama.
  • 39. 39 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Ide  Ai,j adalah kumpulan bilangan mulai dari urutan i hingga urutan j.  Si,j adalah dari kumpulan bilangan tersebut.  Theorema: Untuk Ai,j dengan Si,j < 0. Jika q > j, maka Ai,q bukanlah deretan terurut yang terbesar.
  • 40. 40 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Bukti Theorema  Bukti:  Si,q = Si,j + Sj+1,q  Si,j < 0  Si,q < Sj+1,q
  • 41. 41 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Program – versi 1 static public int maximumSubSequenceSum3 (int a[]) { int maxSum = 0; int thisSum = 0; for (int jj = 0; jj < a.length; jj++) { thisSum += a[jj]; if (thisSum > maxSum) { maxSum = thisSum; } else if (thisSum < 0) { thisSum = 0; } } return maxSum; }
  • 42. 42 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Program – versi 2 static public int maximumSubSequenceSum3b (int a[]) { int thisSum = 0, maxSum = 0; for (int ii = 0; ii < a.length; ii++) { thisSum = Max(0, a[ii] + thisSum); maxSum = Max(thisSum, maxSum); } return maxSum; }
  • 43. 43 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Running Time
  • 44. 44 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Running Time: on different machines  Algoritma Kubik pada mesin Alpha 21164 at 533 Mhz menggunakan C compiler (mewakili mesin yang cepat)  Algoritma Linear pada mesin Radio Shack TRS-80 Model III (a 1980 personal computer with a Z-80 processor running at 2.03 Mhz) using interpreted Basic (mewakili mesin lambat) n Alpha 21164A, C compiled, Cubic Algorithm TRS-80, Basic interpreted, Linear Algorithm 10 0.6 microsecs 200 milisecs 100 0.6 milisecs 2.0 secs 1,000 0.6 secs 20 secs 10,000 10 mins 3.2 mins 100,000 7 days 32 mins 1,000,000 19 yrs 5.4 hrs
  • 45. 45 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Running Time: Moral Of The Story  Bahkan teknik programming yang terbaik tak akan dapat membuat sebuah algoritma yang tidak efisien menjadi cepat.  Sebelum kita menginvestasikan waktu untuk mencoba mengoptimisasi program, kita harus pastikan algoritma nya sudah yang paling efisien.
  • 46. 46 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Algoritma Logaritme  Definisi Formal  Untuk setiap B, N > 0, logB N = K, if B K = N.  Jika (base) B diabaikan, maka default-nya adalah 2 dalam konteks ilmu komputer (binary representation).  Contoh:  log 32 = 5 (karena 25 = 32)  log 1024 = 10  log 1048576 = 20  log 1 milyard = sekitar 30  logaritme berkembang jauh lebih lambat dari N dan lebih lambat dari akar kuadrat dari N.
  • 47. 47 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Contoh Algoritma Logaritme  BITS IN A BINARY NUMBER  Berapa banyak bits dibutuhkan untuk merepresentasikan bilangan bulat?  REPEATED DOUBLING  Mulai dari X = 1, berapa kali X harus dikalikan dua agar mendekati nilai N?  REPEATED HALVING  Mulai dari X = N, jika N dibagi dua terus menerus, berapa kali iterasi agar membuat N lebih kecil atau sama dengan 1 (Halving rounds up).  Jawaban untuk seluruh pertanyaan diatas adalah: log N (dibulatkan).
  • 48. 48 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Mengapa log N?  B bits menyatakan 2B bilangan bulat. Maka 2B adalah minimal sebesar N, maka B adalah minimal log N. Karena B bilangan bulat, maka pembulatan dibutuhkan.  Pendekatan serupa untuk contoh-contoh lain.
  • 49. 49 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Repeated Halving Principle  Sebuah algoritma adalah O( log N ) jika membutuhkan waktu konstan untuk membagi input permasalahan dan mengerjakan masing- masing-nya secara rekursif. (biasanya 1/2).  Penjelasan: Akan terjadi sebanyak log N dari proses konstan tersebut.
  • 50. 50 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Linear Search  Bila diberikan sebuah bilangan bulat X dan sebuah array A, kembalikan posisi X dalam A atau sebuah tanda bila tidak ada X dalam A. Jika X muncul lebih dari sekali, kembalikan posisi manapun. Array A tidak perlu diubah.  Jika array input tidak terurut, solusinya adalah menggunakan linear search. Running times:  pencarian tidak berhasil: O( N ); setiap element diperiksa  pencarian berhasil: • Worst case: O( N ); setiap element diperiksa • Average case: O( N ); setengah bagian diperiksa  Apakah kita akan dapat melakukannya lebih baik bila diketahui array input terurut?
  • 51. 51 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Binary Search  Ya! Gunakan binary search.  Lihat bilangan ditengah (asumsi array terurut dari kiri ke kanan)  Kasus 1: Jika X lebih kecil dari bilangan ditengah, maka hanya perlu lihat sub array bagian kiri.  Kasus 2: Jika X lebih besar dari bilangan ditengah, maka hanya perlu lihat sub array bagian kanan  Kasus 3: Jika X sama dengan bilangan ditengah, maka selesai.  Base Case: Jika input sub array kosong, X tidak ditemukan.  Logaritme sesuai dengan the repeated halving principle.  Algoritma binary search pertama dipublikasikan tahun 1946. Published binary search pertama tanpa bugs tidak muncul hingga 1962.
  • 52. 52 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 /** Performs the standard binary search using two comparisons per level. @param a the array @param x the key @exception ItemNotFound if appropriate. @return index where item is found. */ public static int binarySearch (Comparable [ ] a, Comparable x ) throws ItemNotFound { int low = 0; int high = a.length - 1; int mid; while( low <= high ) { mid = (low + high) / 2; if (a[mid].compareTo (x) < 0) { low = mid + 1; } else if (a[mid].compareTo (x) > 0) { high = mid - 1; } else { return mid; } } throw new ItemNotFound( "BinarySearch fails" ); }
  • 53. 53 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Analisa program Binary Search  Dapat melakukan satu perbandingan tiap iterasi dari pada dua iterasi dengan cara menggantikan base case:  Save the value returned by a[mid].compareTo (x)  Average case dan worst case dalam algoritma hasil revisi adalah sama : 1 + log N perbandingan (dibulatkan). Contoh: If N = 1,000,000, maka 20 bilangan dibandingkan.  Sequential search akan lebih banyak 25,000 kali dalam kondisi rata-rata (average case).
  • 54. 54 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Big-Oh Rules (1)  Ekspresi matematika untuk menyatakan tingkat laju pertumbuhan relatif:  DEFINITION: (Big-Oh) T(N) = O(F(N)) jika ada konstan positif c dan N0 sehingga T(N) ≤ c F(N) untuk N ≥ N0.  DEFINITION: (Big-Omega) T(N) = Ω (F(N)) jika ada konstan c dan N0 sehingga T(N) ≥ c F(N) untuk N ≥ N0  DEFINITION: (Big-Theta) T(N) = Θ (F(N)) jika dan hanya jika T(N) = O(F(N)) dan T(N) = Ω (F(N)).  DEFINITION: (Little-Oh) T(N) = o(F(N)) jika dan hanya jika T(N) = O(F(N)) dan T(N) ≠ Θ (F(N)).
  • 55. 55 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Big-Oh Rules (2)  Arti dari beberapa fungsi tingkat laju.(diambil dari Weiss 2006)  Jika ada lebih dari satu parameter, maka aturan tersebut berlaku untuk setiap parameter.  4 n log(m) + 50 n2 + 500 m + 1853  O(n log(m) + n2 + m)  4 m log(m) + 50 n2 + 500 m + 853  O(m log(m) + n2 )
  • 56. 56 SUR – HMM – AA Fasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2009/2010 Latihan  Urutkan fungsi berikut berdasarkan laju pertumbuhan (growth rate)  N, √N, N1.5 , N2 , N log N, N log log N, N log2 N, N log (N2 ), 2/N, 2N , 2N/2 , 37, N3 , N2 log N  A5 + B5 + C5 + D5 + E5 = F5  0 < A ≤ B ≤ C ≤ D ≤ E ≤ F ≤ 75  Rancang algoritmanya.  Apakah algoritm tersebut sudah efisien?