Pengantar Analisa Algoritma

dokumen-dokumen yang mirip
Algoritma dan Struktur Data. Performansi Algoritma

Algoritma dan Struktur Data

Analisa Algoritma. Konsep Algoritma

Design and Analysis Algorithm

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Kompleksitas Algoritma

Pendahuluan. Ukuran input (input s size)

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Kompleksitas Algoritma

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Kompleksitas Algoritma

Analisis Kecepatan Sorting Dengan Notasi Big O

Analisa Kompleksitas Algoritma. Sunu Wibirama

Design and Analysis of Algorithm

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 03

Design and Analysis Algorithm

Kompleksitas Algoritma

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Struktur Data & Algoritma

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 04

Algoritma Sorting (Selection Insertion)

Langkah Awal menuju Analisis Kompleksitas Algoritma

Design and Analysis of Algorithms CNH2G3- Week 4 Kompleksitas waktu algoritma rekursif part 1

ANALISIS ALGORITMA BINARY SEARCH

BAB 2 TINJAUAN PUSTAKA

JARINGAN UNTUK MERGING

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

STRATEGI DIVIDE AND CONQUER

Komparasi Algoritma Mergesort dengan Quicksort pada Pengurutan Data Integer

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

Analisis Algoritma Bubble Sort

Setelah mempelajari topik Analisis Algoritma di kuliah SDA, ada beberapa kompetensi yang perlu Anda kuasai:

BAB 3 ANALISA SISTEM

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Kompleksitas Algoritma Rank Sort dan Implementasi pada Parallel Programming Dengan Menggunakan OpenMP

Langkah Awal menuju Analisis Kompleksitas Algoritma

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Outline STRUKTUR DATA. VII. Sorting

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik. Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n 2 + 1) + 5n 2

BAB II TINJAUAN PUSTAKA. Kriptografi (cryptography) berasal dari Bahasa Yunani: cryptós artinya

ALGORITHM. 2 Analysis Algorithm. Dahlia Widhyaestoeti, S.Kom dahlia74march.wordpress.com

Kompleksitas Algoritma (1)

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

Aplikasi OBE Untuk Mengurangi Kompleksitas Algoritma Program Penghitung Determinan Matriks Persegi

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

BAB II TINJAUAN PUSTAKA. Kriptografi adalah ilmu sekaligus seni untuk menjaga keamanan pesan (message).

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

BAB 2 LANDASAN TEORI

Program Attributes. Algorithm Analysis. Time Consumption. Algoritma

Algoritma dan Kompleksitas Algoritma

BAB 2 LANDASAN TEORI. Algoritma Optimal Mismatch ini mencari data secara berurut pada tiap

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Kompleksitas Komputasi

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

OPERASI MATRIKS. a 11 a 12 a 13 a 14 A = a 21 a 22 a 23 a 24 a 31 a 32 a 33 a 34 a 41 a 42 a 43 a 44

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Kompleksitas Algoritma dalam menentukan Solvabilitas Sliding N-Puzzle

CHAPTER 3 ALGORITHMS 3.1 ALGORITHMS

NASKAH UJIAN UTAMA. JENJANG/PROG. STUDI : DIPLOMA TIGA / MANAJEMEN INFORMATIKA HARI / TANGGAL : Kamis / 18 FEBRUARI 2016

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Array Multidimensi. Pemrograman Dasar. Java

Algoritma dan Pemrograman. Loop control structures: WHILE. Loop control structures: WHILE Perhatikan potongan program berikut: 12/29/2011

Testing is the exposure of a system to trial input to see wheter it produces corect output Adalah proses eksekusi suatu program dengan maksud

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

PERTEMUAN 11 TEHNIK SEARCHING

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

TEKNIK OPTIMASI. Dependensi Optimasi. Optimasi Lokal. Menghasilkan kode program dengan ukuran yang lebih kecil, sehingga lebih cepat eksekusinya.

