Analisa Kompleksitas Algoritma. Sunu Wibirama

dokumen-dokumen yang mirip
Algoritma dan Struktur Data

METODE PENELITIAN HASIL DAN PEMBAHASAN

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Pengantar Analisa Algoritma

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma

Pendahuluan. Ukuran input (input s size)

Langkah Awal menuju Analisis Kompleksitas Algoritma

Logika dan Algoritma Yuni Dwi Astuti, ST 2

Design and Analysis Algorithm

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

Algoritma Sorting (Selection Insertion)

Penerapan Algoritma Bucket Sort Untuk melakukan Pengurutan n buah Bilangan Mata Kuliah Pemrosesan Paralel

Analisis Kecepatan Sorting Dengan Notasi Big O

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Algoritma dan Struktur Data. Performansi Algoritma

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

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

Analisis dan Strategi Algoritma

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

Design and Analysis of Algorithm

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Komputasi Paralel Sebagai Alternatif Solusi Peningkatan Kinerja Komputasi

Kompleksitas Algoritma

Hubungan Kompleksitas Algoritma dengan Cara Belajar

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Langkah Awal menuju Analisis Kompleksitas Algoritma

BAB 3 ANALISA SISTEM

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Analisis Algoritma Bubble Sort

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

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

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

RENCANA PEMBELAJARAN SEMESTER (RPS)

Metode Numerik & Lab. Muhtadin, ST. MT. Metode Numerik & Komputasi. By : Muhtadin

ANALISIS PERBANDINGAN ALGORITMA BUBBLE SORT, MERGE SORT, DAN QUICK SORT DALAM PROSES PENGURUTAN KOMBINASI ANGKA DAN HURUF

Perbandingan Performa Algoritma Greedy dan Dynamic Programming

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Kompleksitas Algoritma

BAB II LANDASAN TEORI

BAB VI SORTIR ATAU PENGURUTAN

Komparasi Algoritma Quicksort dan Bucket Sort pada Pengurutan Data Integer

Kompleksitas Algoritma

BAB 2 LANDASAN TEORI

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

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

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

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

JARINGAN UNTUK MERGING

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

BAB 2 LANDASAN TEORI. 2.1 Algoritma

Saintek Vol 5, No 2 Tahun 2010 ANALISIS EDIT DISTANCE MENGGUNAKAN ALGORITMA DYNAMIC PROGRAMMING. Arip Mulyanto

Pengelompokan Organisme Dengan Menggunakan Algoritma Kruskal

APLIKASI PENERJEMAH KALIMAT BAHASA INDONESIA KE BAHASA SIMALUNGUN DENGAN ALGORITMA BERRY - RAVINDRAN

Struktur Data dan Analisa Algoritma

Kontrak Perkuliahan & Introduction

BAB II LANDASAN TEORI

BAB I PENDAHULUAN Latar Belakang

RENCANA PEMBELAJARAN SEMESTER (RPS)

Outline STRUKTUR DATA. VII. Sorting

SATUAN ACARA PERKULIAHAN (SAP)

QUICKSORT: METODE PENGURUTAN ARRAY SATU DIMENSI YANG CEPAT DAN EFISIEN. (Quicksort: Quick and Efficient One-Dimension Array Sorting Method)

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

BAB 2 LANDASAN TEORI

BAB II TINJAUAN PUSTAKA

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Perbandingan Performa Kombinasi Algoritma Pengurutan Quick-Insertion Sort dan Merge-Insertion Sort

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

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

BAB II TINJAUAN PUSTAKA

Perbandingan Algoritma Pencarian Kunci di dalam Himpunan Terurut Melalui Linear Search dan Binary Search

KOMPUTASI PADA JARINGAN KOMPUTER SEBAGAI ALTERNATIF PENINGKATAN KINERJA KOMPUTASI

Aplikasi OBE Untuk Mengurangi Kompleksitas Algoritma Program Penghitung Determinan Matriks Persegi

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Menghitung Inversion Pada Barisan Dengan Menggunakan Modifikasi Bubble Sort, Insertion Sort, dan Merge Sort

Jurnal Mahajana Informasi, Vol.1 No 2, 2016 e-issn: SIMULASI PENGURUTAN DATA DENGAN ALGORITMA HEAP SORT

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Algoritma dan Kompleksitas Algoritma

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

Kompleksitas Algoritma

ANALISIS ALGORITMA BINARY SEARCH

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

STRATEGI DIVIDE AND CONQUER

Design and Analysis of Algorithms CNH2G3- Week 5 Kompleksitas waktu algoritma rekursif part 2: Metode Karakteristik

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

Variasi Pohon Pencarian Biner Seimbang

