Faktor analisa algoritma

Slides:



Advertisements
Presentasi serupa
Desain Dan Analisis Algoritma
Advertisements

Kompleksitas Algoritma
Algoritma dan Struktur Data
Analisa Algoritma Running Time Pertemuan ke-1 Semester genap 2014
Pendahuluan Dr. Anto Satriyo Nugroho, M.Eng Web: Mata Kuliah: Dasar Pemrograman.
Fundamentals Of Algorithmics Gilles Brassard & Paul Bratley.
Meningkatkan kemampuan quick sort
Desain dan Analisis Algoritma
Design and Analysis of ALGORITHM (Session 3)
Tim Matematika Diskrit
Kompleksitas Algoritma
ALGORITMA PSEUDOCODE Pertemuan Ke-2 Meilia Nur Indah Susanti, ST.,MKom
Kompleksitas Algoritma
Kompleksitas Algoritma
Kompleksitas Waktu Asimptotik
Pertemuan-3 Laju Pertumbuhan Fungsi : Pengertian, motivasi dan manfaat
Algoritma dan Struktur Data
Design and Analysis Algorithm
Algoritma dan Struktur Data
PERTEMUAN 2 PENGERTIAN DASAR LOGIKA DAN ALGORITMA.
Sorting 2007/2008 – Ganjil – Minggu 5.
Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
Apakah Algoritma & Struktur Data itu ?
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Pertemuan 10 DIVIDE And CONQUER Lanjutan ….
Analisa Algoritma Running Time.
PART 6 Algoritma DOSEN : AHMAD APANDI, ST.
Pokok Bahasan 2 Konsep Pemrosesan Paralel
12-CRS-0106 REVISED 8 FEB 2013 CSG523/ Desain dan Analisis Algoritma Divide and Conquer Intelligence, Computing, Multimedia (ICM)
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
Kompleksitas Algoritma
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
Algoritma rekursif dan relasi rekurensi
Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma
MATERI PERKULIAHAN ANALISIS ALGORITMA
Pertemuan 25 MERANCANG ALGORITMA DENGAN KOMPLEKSITAS TERTENTU
Algoritma Divide and Conquer
Analisa Algoritma (IF1282)
PENGANTAR STRUKTUR DATA
Algoritma dan Struktur Data
MATERI PERKULIAHAN ANALISIS ALGORITMA
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
Pertemuan 4 ALGORITMA lanjutan….
Kompleksitas Algoritma
PART 6 Algoritma DOSEN : AHMAD APANDI, ST.
Analisis dan Perancangan Algoritma Kuliah 4 : Asymptotic pd Kasus
Analisa Algoritma Konsep Algoritma.
Analisa Algoritma : Pendahuluan
MATERI PERKULIAHAN ANALISIS ALGORITMA
Mata kuliah : K0144/ Matematika Diskrit Tahun : 2008
Gambaran Kuliah Pemrograman Terstruktur
STRUKTUR DATA (10) recursive function
Apakah Algoritma & Struktur Data itu ?
ALGORITMA DAN PEMROGRAMAN III
Modul 4 : Analisis Algoritma & Struktur Data
Pertemuan 18 CODE OPTIMIZATION
UJIAN TERDIRI ATAS 50 SOAL
Kompleksitas Algoritma
PEMROGRAMAN I Semester I 2017/2018
Algoritma Rekursif Alpro-2.
Algoritma Divide and Conquer
Analisa algoritma rekursif
Algoritma Divide and Conquer
Sistem Berkas 2. ORGANISASI FILE.
Dr. Mufid Nilmada, SSi., MMSI
UJIAN TERDIRI ATAS 50 SOAL
Desain dan Analisis Algoritma
Analisis Algoritma E. Haodudin Nurkifli Teknik Informatika
Transcript presentasi:

Faktor analisa algoritma

Deskripsi Materi ini membahas Faktor analisa algoritma

Tujuan Instruksional Khusus (TIK)‏ Menjelaskan faktor analisa algoritma Menjelaskan Running time dan penggunaan memory Menjelaskan Kompleksitas waktu Menjelaskan Best, worst dan average case

Faktor dalam analisa algoritma Di dalam menganalisa suatu algoritma, terdapat beberapa faktor yang selalu menjadi pertimbangan di dalam menentukan baik tidaknya suatu algoritma; yaitu: Efisiensi suatu algoritma di dalam penggunaan sumber daya suatu komputer; dalam hal ini menyangkut banyaknya memori (space), dan lamanya waktu komputasi yang diperlukan (running time). Correctness dari algoritmanya sendiri. Yakni apakah algoritma tersebut selalu menghasilkan hasil yang benar untuk semua input yang mungkin. Kompleksitas dari algoritma. Dalam hal ini, baik faktor efisiensi maupun faktor kesulitan dalam mengimplementasi algoritma tersebut menjadi pertimbangan yang utama.

