design and a n alysis of algorithm fundamentals of algorithm analysis in efficiency
DESCRIPTION
Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency. Aryo Pinandito, ST, M.MT - PTIIK UB. Analisis Algoritma. Analisis Algoritma bertujuan memeriksa efisiensi algoritma dari dua segi : waktu eksekusi dan penggunaan memori - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/1.jpg)
Design and Analysis of AlgorithmFundamentals of Algorithm Analysis in Efficiency
Aryo Pinandito, ST, M.MT - PTIIK UB
![Page 2: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/2.jpg)
Analisis Algoritma Analisis Algoritma bertujuan memeriksa
efisiensi algoritma dari dua segi : waktu eksekusi dan penggunaan memori
Efisiensi waktu seberapa cepat algoritma dieksekusi
Efisiensi memori berapa banyak memori yang dibutuhkan untuk menjalankan algoritma
![Page 3: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/3.jpg)
Analisis Efisiensi Waktu Algoritma
Untuk melakukan analisa efisiensi waktu algoritma harus diestimasi dulu waktu eksekusi algoritma
![Page 4: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/4.jpg)
Algorithm sequential search (A[0..n-1], K) Searches for a given value in a given array by
sequential search Input: an array A[0..n-1] and a search key K Output: returns the index of the first element
of A that matches K or -1 if there are no matching elementsi 0 1xwhile i n and A[i] K do 2x i i + 1 1x
if i n return i 2xelse return -1 1x
![Page 5: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/5.jpg)
Analisis Algoritma Sequential Search Baris kode mana yang sangat berpengaruh
pada running time?
Bagian loop (baris 2 dan 3). Mengapa?
Karena dieksekusi berulang–ulang. Makin banyak eksekusinya, makin lama
running time program
![Page 6: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/6.jpg)
Sequential Searchi 0 1x
while i n and A[i] K do 2x
i i + 1 1x
if i n return i 2x
else return -1 1x
Estimasi waktu eksekusi algoritma sequential search?
![Page 7: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/7.jpg)
time = nLoop x tLoop time = estimasi waktu eksekusi algoritma
untuk input tertentu
nLoop: berapa kali loop dieksekusi tLoop: waktu yang diperlukan untuk
mengeksekusi loop 1 kali. Biasanya ditentukan 1 satuan waktu tanpa dispesifikasikan berapa nilainya
![Page 8: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/8.jpg)
Case: Best, Average, Worst Asumsikan array A terdiri atas n elemen.
Best case: k ditemukan di elemen pertama array A. time = 1 x 1 satuan waktu
Average case: k ditemukan di elemen tengah array A. time = n/2 x 1 satuan waktu
Worst case: k ditemukan di elemen paling akhir array A. time = n x 1 satuan waktu
![Page 9: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/9.jpg)
Analisis Algoritma Non-Rekursif Langkah-langkah umum untuk menganalisa
efisiensi waktu algoritma nonrekursif
1. Tentukan parameter yang mengindikasikan ukuran input
2. Identifikasi basic operation algoritma
3. Tentukan apakah untuk ukuran input yang sama banyaknya eksekusi basic operation bisa berbeda
4. Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
5. Selesaikan rumus sigma untuk menghitung banyaknya eksekusi basic operation
![Page 10: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/10.jpg)
1: Tentukan parameter yang mengindikasikan ukuran input Sesuatu pada input yang jika nilainya
bertambah akan menyebabkan banyaknya eksekusi loop bertambah
Contoh, algoritma untuk menghitung Xn menggunakan cara Xn = X * X * X * … * X sebanyak n kali. Parameter ukuran inputnya adalah nilai n, karena jika n makin besar, maka banyaknya eksekusi loop bertambah
Bagaimana dengan nilai X?
![Page 11: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/11.jpg)
2: Identifikasi basic operation algoritma Waktu yang diperlukan untuk mengeksekusi
loop 1 kali Dapat diwakili oleh sebuah operasi pada
loop paling dalam. Operasi yang dipilih adalah operasi yang
selalu dilakukan ketika loop dieksekusi Untuk algoritma sequential search, basic
operationnya dapat digunakan i n i n dieksekusi 1 kali setiap loop dieksekusi
![Page 12: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/12.jpg)
3: Apakah untuk ukuran input yang sama, jumlah eksekusi basic operation dapat berbeda?
Pada sequential search, parameter untuk ukuran input adalah n atau banyaknya elemen array
Untuk n tertentu, apakah banyaknya eksekusi basic operation bisa berbeda?
Jika elemen pertama array input A bernilai K, maka banyaknya eksekusi basic operation untuk n tertentu C(n)= 1
Jika K ditemukan di elemen terakhir, maka C(n)= n
Perlu diadakan analisa best case, worst case dan average case
![Page 13: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/13.jpg)
4A: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
C(n) = banyaknya eksekusi basic operation untuk input ukuran n
Best case Sequential Search:
Best case terjadi jika elemen pertama A bernilai K
![Page 14: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/14.jpg)
4B: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi C(n) = banyaknya eksekusi basic operation untuk
input ukuran n
Worst case Sequential Search:
Worst case terjadi jika elemen A yang bernilai bernilai K merupakan elemen terakhir atau tidak ada elemen A yang bernilai K
n
i
nC1
1)(
![Page 15: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/15.jpg)
4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Average case pada sequential search
Asumsikan Data K memang ada di A Probabilitas K terletak di elemen tertentu A dan
terdistribusi secara merata. Probabilitas K terletak di elemen ke i = 1/n
![Page 16: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/16.jpg)
Bentuk umum: i * 1 / n
4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Posisi K ditemukan
Banyaknya eksekusi basic
operation
Probabilitas terjadi
Kontribusi pada C(n)
12……n
12……n
1/n1/n……n
1 * 1/n2 * 1/n
……
N * 1/n
![Page 17: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/17.jpg)
Average case pada sequential search:
4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
![Page 18: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/18.jpg)
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Best case untuk sequential search
Untuk input berukuran n, basic operation dilakukan 1 kali
1
1
1)(i
nC
1)( nC
![Page 19: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/19.jpg)
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Worst case untuk sequential search
Untuk input berukuran n, basic operation dilakukan n kali
nnC )(
n
i
nC1
1)(
![Page 20: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/20.jpg)
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Average case pada sequential search
n
i ninC
1
1*)(
n
i
in
nC1
1)(
)1(2
1)1(
2
1*1
)( nnnn
nC
To find the sum of a certain number of terms of an arithmetic sequence:
where Sn is the sum of n terms (nth partial sum), a1 is the first term, an is the nth term.
![Page 21: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/21.jpg)
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi
Pada sequential search, average case-nya:
Untuk n = 10, C(n) = 5,5 Apakah itu berarti K berada pada elemen 5
atau 6 Apa artinya?
2
)1()(
n
nC
![Page 22: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/22.jpg)
Estimasi Running Time Algoritma Sequential Search T(n) = Cop* C(n)
Dimana:
T(n) = Waktu yang diperlukan untuk mengeksekusi algoritma dengan input berukuran n
Cop = Waktu untuk mengeksekusi basic operation 1 kali. Biasanya ditentukan sebagai 1 satuan waktu
Hitung T(n) untuk sequential search pada best case, worst case dan average case!
![Page 23: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/23.jpg)
What is T(n) For? Apakah untuk mengestimasi running time
algoritma? Tujuan utama mencari T(n) bukan mencari
waktu eksak yang dibutuhkan untuk mengeksekusi sebuah algoritma
Tetapi untuk mengetahui tingkat pertumbuhan waktu eksekusi algoritma jika ukuran input bertambah (order of growth / OoG)
![Page 24: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/24.jpg)
Exercise Sebuah algoritma memiliki T(n) = n – 1.
Estimasi waktu eksekusi algoritma jika jumlah masukannya memiliki anggota: 10 elemen 20 elemen 30 elemen
Buat grafik yang menunjukkan hubungan antara banyaknya elemen yang dieksekusi dengan waktu eksekusi
![Page 25: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/25.jpg)
Orders of Growth (OoG)
Tingkat pertumbuhan waktu eksekusi algoritma jika ukuran input bertambah
Orders of Growth are also known as Efficiency Classes
![Page 26: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/26.jpg)
Exercise Urutkan waktu eksekusi algoritma T(1–4)(n)
berdasar order of growthnya dari kecil ke besar
T1(n) = n2 T1 (10) = 100 T1
(100) = 10,000
T2(n) = n3 T2(10) = 1,000 T2(100) = 1,000,000
T3(n) = n T3(10) = 10 T3(100) = 100
T4(n) = log2n T4(10) = 3.3 T4(100) = 6.6
![Page 27: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/27.jpg)
Membandingkan Orders of Growth dari dua Algoritma Algoritma A dan B merupakan algoritma
untuk menyelesaikan permasalahan yang sama. Untuk input berukuran n, waktu eksekusi algoritma A adalah TA(n) sedangkan waktu eksekusi algoritma B adalah TB(n). Orders of growth mana yang paling besar?
)(
)(lim
~ nT
nT
B
A
n
![Page 28: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/28.jpg)
Membandingkan Orders of Growth dari dua Algoritma
0 maka OoG TA(n) < OoG TB(n)
C maka OoG TA(n) = OoG TB(n)
~ maka OoG TA(n) > OoG TB(n)
)(
)(lim
~ nT
nT
B
A
n
![Page 29: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/29.jpg)
Asymptotic Notations
O (big oh) (big omega) (big theta)
![Page 30: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/30.jpg)
CS3024-FAZ30
In the following discussion… t(n) & g(n): any nonnegative functions
defined on the set of natural numbers
t(n) an algorithm's running time Usually indicated by its basic operation count
C(n) g(n) some simple function to compare the
count with
![Page 31: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/31.jpg)
CS3024-FAZ31
O(g(n)): Informally O(g(n)) is a set of all functions with a smaller
or same order of growth as g(n) Examples:
n O(n2); 100n + 5 O(n2) ½ n(n-1) O(n2) n3 O(n2); 0.0001 n3 O(n2); n4+n+1 O(n2)
≤
![Page 32: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/32.jpg)
CS3024-FAZ32
(g(n)): Informally (g(n)) is a set of all functions with a larger or
same order of growth as g(n) Examples:
n3 (n2) ½ n(n-1) (n2) 100n + 5 (n2)
≥
![Page 33: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/33.jpg)
CS3024-FAZ33
(g(n)): Informally (g(n)) is a set of all functions with a same
order of growth as g(n) Examples:
an2+bn+c; a>0 (n2); n2+sin n (n2) ½ n(n-1) (n2); n2+log n (n2) 100n + 5 (n2); n3 (n2)
=
![Page 34: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/34.jpg)
Exercise Terdapat dua algoritma yang menyelesaikan
permasalahan yang sama. Untuk input berukuran n, Algoritma 1: T1(n) = 30n2 + 2n + 5. Algoritma 2: T2(n) = n3 + n
Mana yang lebih besar, OoG T1 atau T2? Untuk n kecil mana yang anda pilih? Untuk n besar, mana yang anda pilih?
![Page 35: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/35.jpg)
Basic Efficiency Classes The time efficiency of a large number of
algorithms fall into only few classes 1 or C, log n, n, n log n, n2, n3, 2n, n!
Multiplicative constants are ignored it is possible that an algorithm in worse efficiency class running faster than algorithm in better class Exp: Alg A: n3, alg B: 106n2; unless n > 106, alg B
runs faster than alg A
![Page 36: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/36.jpg)
Kelas-kelas Orders of Growth
C constantlog N logarithmicN linearN log N linear logaritmicN2 quadraticN3 cubic2N exponentialN! factorial
Makin ke bawah, OoG-nya makin besar
![Page 37: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/37.jpg)
Grafik Kelas-kelas OoG
![Page 38: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/38.jpg)
Sifat OoG Jika T(n) = T1(n) + T2(n) + … + Ti(n)
Maka OoG T(n) = max OoG(T1(n), T2(n), … , Ti(n))
Jika T(n) = cf(n) Maka OoG T(n) = f(n)
![Page 39: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/39.jpg)
Exercise Tentukan kelas orders of growth dari:
T1(n) = 2n3 + 4n + 1 T2(n) = 0,5 n! + n10 T3(n) = n3 + n log n T4(n) = 2n + 4n3 + log n + 10
![Page 40: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/40.jpg)
Order of Growth: Summary
40
(1) Waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran input.
(log n) Kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n.
(n) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula.
(n log n) Bila n dijadikan dua kali semula, maka n log n menjadi lebih dari dua kali semula (tetapi tidak terlalu banyak)
![Page 41: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/41.jpg)
Order of Growth: Summary
41
(n2) Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula.
(n3) Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula.
(2n) Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula!
(n!) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.
![Page 42: Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency](https://reader036.vdocuments.net/reader036/viewer/2022081418/5681578e550346895dc52166/html5/thumbnails/42.jpg)
Terima KasihThank
You
Danke Gratias
Merci
ありがとうございます
감사합니다 Kiitos
谢谢ًشكرا
Grazias
धन्यवा�द