EXERCISE WORKBOOK MI /2012#07

Perbandingan Algoritma Brute Force, Divide and conquer, dan Dynamic Programming untuk Solusi Maximum Subarray Problem

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

EFISIENSI ALGORITMA DAN NOTASI O-BESAR

Pendahuluan Metode Numerik

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

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

OPTIMASI ALGORITMA POHON MERENTANG MINIMUM KRUSKAL

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

UNIVERSITAS GUNADARMA

BAB III ANALISIS DAN PERANCANGAN SISTEM

Pengkajian Algoritma Pengurutan-Tanpa-Pembandingan Counting Sort dan Radix Sort

Sieve of Eratosthenes dan Aplikasinya Dalam Problem Solving

Black-Box Testing. Julian Supardi, M.T. Sumber Slide: Oerip S. Diterjemahkan Oleh: Rosa Ariani Sukamto.

Transkripsi:

Analisa Kompleksitas Algoritma Sunu Wibirama

Referensi Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms 2nd Edition, Massachusetts: MIT Press, 2002 Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998 Video lecture MIT Opencourseware ke-1: Introduction Video lecture IIT Kharagpur, India ke-18: Complexity of Algorithm

Video lecture MIT Opencourseware ke-1: Introduction Video lecture IIT Kharagpur, India ke-18: Complexity of Algorithm

Agenda Hari Ini Pentingnya Analisa Algoritma Prinsip Perbandingan Algoritma Dasar-dasar Matematika dan Teori Big-O Contoh Implementasi Kesimpulan

Apa yang pertama kali Anda menjadi pertimbangan Anda saat membeli komputer, selain PERFORMA? Kehandalan dalam menyelesaikan masalah (robustness) Fungsionalitas (functionality) Tampilan grafis (user interface) Daya tahan (reliability) Keamanan (security) Kesederhanaan (simplicity) Kemudahan dalam penggunaan (user friendly) Kemudahan dalam pemeliharaan (maintainability)

Algoritma dan Performa Hal-hal yang menjadi pertimbangan utama Anda tidak muncul dengan gratis Performa sistem menjadi alat tukar seperti uang. Algoritma program memegang peran kunci Algoritma adalah teknologi, engineered, sebagaimana perangkat keras komputer

Pentingnya Analisa Algoritma Algoritma membantu kita memahami skalabilitas program kita Performa terkadang menjadi pembeda antara yang mungkin dilakukan dan yang tidak mungkin dilakukan Analisa algoritma memberi gambaran informasi tentang perilaku program kita Mempelajari bagaimana menerapkan algoritma yang baik untuk kasus tertentu membedakan profesi system analyst dan programmer

Prinsip Perbandingan Algoritma Apa yang membuat sebuah algoritma dikatakan LEBIH BAIK dari algoritma yang lain? Kompleksitas waktu (Time Complexity) Kecenderungan saat ini: ruang (hard disk) semakin murah Kompleksitas ruang (Space Complexity) kapasitas data yang diproses semakin besar waktu pemrosesan harus semakin cepat Kompleksitas waktu menjadi variabel yang sangat penting

Penyebab variasi pada hasil analisa algoritma Program aras tinggi diterjemahkan ke bahasa mesin. Setiap tipe prosesor memiliki prosedur bahasa mesin yang berbeda Aplikasi dijalankan di shared environment, sehingga terpengaruh oleh penggunaan memori Program sangat sensitif terhadap masukan dan akan menunjukkan performa yang jauh berbeda untuk rentang masukan yang tidak terlalu berbeda Program tidak dipahami dengan baik, sehingga analisa matematika kurang merepresentasikan kondisi yang sesungguhnya Program tersebut memang tidak bisa dibandingkan dengan program yang lain karena hanya optimal untuk input-input tertentu

Hal-hal yang perlu diperhatikan pada analisa algoritma Memisahkan operasi pada tingkat abstraksi dan implementasi. Contoh: menghitung jumlah instruksi scanf pada program lebih diprioritaskan daripada memahami berapa nanoseconds instruksi scanf dieksekusi Mengidentifikasi data masukan: - Strategi average dan worst case - Strategi random dan biggest data

Dasar Matematika & Teori Big-O Sebagian besar algoritma memiliki parameter primer N yang sangat mempengaruhi waktu eksekusi Parameter N bisa berupa: - derajat polinomial - ukuran berkas (file) yang diproses - jumlah karakter pada text string - ukuran data yang diproses Pengukuran kompleksitas: Big-O