Contoh terdapat 2 buah algoritma untuk menghitung xn

Algoritma POWER1( ) : sederhana dan langsung (murah) memerlukan (n-1) perkalian (lambat) sesuai untuk n berskala kecil. Algorimta POWER2( ) : lebih kompleks dan rekursif (mahal) memerlukan ( 2log n ) perkalian (cepat) sesuai untuk n berskala besar.

Running Time dan penggunaan memory Analisa terhadap efisiensi suatu algoritma lebih ditekankan pada banyaknya sumber daya yang diperlukan dan dinyatakan sebagai fungsi dari besarnya input algoritma tersebut. Sedangkan pada analisa terhadap kompleksitas lebih pada identifikasi terhadap operasi dasar dan berapa kali operasi dasar tersebut perlu dilakukan dalam suatu algoritma. Dalam hal ini yang perlu diingat adalah bahwa analisa kompleksitas tidak bergantung pada jenis komputer yang digunakan. Contoh: efisiensi dapat ditentukan oleh banyaknya memori (space) yang diperlukan dan/atau lamanya waktu komputasi (running time) yang dibutuhkan sesuai dengan besarnya input algoritma tersebut.

Catatan Space : yang diperlukan oleh suatu algoritma, ditentukan dari jumlah dan ukuran variabel dan struktur data yang digunakan: Running Time: ditentukan oleh banyaknya operasi dasar yang dilakukan selama proses. Space-Time Trade-off: dalam banyak hal, space dan time yang diperlukan suatu algoritma selalu bersifat tolak belakang: “makin berkurang space, maka makin bertambah waktu yang diperlukan, dan sebaliknya”. Contoh: POWER2( ) meskipun melakukan jumlah operasi perkalian yang lebih sedikit, tetapi bersifat rekursif yang memerlukan space besar.

Operasi operasi dasar Operasi-operasi dasar pada suatu algoritma adalah operasi yang waktu prosesnya dibatasi oleh (memiliki batas atas) suatu nilai konstan dan hanya bergantung pada implementasi yang digunakan. Pada analisa algoritma, lebih diperhatikan pada banyaknya operasi dasar yang dilakukan dari pada waktu sebenarnya yang diperlukan oleh masing-masing operasi dasar tersebut; dengan perkataan lain setiap operasi dasar dapat dilihat sebagai satu satuan biaya (unit cost).

Contoh Pada suatu array T yang terdiri dari n elemen, waktu yang diperlukan oleh operasi: x  min{T[ i ] | 1  i  n } akan bergantung pada besarnya nilai n . Hal tersebut dapat digambarkan oleh proses sbb.: x  T[ 1 ]; for i  2 to n do if T[ i ] < x then x  T[ i ];

Operasi dasar, Contoh Berikut ini beberapa contoh operasi dasar yang biasa digunakan sebagai ukuran kompleksitas suatu algoritma tertentu:

Wall-clock time Disini pengukuran suatu algoritma dihitung berdasarkan waktu nyata (dengan menggunakan stop-watch) untuk bermacam ukuran input. Karakteristik: Bergantung pada jenis mesin/komputer yang digunakan. Bergantung pada keahlian programmer yang mengimplementasikan. Bergantung pada bahasa pemrograman yang digunakan.

Time Complexity (Asymptotic Running Time Complexity)‏ Pengukuran dilakukan berdasarkan waktu yang diperlukan pada setiap operasi dasar, dan mengalikan waktu tersebut sesuai dengan banyaknya operasi tersebut dilakukan pada saat algoritma dijalankan. Asumsi: algoritma mengandung sejumlah operasi dasar. setiap perintah/instruksi dalam algoritma dilakukan secara berurutan (tidak dapat dilakukan secara simultan untuk 2 instruksi atau lebih).

Contoh

dengan demikian dapat dikatakan bahwa running time algoritma POWER1( ) adalah: T(n) = t1 + t2 (n - 1) + t3 (n - 1) + t4 = ( t2 + t3 ).(n - 1) + ( t1 + t4 ) Analisa: Dari proses di atas tampak bahwa langkah 1 dan 4 yang memerlukan waktu ( t1 + t4 ) tidak dipengaruhi sama sekali oleh besarnya input n. Dengan demikian algoritma POWER1() hanya dipengaruhi secara dominan oleh ( t2 + t3 ).(n - 1) yang merupakan fungsi dari input n.

Running time

Analisa secara eksak adalah cukup sulit

Analisa kasus terburuk dan rata rata running time suatu algoritma ditentukan terutama oleh banyaknya operasi dasar yang dilakukan. running time juga dipengaruhi tidak hanya oleh ukuran besarnya input yang berbeda-beda, tetapi juga oleh urutan dari data inputnya.