Decrease and Conquer

SEARCHING & SORTING. Pendahuluan

Analisis Perbandingan Kompleksitas Algoritma Pengurutan Nilai (Sorting)

BAB II TINJAUAN PUSTAKA

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

OPERASI PERNYATAAN KONDISI

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

Pemrograman Dasar L A T I H A N M E T H O D / F U N G S I M E T H O D R E K U R S I F

BAB 2 LANDASAN TEORI

BAB 2 TINJAUAN PUSTAKA

BAB 2 LANDASAN TEORI. 2.1 Algoritma

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

METODE DEVIDE AND CONQUER (DANDC)

' x KAJIAN ALGORITMA KOMPUTASI PERSAMAAN DIFFERENSIAL PARSIAL (PDP) Agus Sujono *)

BAB 2 LANDASAN TEORI

BAB I PENGANTAR Pendahuluan Penyajian 1.1 Latar Belakang 1.2 Algoritma dan Struktur Data

Pengambilan Keputusan. Konsep Pemrograman Oleh Tita Karlita

Transkripsi:

Pengantar Analisa Algoritma

Pendahuluan Suatu permasalahan memungkinkan untuk diselesaikan dengan lebih dari satu algoritma (pendekatan) Bagaimana kita memilih satu diantara beberapa algoritma tersebut. Bagaimana kita mengukur efisiensi dari algoritma tersebut?

Mengukur Efisiensi : Perbandingan Empiris: Run Program Analisis Algoritma (Asimptotis)

Kesulitan Perbandingan Empiris : Diperlukan usaha pemrograman dan pengujian yang lebih banyak Penulisan program yang berbeda memungkinkan menghasilkan kualitas program yang berbeda Pemilihan kasus-kasus uji empiris mungkin tidak selalu sesuai untuk semua algoritma yang diuji.

Sumberdaya kritis suatu program running-time (waktu eksekusi program), sehingga kita harus menganalisa waktu yang diperlukan untuk me-run program (algoritma). ruang (memory, space- memori utama dan memori tambahan) yang diperlukan untuk me-run program. Ruang yang diperlukan ini sangat berkaitan dengan struktur data yang digunakan.

Faktor yang mempengaruhi running-time Lingkungan dimana program itu dijalankan, yang antara lain meliputi kecepatan CPU, bus dan perangkat keras pendukung yang lain. Persaingan dengan user lain pada jaringan juga bisa memperlambat waktu eksekusi. Bahasa pemrograman dan kualitas kode yang dihasilkan oleh kompiler juga dapat memberikan pengaruh yang signifikan. Kemampuan pemrogram yang menerjemahkan algoritma ke kode program juga berpengaruh.

Analisis Algoritma Analisis algoritma asimptotis (asymptotic algorithm analysis) mengukur efisiensi suatu algoritma berdasar-kan ukuran input (yang biasanya besar), karena running-time suatu algoritma sebagian besar tergantung pada ukuran input. Teknik ini lebih bersifat estimasi

Analisa Algoritma (lanjutan) Pertimbangan utama ketika mengestimasi performansi suatu algoritma adalah jumlah operasi dasar (basic operation) yang diperlukan untuk oleh algoritma untuk memproses suatu input dengan ukuran (size) Running time dinyatakan dalam T(n) untuk fungsi T pada input dengan ukuran n

Contoh: Diberikan suatu algoritma untuk menemukan nilai terbesar dalam suatu array yg berisi n integer positip static int largest(int[ ] A, int n) { int currlarge = 0; for (int i=0; i<n; i++) if (A[i] > currlarge) currlarge=a[i]; return currlarge; } // Dapatkan nilai terbesar // inisialisasi nilai terbesar saat ini // untuk setiap elemen array // nilai terbesar saat ini berubah // return nilai terbesar Misalkan c jumlah waktu yang diperlukan untuk menguji suatu nilai dalam fungsi ini, termasuk didalamnya waktu yang diperlukan untuk increment nilai i dll, maka T(n) = cn