cg(n) Teori Big-O f (n) Teorema Matematika: n 0 n f (n) = O(g(n)) (b) O(g(N)) = { f (N) : jika terdapat konstanta positif c dan N 0, sehingga 0 f (N) cg(n) untuk semua N N 0 } Engineering: Hilangkan orde yang lebih rendah dan konstanta. Gunakan hanya orde tertinggi pada polinomial Contoh: 3n 3 + 90n 2 5n + 6046 = O(N 3 )

Macam-macam Parameter N 1 log N Sebagian besar instruksi dieksekusi satu kali atau dalam jumlah yang tidak terlalu banyak (waktu eksekusi konstan) Pertumbuhan waktu eksekusi program tidak terlalu cepat. Waktu eksekusi ini terdapat pada program yang memecahkan masalah dengan kapasitas yang cukup besar, dipecah-pecah menjadi beberapa bagian N Waktu eksekusi program linier. Sebagian besar masukan diproses dalam jumlah yang tidak terlalu banyak N log N Waktu eksekusi ini terdapat pada program yang memecahkan masalah menjadi beberapa bagian, menyelesaikannya secara terpisah, kemudian menggabungkannya kembali

Macam-macam Parameter N (cont d) N 2 Biasanya digunakan untuk memecahkan masalah dalam jumlah kecil. Biasanya terdapat pada program yang memproses pasangan data (quadratic) atau array dua dimensi secara bersamaan (double-nested loop) N 3 Biasanya digunakan untuk memecahkan masalah dalam jumlah kecil. Biasanya terdapat pada program yang memproses tiga buah data (cubic) atau array tiga dimensi secara bersamaan (triple-nested loop) 2 N Waktu eksekusi program linier. Sebagian besar masukan diproses dalam jumlah yang tidak terlalu banyak

Beberapa perbandingan kompleksitas algoritma O(N 2 ) Running Time (seconds) O(N!) O(N log N) O(N) O(1) O(log N) Figure 1-1: Comparison of different orders of complexity. Input size (N)

Formula Kondisi Periodik Sebagian besar algoritma terdiri dari proses penyelesaian masalah dengan memanfaatkan perulangan (rekursif) Bagian yang berulang tersebut secara tidak langsung berkontribusi pada kompleksitas sebuah algoritma Perlu mengetahui formula-formula dasar untuk kondisi periodik

Formula Kondisi Periodik Formula 1: kondisi periodik muncul pada program rekursif yang mengeliminasi satu item input Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998

Formula Kondisi Periodik Formula 2: kondisi periodik muncul pada program rekursif yang membagi input menjadi dua bagian hanya dengan satu langkah Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998

Formula Kondisi Periodik Formula 3: kondisi periodik muncul pada program rekursif yang membagi input menjadi dua bagian, namun perlu memeriksa tiap-tiap input Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998

Formula Kondisi Periodik Formula 4: kondisi periodik muncul pada program rekursif yang mengolah input secara linear sebelum, pada saat, dan sesudah membagi input menjadi dua bagian Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998

Formula Kondisi Periodik Formula 5: kondisi periodik muncul pada program rekursif yang membagi input menjadi dua bagian, kemudian mengerjakan input lain dengan kapasitas konstan Sedgewick, R., Algorithms in C++ Part 1-4, Massachusetts: Addison-Wesley Publisher, 1998

Jenis analisa waktu eksekusi Strategi Worst case (umum digunakan) T(N) = waktu eksekusi maksimum untuk jumlah data N Strategi Average case (jarang digunakan) T(N) = waktu yang diharapkan dari sebuah algoritma untuk mengeksekusi data sejumlah N. Perlu ada asumsi statistik untuk distribusi data masukan

Analisa worst case Biasanya mengambil batas maksimal (upper bound), untuk memberi jaminan bahwa program tidak akan terus berjalan saat batas maksimal waktu eksekusi tercapai Waktu eksekusi juga tergantung pada kondisi awal input : data yang sudah terproses akan lebih mudah dieksekusi daripada yang belum Untuk worst-case, diambil kemungkinan yang paling buruk (data tidak terproses sama sekali, pada kondisi yang berlawanan dengan kondisi akhir yang diharapkan)

Machine-independent Running Time Berapakah waktu eksekusi terburuk (worst-case) dari sebuah algoritma? Tergantung dari kecepatan mesin kita: - kecepatan relatif: berjalan di komputer yang sama - kecepatan absolut: berjalan di komputer yang berbeda Kita ingin mengukur kecepatan algoritma tanpa mempertimbangkan kecepatan komputer Analisa Asymptotic : Pertumbuhan waktu eksekusi T(N) saat N