Algoritma Insertion Sort Algoritma Selection Sort Contoh Algoritma Insertion Sort Algoritma Selection Sort Insertion ( T[1..n] ) Selection ( T[1..n] ) 1 for I  2 to n do for I  1 to n do 2 x  T[I] min_j  I ; min_x  T[I] 3 j  I - 1 for j  ( I + 1 ) to n do 4 while j > 0 and x < T[j] do if T[j] < min_x then 5 T[j + 1]  T[j] min_j  j 6 j  j - 1 min_x  T[j] 7 T[j+ 1]  x T[min_j]  T[I] 8 end T[I]  min_x 9

Bila diberikan 2 buah array, U = [ 1, 2, 3, 4, 5, 6 ] dan V = [ 6, 5, 4, 3, 2, 1 ], dan kita jalankan pada kedua algoritma di atas, maka dapat dilihat bahwa: Kedua algoritma di atas memerlukan waktu yang lebih lama pada V dari pada U. Pada kedua algoritma, V menyatakan kasus terburuk (worst case) yakni tidak ada lagi susunan array dengan ukuran yang sama, yang lebih lama running time-nya. Pada algoritma Selection, perbedaan antara proses untuk U dan V tidaklah terlalu signifikan.

Karakteristik : worst case Worst-case Analysis: lebih sesuai untuk algoritma yang memerlukan respon waktu yang kritis, seperti program pengendali pembangkit tenaga nuklir, dimana dijamin tidak ada running time algoritma tersebut yang melebihi worst-case-nya.

Karakteristik : average case Average-case Analysis: lebih sesuai untuk algoritma yang sering digunakan berulang-ulang pada input yang berbeda-beda. Meskipun demikian analisa ini lebih sulit ditentukan (karena harus mengetahui fungsi distribusi probabilitas yang sesuai untuk data-datanya.

Karakteristik : best case Best-case Analysis: kompleksitas ini mudah untuk ditentukan, namun tidak dapat digunakan untuk mengukur kinerja suatu algoritma, melainkan biasa digunakan sebagai batas bawah dari kompleksitas average-case.

Perbandingan kompleksitas pada Best, Average dan Worst vase Algoritma B(n) A(n) W(n) Tower of Hanoi 2n Linear Search 1 n Binary Search Log n Insertion Sort n2 Merge Sort n Log n Heap Sort Quick Sort

Algoritma Selection Sort t(n) Selection ( T[1..n] ) d 1 for I  2 to n do c 2 min_j  I ; min_x  T[I] 3 for j  ( I + 1 ) to n do b 4 if T[j] < min_x then 5 min_j  j a c + b + a(n-I) 6 min_x  T[j] 7 T[min_j]  T[I] 8 T[I]  min_x 9 end

maka waktu yang diperlukan tidak akan lebih dari: yang dapat disederhanakan menjadi: (a/2).n2 + (b+c - a/2).n + (d-c-b). Waktu di atas menunjukkan bahwa, fungsi yang diperoleh didominasi oleh suku (a/2).n2. Sesuai dengan definisi big-Oh, kita dapat pilih f(n) = n2, c = a/2 dan n0 = 0, dapat dikatakan algoritma tersebut memiliki waktu dalam O(n2).

Analisa algoritma bentuk rekursi Suatu algoritma yang mengandung proses rekursif, biasanya lebih sulit untuk dianalisa. Berdasarkan pengalaman dan intuisi, analisa dapat dilakukan dengan cara: lakukan bentuk rekursif tersebut dengan beberapa kali langkah awal. tentukan pola pengulangannya berdasarkan langkah rekursif awal tersebut. tebaklah formula umumnya. ujilah formula umum tersebut dengan cara induksi matematika.

barisan Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, ... dapat analisa sebagai berikut bentuk rekursif 0, 1, 1, 2, 3, ... pola pengulangan: suku baru = jumlah dua suku sebelumnya formula umum: sn = sn-1 + sn-2, dengan kondisi awal: s0 =0 dan s1=1. (buktikan) dengan induksi matematik, bahwa bentuk (3) adalah benar.

Bentuk rekursif Untuk bentuk-bentuk rekursif tertentu, terdapat beberapa teknik yang dapat digunakan langsung di dalam menentukan kelas dari bentuk rekursif tersebut; antara lain: Bentuk rekursi linier homogen Bentuk rekursi linier inhomogen

Next Menyelesaikan bentuk rekursif dengan relasi rekurens

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.

Latihan Dengan algoritma rekursif tersebut dalam pelajaran di atas, tentukan Power2(2,1) Power2(3,4) Power2(2,5)