CSG523/ Desain dan Analisis Algoritma

Slides:



Advertisements
Presentasi serupa
Pencarian ( Searching)
Advertisements

Desain Dan Analisis Algoritma
Kompleksitas Algoritma
Algoritma dan Struktur Data
Aryo Pinandito, ST, M.MT - PTIIK UB
TEORI ALGORITMA.
Design and Analysis of Algorithm Recursive Algorithm Analysis
Fundamentals Of Algorithmics Gilles Brassard & Paul Bratley.
PERTEMUAN 6 Algoritma Presented by : Sity Aisyah, M.Kom
1 Algoritma Bahasa Pemrograman dan Bab 1.1. Pengertian Algoritma.
PENGURUTAN (SORTING).
Bahan Kuliah IF3051 Strategi Algoritma Oleh: Rinaldi Munir
PENCARIAN (SEARCHING)
Modul-8 : Algoritma dan Struktur Data
Flowchart dan Pseudocode
Pertemuan 3 LINKED LIST (PART 2) Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009.
Kompleksitas Algoritma
Algoritma dan Struktur Data
Algoritma dan Pemrograman
Desain dan Analisis Algoritma
Algoritma (Struktur, Tipe Data, Input/Output)
Notasi Algoritma.
1 Diselesaikan Oleh KOMPUTER Langkah-langkah harus tersusun secara LOGIS dan Efisien agar dapat menyelesaikan tugas dengan benar dan efisien. ALGORITMA.
1 Nama Kelompok : Doddy Setiawan Moh. Abdul Latief Yosep Pangky ALGORITMA MERGE SORT.
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
12-CRS-0106 REVISED 8 FEB 2013 CSG523/ Desain dan Analisis Algoritma Divide and Conquer Intelligence, Computing, Multimedia (ICM)
P31035 Algorithms and Complexity 3 SKS
Algoritma Brute Force Oleh: Muhammad Musta’in ( )
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
Algoritma Pencarian (searching)
STRUKTUR DASAR ALGORITMA
Fondasi Pemrograman & Struktur Data
Algorithm complexity Lesson 4 CSG3F3.
KUG1A3 Algoritma& Pemrograman
CSG3F3/ Desain dan Analisis Algoritma
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
Pencarian pada Array Tim PHKI Modul Dasar Pemrograman
MATERI PERKULIAHAN ANALISIS ALGORITMA
CSG523/ Desain dan Analisis Algoritma
PENGURUTAN (SORTING).
CSG523/ Desain dan Analisis Algoritma
Pseudocode – Tipe Data, Variabel, dan Operator
Kompleksitas Algoritma
PART 6 Algoritma DOSEN : AHMAD APANDI, ST.
Array 1.
Faktor analisa algoritma
Analisis Algoritma dan Struktur Data
Analisis dan Perancangan Algoritma Kuliah 4 : Asymptotic pd Kasus
Teknik Informatika Politeknik Negeri Batam
Algorithms and Programming Searching
MATERI PERKULIAHAN ANALISIS ALGORITMA
SEARCHING (PENCARIAN)
Nama : Siti Hajar Unit : B Nim : No.Hp : 0852 – 2000 – 3786.
Desain dan Analisis Algoritma
Modul 4 : Analisis Algoritma & Struktur Data
Algoritma Brute Force.
Kompleksitas Algoritma
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Pencarian (searching)
Dr. Mufid Nilmada, SSi., MMSI
Desain dan Analisis Algoritma
STRUKTUR DASAR ALGORITMA
Analisis Algoritma E. Haodudin Nurkifli Teknik Informatika
Aplikasi Graph Minimum Spaning Tree Shortest Path.
Algoritma dan struktur data
Transcript presentasi:

CSG523/ Desain dan Analisis Algoritma Fundamentals of The Analysis of Algorithm Efficiency Intelligence, Computing, Multimedia (ICM)

Review Algoritma:urutan langkah-langkah untuk memecahkan suatu masalah CSG523/ Desain dan Analisis Algoritma

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

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

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

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

The operations Assignment operation Addition operation (jumlah0, k1, jumlahjumlah+ak, kk+1, r  jumlah/n) t1 = 1 + 1 + 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

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

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

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

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

The effect of input size CSG523/ Desain dan Analisis Algoritma

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

Table 2.1 CSG523/ Desain dan Analisis Algoritma

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

CSG523/ Desain dan Analisis Algoritma

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

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 0 { 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

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

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

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

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 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

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

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

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

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