Performa Asymptotic Pada jumlah data tertentu (> N0), algoritma dengan kompleksitas rendah O(n 2 ) bisa saja lebih efisien dibandingkan algoritma dengan kompleksitas tinggi Kita tidak boleh meremehkan sebuah algoritma yang secara asymptotic lebih lambat A2"3 O(n 2 ) O(n 3 ) Dalam disain riil, kita perlu menyeimbangkan proses engineering dengan melihat algoritma yang sesuai untuk masalah yang dihadapi " ", Analisa Asymptotic membantu kita untuk berlaku lebih adil terhadap algoritma yang kita gunakan

Teori Big-O Untuk membandingkan dua buah algoritma, bandingkan tingkat kompleksitasnya lim N f (N) g(n) Untuk N besar g(n) lebih efisien dari f(n) lim N f (N) g(n) 0 Untuk N besar f(n) lebih efisien dari g(n)

Implementasi: Insertion Sort!"#$%& 1"23"45"((? / *(? + *(6*(? " 78(43%&"'10 '$%#$%& #"'%3$9$:74((?A / B*?A + B*6B*?A " 135; $;9$((?A /?A + 6?A " 0 123*%)#4!"#$%& <((+((=((>((?((@ '$%#$%& +((?((=((@((<((> Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms 2nd Edition, Massachusetts: MIT Press, 2002

Implementasi: Insertion Sort 1 + 2 3 4 5 2 + 3 1 4 5 + 1 2 3 4 5 + 1 2 3 4 5 + 2 1 3 4 5 + 1 2 3 4 5 + 2 1 3 4 5 + 5 3 2 4 1 + 4 2 1 3 5 + 4 2 5 1 3 &%"> + 3 2 4 1 5 Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms 2nd Edition, Massachusetts: MIT Press, 2002

Implementasi: Insertion Sort A#B"C>DED>"F 12!3451627!645(8+*("9 +:/(0(0("; *(% A* + &( " +( ;>3* +:(A; )* A*B /,-'.$ )*C*, <=>(+:);(?(;>3 +( +:)D/;( +:); )* )*B / +:)D/;(@(;>3 +G / ) A " BD'$"> ;>3 Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms 2nd Edition, Massachusetts: MIT Press, 2002

INSERTION-SORT(A) cost times 1 for j 2 to length[a] c 1 n 2 do key A[ j] c 2 n 1 3 Insert A[ j] intothesorted sequence A[1.. j 1]. 0 n 1 4 i j 1 c 4 n 1 5 while i > 0andA[i] > key c n 5 j=2 t j 6 do A[i + 1] A[i] c n 6 j=2 (t j 1) 7 i i 1 c n 7 j=2 (t j 1) 8 A[i + 1] key c 8 n 1 n T (n) = c 1 n + c 2 (n 1) + c 4 (n 1) + c 5 t j + c 6 n + c 7 (t j 1) + c 8 (n 1). j=2 j=2 n (t j 1) j=2 n j=2 j = n(n + 1) 2 and n ( j 1) = j=2 1 n(n 1) 2 ( ) n(n + 1) T (n) = c 1 n + c 2 (n 1) + c 4 (n 1) + c 5 1 2 ( ) ( ) n(n 1) n(n 1) + c 6 + c 7 + c 8 (n 1) 2 2 ( c5 = 2 + c 6 2 + c ) ( 7 n 2 + c 1 + c 2 + c 4 + c 5 2 2 c 6 2 c ) 7 2 + c 8 n (c 2 + c 4 + c 5 + c 8 ). + + O(n 2 )

Implementasi: Insertion Sort Worst-case (seluruh input diurutkan terbalik): N j =2 T (N) = O( j) = O(n 2 ) Deret aritmatika Apakah Insertion Sort algoritma yang cepat? - Ya, jika N kecil - Tidak, jika N besar Lihat perbandingannya dengan Merge Sort di slide berikutnya Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms 2nd Edition, Massachusetts: MIT Press, 2002

Contoh komparasi Komputer A: Insertion Sort, lebih cepat untuk N kecil, memproses N data dengan waktu eksekusi Kecepatan eksekusi prosesor 10 9 instruksi/detik Komputer B: Merge Sort, lebih lambat untuk N kecil, memproses N data dengan waktu eksekusi c 1 N 2 Kecepatan eksekusi prosesor 10 7 instruksi/detik c 2 N log N Diketahui: c 1 c 2 Jika c1=2, c2=50, N = 10 6, mana algoritma yang lebih efisien?

Kesimpulan Analisa algoritma diperlukan untuk perbandingan algoritma tanpa tergantung spesifikasi mesin Analisa algoritma membantu kita memecahkan masalah sesuai kondisi dan data yang kita hadapi Analisa algoritma bukan alat mutlak untuk memilih algoritma terbaik, tapi membantu memahami perilaku algoritma saat diterapkan di dunia nyata

Terima Kasih