Contoh 2 Misal cuplikan kode program sebagai berikut sum = 0; for(i=1;i<=n;i++) for(j=1;j<=n;j++) sum++ ; Maka, T(n) = c2 n 2

Best, Worst dan Average Cases Untuk beberapa algoritma, input yang berbeda dapat memerlukan jumlah waktu yang berbeda. Sebagai ilustrasi, misalkan kita ingin mencari suatu elemen array (posisi) yang memuat nilai K dan algoritma akan berhenti jika nilai K ditemukan. Dengan pencarian secara sekuensial Best case: 1 Worst case: n Average case: n/2

Best, Worst dan Average Cases Best case Umumnya kita tidak digunakan karena jarang terjadi dan terlalu optimistik untuk karakteristik umum dari running-time suatu algoritma. Worst case Bisa diketahui secara pasti bahwa paling buruk algoritma akan memerlukan proses sebanyak kasus terburuk ini. Analisa ini juga sangat penting digunakan untuk aplikasi realtime (waktu-nyata) Average case Menyatakan perilaku umum suatu algoritma bila diberikan input dengan ukuran n

Komputer Lebih Cepat vs Algoritma Lebih Cepat Apa yang terjadi jika kita membeli komputer baru yang mempunyai kecepatan 10 kali lebih cepat (misal dapat memproses 100.000 input dalam satu satuan waktu) dibandingkan komputer lama (misal dapat memproses 10.000 input)? Pada kasus tertentu, penambahan kecepatan komputer kurang berpengaruh pada jumlah input yang diproses. Mengapa?

Komputer Lebih Cepat vs Algoritma Lebih Cepat n: ukuran input yang dapat diproses dalam satu detik pada komputer 1 n : ukuran input yang dapat diproses dalam satu detik pada komputer 2 T(n) n n' Perubahan n'/n 10n 1.000 10.000 n' = 10n 10 20n 500 5.000 n' = 10n 10 10n 5n log n 250 1.842 10n < n' < 10n 7,37 2n 2 70 223 3,16 n' = 2 n 13 16 n' = n + 3 --

Growth Rate Graph

Analisis Asimptotis: Batas Atas (Big-Oh) Definisi : T(n) adalah anggota dari himpunan Ο(f(n)) jika ada dua konstanta positip c dan n0 sedemikian hingga T(n) c f(n) untuk semua n > n0 Definisi ini memberikan arti bahwa untuk semua himpunan data yang cukup besar (yaitu n > n0) algoritma akan selalu mengeksekusi lebih kecil dari c f(n) step pada best, average dan worst case.

Contoh-contoh Contoh 2.4: Jika T(n) = 3n 2 maka T(n) ada dalam O(n 2 ). Demikian juga, T(n) ada dalam O(n 3 ), O(n 4 ) dan seterusnya, sehingga yang kita pilih adalah batas atas terkecil (least upper bound). Contoh 2.5: Mencari nilai K yang disimpan dalam suatu array. T(n) = c s n/2 Untuk semua nilai n > 1, c s n/2 c s n Sehingga, dengan definisi, T(n) adalah anggota O(n) untuk n 0 = 1 dan c = c s

Contoh-contoh: Contoh 2.6 : Diketahui T(n) = c 1 n 2 + c 2 n pada average case. Dapatkan O(f(n)) c 1 n 2 + c 2 n c 1 n 2 + c 2 n 2 (c 1 + c 2 ) n 2 untuk semua n > 1, sehingga, T(n) c n 2 untuk c = c 1 + c 2 dan n 0 = 1 Jadi, dengan definisi, T(n) adalah anggota dari O(n 2 ). Contoh 2.7 : T(n) = c adalah anggota dari O(1).

