Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

CSG523/ Desain dan Analisis Algoritma

Presentasi serupa


Presentasi berjudul: "CSG523/ Desain dan Analisis Algoritma"— Transcript presentasi:

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 Important Problem Types
Sorting Definition why would we want a sorted list? Properties of sorting: stable and in place Searching Sequential and binary search Two or more operations: addition to, deletion from String processing  string matching Graph problem For modelling communication network, event schedulling, games, topsort, TSP, graph-coloring.

6 Important (cont.) Combinatorial problem
Combinatorial object: permutation, combination, subset TSP, graph-coloring Geometric problem Deal with geometric object: line, point, polygon Closest-pair problem, computer graphic (construct geometric shapes: triangle, circle) Numerical problem Mathematical object: solving equations, systems of equations, computing definite integrals, evaluating functions.

7 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

8 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 jumlah0 k1 while k  n do jumlahjumlah + ak kk+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

9 The operations Assignment operation Addition operation
(jumlah0, k1, jumlahjumlah+ak, kk+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

10 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

11 Basic Operation Operasi yang dihitung hanyalah operasi dasar (basic operation) . Basic Operation: 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

12 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

13 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

14 The effect of input size
CSG523/ Desain dan Analisis Algoritma

15 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

16 CSG523/ Desain dan Analisis Algoritma

17 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

18 CSG523/ Desain dan Analisis Algoritma

19 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

20 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: k1 ketemu  false while (k  n) and (not ketemu) do if ak = x then ketemutrue else k  k + 1 endif endwhile { k > n or ketemu } if ketemu then { x ditemukan } idxk 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

21 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

22 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

23 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 maksa1 k2 while k  n do if ak > maks then maksak endif ii+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

24 BinarySearch procedure PencarianBiner(input a1, a2, ..., an : integer, x : integer, output idx : integer) Deklarasi i, j, mid : integer ketemu : boolean Algoritma i1 jn ketemufalse 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 } imid + 1 else { cari di belahan kiri } jmid - 1; endif endwhile {ketemu or i > j } if ketemu then idxmid idx0 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

25 Selection Sort procedure Urut(input/output a1, a2, ..., an : integer)
Deklarasi i, j, imaks, temp : integer Algoritma for in downto 2 do { pass sebanyak n – 1 kali } imaks1 for j2 to i do if aj > aimaks then imaksj endif endfor { pertukarkan aimaks dengan ai } tempai aiaimaks aimakstemp (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

26 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

27 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

28 How about: Matrix multiplication
Maxsearch CSG523/ Desain dan Analisis Algoritma

29


Download ppt "CSG523/ Desain dan Analisis Algoritma"

Presentasi serupa


Iklan oleh Google