Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
CSG523/ Desain dan Analisis Algoritma
Fundamentals of The Analysis of Algorithm Efficiency Intelligence, Computing, Multimedia (ICM)
2
Review Algoritma:urutan langkah-langkah untuk memecahkan suatu masalah
CSG523/ Desain dan Analisis Algoritma
3
Definisi lain: Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran [COR92]. Algoritma adalah deretan instruksi yang jelas untuk memecahkan masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas. [LEV03]. Algoritma adalah prosedur komputasi yang terdefinisi dengan baik yang menggunakan beberapa nilai sebagai masukan dan menghasilkan beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluaran [COR89]. CSG523/ Desain dan Analisis Algoritma
4
Algoritma dapat ditulis dengan notasi:
Notasi apapun dapat digunakan untuk menuliskan algoritma asalkan mudah dibaca dan dipahami. Algoritma dapat ditulis dengan notasi: 1. Bagan alir (flow chart) 2. Kalimat-kalimat deskriptif 3. Pseudo-code (gabungan antara bahasa alami dengan bahasa pemrograman) CSG523/ Desain dan Analisis Algoritma
5
Analisis Algoritma Sebuah algoritma tidak hanya harus benar, tetapi juga harus mangkus (efficient) Ukuran kemangkusan algoritma: waktu dan ruang memori (space). Algoritma yang mangkus: algoritma yang meminimumkan kebutuhan waktu dan ruang CSG523/ Desain dan Analisis Algoritma
6
Example a1 a2 a3 … an procedure HitungRerata(input a1, a2, ..., an : integer, output r : real) { Menghitung nilai rata-rata dari sekumpulan elemen larik integer a1, a2, ..., an. Nilai rata-rata akan disimpan di dalam peubah r. Masukan: a1, a2, ..., an Keluaran: r (nilai rata-rata) } Deklarasi k : integer jumlah : real Algoritma jumlah0 k1 while k n do jumlahjumlah + ak kk+1 endwhile { k > n } r jumlah/n { nilai rata-rata } Contoh: hitung rata-rata bilangan bulat Hitung waktu eksekusinya, kemudian cari basic operation-nya CSG523/ Desain dan Analisis Algoritma
7
The operations Assignment operation Addition operation
(jumlah0, k1, jumlahjumlah+ak, kk+1, r jumlah/n) t1 = n + n + 1 = 3 + 2n Addition operation (jumlah+ak, k+1) t2 = n + n = 2n Division operation (jumlah/n) t3 = 1 Total running time: t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik It can’t be accepted. Why?? CSG523/ Desain dan Analisis Algoritma
8
Alat ukur kemangkusan algoritma: 1. Kompleksitas waktu, T(n)
2. Kompleksitas ruang, S(n) n = ukuran masukan yang diproses oleh algoritma T(n) : jumlah operasi yang dilakukan untuk menjalankan sebuah algoritma sebagai fungsi dari ukuran masukan n. S(n): ruang memori yang dibutuhkan algoritma sebagai fungsi dari ukuran masukan n CSG523/ Desain dan Analisis Algoritma
9
Operasi yang dihitung hanyalah operasi dasar (basic operation) .
Operasi dasar: operasi khas yang mendasari suatu algoritma atau memiliki kontribusi terbesar dalam kenaikan running time. Misalnya: - operasi perbandingan elemen pada algoritma pengurutan/pencarian - operasi penjumlahan dan perkalian pada algoritma perkalian matriks CSG523/ Desain dan Analisis Algoritma
10
Theoretical analysis of time efficiency
T(n) ≈ copC(n) running time execution time for basic operation Number of times basic operation is executed input size Untuk kasus hitung rata-rata, basic operations nya apa? CSG523/ Desain dan Analisis Algoritma
11
Input size and basic operation examples
Problem Input size measure Basic operation Search for key in list of n items Number of items in list n Key comparison Multiply two matrices of floating point numbers Dimensions of matrices Floating point multiplication Compute an n Graph problem #vertices and/or edges Visiting a vertex or traversing an edge regarding an point out that the input size measure is more properly measured by number of bits: b= ⌊log2 n⌋ + 1 Graph problems are mentioned here just to give me an opportunity to discuss them in general. Typically this will depend on graph representation and the specific problem. CSG523/ Desain dan Analisis Algoritma
12
The effect of input size
CSG523/ Desain dan Analisis Algoritma
13
Order of growth Most important: Order of growth within a constant multiple as n→∞ Example: How much faster will algorithm run on computer that is twice as fast? How much longer does it take to solve problem of double input size? See table 2.1 Example: cn2 how much faster on twice as fast computer? (2) how much longer for 2n? (4) CSG523/ Desain dan Analisis Algoritma
14
Table 2.1 CSG523/ Desain dan Analisis Algoritma
15
Best-case, average-case, worst-case
For some algorithms efficiency depends on type of input: Worst case: W(n) – maximum over inputs of size n Best case: B(n) – minimum over inputs of size n Average case: A(n) – “average” over inputs of size n Number of times the basic operation will be executed on typical input NOT the average of worst and best case Expected number of basic operations repetitions considered as a random variable under some assumption about the probability distribution of all possible inputs of size n CSG523/ Desain dan Analisis Algoritma
16
CSG523/ Desain dan Analisis Algoritma
17
Example: Sequential search
Problem: Given a list of n elements and a search key K, find an element equal to K, if any. Algorithm: Scan the list and compare its successive elements with K until either a matching element is found (successful search) or the list is exhausted (unsuccessful search) CSG523/ Desain dan Analisis Algoritma
18
Pseudo-code procedure PencarianBeruntun(input a1, a2, ..., an : integer, x : integer, output idx : integer) Deklarasi k : integer ketemu : boolean { bernilai true jika x ditemukan atau false jika x tidak ditemukan } Algoritma: k1 ketemu false while (k n) and (not ketemu) do if ak = x then ketemutrue else k k + 1 endif endwhile { k > n or ketemu } if ketemu then { x ditemukan } idxk idx { x tidak ditemukan } Bagaimana jika tidak menggunakan variabel boolean?? Harus cek seluruh array Kalau elemen array sudah terurut, bagaimana efisiensi dari sequential search? CSG523/ Desain dan Analisis Algoritma
19
Sequential search efficiency
Best case if a1 = x Worst case if an = x or x can’t be found Average case if x at j-position, so comparison operation (ak = x) will be executed j time. CSG523/ Desain dan Analisis Algoritma
20
Types of formulas for basic operation count
Exact formula e.g., C(n) = n(n-1)/2 Formula indicating order of growth with specific multiplicative constant e.g., C(n) ≈ 0.5 n2 Formula indicating order of growth with unknown multiplicative constant e.g., C(n) ≈ cn2 Maksudnya apa ya???? CSG523/ Desain dan Analisis Algoritma
21
MaxSearch procedure CariElemenTerbesar(input a1, a2, ..., an : integer, output maks : integer) { Mencari elemen terbesar dari sekumpulan elemen larik integer a1, a2, ..., an. Elemen terbesar akan disimpan di dalam maks. Masukan: a1, a2, ..., an Keluaran: maks (nilai terbesar) } Deklarasi k : integer Algoritma maksa1 k2 while k n do if ak > maks then maksak endif ii+1 endwhile { k > n } Basic operation: (A[i] > maks) Perlu variabel boolean kah? Harus mencari ke seluruh elemen kah? Bagaimana kalau di sort terlebih dahulu baru ambil elemen di index terbesar? Lebih efisien mana? - hitung dari basic operation yg dilakukan CSG523/ Desain dan Analisis Algoritma
22
procedure PencarianBiner(input a1, a2, ..., an : integer, x : integer,
output idx : integer) Deklarasi i, j, mid : integer ketemu : boolean Algoritma i1 jn ketemufalse while (not ketemu) and ( i j) do mid (i+j) div 2 if amid = x then ketemu true else if amid < x then { cari di belahan kanan } imid + 1 else { cari di belahan kiri } jmid - 1; endif endwhile {ketemu or i > j } if ketemu then idxmid idx0 BinarySearch Jika elemen array terurut, binsearch memiliki efisiensi tinggi. Jika elemen array tidak terurut ??? 1. Kasus terbaik Tmin(n) = 1 2. Kasus terburuk: Tmax (n) = 2log n CSG523/ Desain dan Analisis Algoritma
23
Selection Sort procedure Urut(input/output a1, a2, ..., an : integer)
Deklarasi i, j, imaks, temp : integer Algoritma for in downto 2 do { pass sebanyak n – 1 kali } imaks1 for j2 to i do if aj > aimaks then imaksj endif endfor { pertukarkan aimaks dengan ai } tempai aiaimaks aimakstemp (i) Jumlah operasi perbandingan elemen Untuk setiap pass ke-i, i = 1 jumlah perbandingan = n – 1 i = 2 jumlah perbandingan = n – 2 i = 3 jumlah perbandingan = n – 3 i = k jumlah perbandingan = n – k i = n – 1 jumlah perbandingan = 1 Jumlah seluruh operasi perbandingan elemen-elemen larik adalah T(n) = (n – 1) + (n – 2) + … + 1 = Ini adalah kompleksitas waktu untuk kasus terbaik dan terburuk, karena algoritma Bubble Sort tidak bergantung pada batasan apakah data masukannya sudah terurut atau acak. (ii) Jumlah operasi pertukaran Untuk setiap i dari 1 sampai n – 1, terjadi satu kali pertukaran elemen, sehingga jumlah operasi pertukaran seluruhnya adalah T(n) = n – 1. Jadi, algoritma pengurutan maksimum membutuhkan n(n – 1 )/2 buah operasi perbandingan elemen dan n – 1 buah operasi pertukaran. CSG523/ Desain dan Analisis Algoritma
24
Selection sort – the operations
(i) Jumlah operasi perbandingan elemen Untuk setiap pass ke-i, i = 1 jumlah perbandingan = n – 1 i = 2 jumlah perbandingan = n – 2 i = 3 jumlah perbandingan = n – 3 i = k jumlah perbandingan = n – k i = n – 1 jumlah perbandingan = 1 Jumlah seluruh operasi perbandingan elemen-elemen larik adalah T(n) = (n – 1) + (n – 2) + … + 1 = Ini adalah kompleksitas waktu untuk kasus terbaik dan terburuk, karena algoritma SelectionSort tidak bergantung pada batasan apakah data masukannya sudah terurut atau acak. CSG523/ Desain dan Analisis Algoritma
25
Selection sort – the operations
(ii) Jumlah operasi pertukaran Untuk setiap i dari 1 sampai n – 1, terjadi satu kali pertukaran elemen, sehingga jumlah operasi pertukaran seluruhnya adalah T(n) = n – 1. Jadi, algoritma pengurutan maksimum membutuhkan n(n – 1 )/2 buah operasi perbandingan elemen dan n – 1 buah operasi pertukaran. CSG523/ Desain dan Analisis Algoritma
26
How about: Matrix multiplication
Maxsearch CSG523/ Desain dan Analisis Algoritma
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.