Batas Bawah : Big-Omega Definisi : T(n) adalah anggota dari himpunan Ω(g(n)) jika ada dua konstanta positip c dan n 0 sedemikian hingga T(n) c g(n) untuk semua n > n 0 Definisi ini memberikan arti bahwa untuk semua himpunan data yang cukup besar (yaitu n > n 0 ) algoritma akan selalu mengeksekusi lebih besar dari c g(n) step pada best, average dan worst case.

Contoh Diketahui T(n) = c 1 n 2 + c 2 n pada average case. Dapatkan Ω(g(n)) c 1 n 2 + c 2 n c 1 n 2 untuk semua n > 1 Sehingga, T(n) c n 2 untuk c=c 1 dan n 0 =1 Jadi, berdasarkan definisi, T(n) adalah anggota dari Ω(n 2 ). Demikian juga, T(n) juga merupakan anggota dari Ω(n) dan Ω(1). Pada kasus ini yang kita pilih adalah batas bawah terbesar (greatest lower bound).

Big-Theta Definisi : Suatu algoritma dikatakan anggota Θ(h(n)) jika algoritma itu adalah anggota O(h(n)) dan anggota Ω(h(n)) Contoh 2.9 : Karena T(n) = c 1 n 2 + c 2 n adalah angota O(n 2 ) dan anggota Ω(n 2 ), maka T(n) adalah anggota Θ(n 2 ).

Contoh:

Aturan Simplifikasi Ketika kita menentukan persamaan running time suatu algoritma, kita akan menentukan bentuk yang paling sederhana, sehingga diperlukan aturanaturan penyederhanaan untuk ketiga big-oh, big- Omega dan big-theta

Beberapa Aturan Penyederhanaan: 1) Jika f(n) adalah anggota O(g(n)) dan g(n) adalah anggota O(h(n)), maka f(n) adalah anggota O(h(n)). 2) Jika f(n) adalah anggota O(kg(n)) untuk konstanta k > 0, maka f(n) adalah anggota O(g(n)). 3) Jika f 1 (n) adalah anggota O(g 1 (n)) dan f 2 (n) adalah anggota O(g 2 (n)), maka (f 1 + f 2 )(n) adalah anggota O(max(g 1 (n), g 2 (n))). 4) Jika f 1 (n) adalah anggota O(g 1 (n)) dan f 2 (n) adalah anggota O(g 2 (n)), maka f 1 (n) f 2 (n) adalah anggota O(g 1 (n) g 2 (n)). Aturan ini juga berlaku untuk big-omega dan big-theta.

Time Complexity Examples (1) Contoh 3.9: a = b; This assignment takes constant time, so it is (1). Contoh 3.10: sum = 0; for (i=1; i<=n; i++) sum += n; 25

Time Complexity Examples (2) Contoh 3.11: sum = 0; for (j=1; j<=n; j++) for (i=1; i<=j; i++) sum++; for (k=0; k<n; k++) A[k] = k; 26

Time Complexity Examples (3) Contoh 3.12: sum1 = 0; for (i=1; i<=n; i++) for (j=1; j<=n; j++) sum1++; sum2 = 0; for (i=1; i<=n; i++) for (j=1; j<=i; j++) sum2++; 27

Time Complexity Examples (4) Contoh 3.13: sum1 = 0; for (k=1; k<=n; k*=2) for (j=1; j<=n; j++) sum1++; sum2 = 0; for (k=1; k<=n; k*=2) for (j=1; j<=k; j++) sum2++; 28

Statement Control yang lain? Perhitungan running time dapat dinyatakan secara garis besar sebagai berikut : Untuk loop while, perhitungannya sama dengan loop for Statemen if lebih besar daripada then/else, mungkin melibatkan probabilitas karena adanya penyeleksian kondisi Rekursifitas: diselesaikan dengan relasi berulang Subrotine call: Kompleksitas dari subroutine yang dipanggil Slide berikutnya