Langkah Awal menuju Analisis Kompleksitas Algoritma

dokumen-dokumen yang mirip
Langkah Awal menuju Analisis Kompleksitas Algoritma

PENGENALAN ANALISIS ALGORITMA

BAB 2 LANDASAN TEORI

Algoritma dan Struktur Data

Design and Analysis Algorithm

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Analisis Kecepatan Sorting Dengan Notasi Big O

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

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

Pendahuluan Metode Numerik

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

Kompleksitas Algoritma

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Analisa Kompleksitas Algoritma. Sunu Wibirama

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

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

Logika dan Algoritma Yuni Dwi Astuti, ST 2

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Pengantar Teknik Informatika

JARINGAN UNTUK MERGING

Pengantar Analisa Algoritma

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

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

BAB II TINJAUAN PUSTAKA

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

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

Kompleksitas Algoritma

Design and Analysis Algorithm

Analisis Algoritma Bubble Sort

2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.

ANALISIS ALGORITMA BINARY SEARCH

Algoritma Bubble Sort dan Quick Sort

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Analisis Algoritma: Anany Levitin, Introduction to Design and Analysis of Algorithm, 3 rd Edition, Pearson Education, Inc.

Kompleksitas Algoritma (1)

Algoritma Brute Force (Bagian 2) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik

BAB 2 TINJAUAN PUSTAKA

STRATEGI DIVIDE AND CONQUER

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma

UNIVERSITAS GUNADARMA

KOMPUTASI PEMROGRAMAN

PENGANTAR ALGORITMA & PEMROGRAMAN C/C++ Analisis Algoritma dan Struktur Data (TKE 670)

Algoritma Brute Force (lanjutan)

BAB 2 LANDASAN TEORI

Struktur Data dan Analisa Algoritma

ALGORITMA PENGURUTAN & PENCARIAN

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

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

Outline STRUKTUR DATA. VII. Sorting

Algoritma Brute Force (lanjutan)

BAB 1 PENDAHULUAN. barang, jaringan jalan raya, atau dalam masalah komputasi yaitu jaringan penjadwalan.

BAB 2 LANDASAN TEORI

oleh : Edhy Suta tanta

Review Teori P dan NP

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

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

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

Gambar 13.1 Ilustrasi proses algoritma sorting

Menyelesaikan Puzzle Matematika Braingle dengan Algoritma Brute Force

BAB VI SORTIR ATAU PENGURUTAN

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

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

BAB 2 LANDASAN TEORI

BAB II LANDASAN TEORI

BAB 3 ANALISA SISTEM

BAB 2 LANDASAN TEORI

BAB 2 LANDASAN TEORI

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

Bubble Sort dan Shell-Sort. Yuliana Setiowati

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

BAB 2 LANDASAN TEORI

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

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

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Kontrak Perkuliahan & Introduction

Algoritma Sorting (Selection Insertion)

Pengenalan Algoritma & Struktur Data. Pertemuan ke-1

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

Algoritma Vertex Cover dan Aplikasinya

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

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

KATA PENGANTAR. Puji syukur kami panjatkan ke hadirat Alloh SWT atas terbentuknya Lembar Tugas

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Design and Analysis Algorithm

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Kompleksitas Algoritma

Design and Analysis Algorithm

Algoritma Divide and Conquer

RENCANA PEMBELAJARAN SEMESTER (RPS)

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Penerapan Teknik Binary Search Tree Sebagai Alternatif Penyimpanan Data

METODE DEVIDE AND CONQUER (DANDC)

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

IF5110 Teori Komputasi. Teori Kompleksitas. (Bagian 1) Oleh: Rinaldi Munir. Program Studi Magister Informatika STEI-ITB

RENCANA PEMBELAJARAN SEMESTER (RPS)

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Transkripsi:

Langkah Awal menuju Analisis Kompleksitas Algoritma

Isi Proses Desain dan Analisis Algoritma Tipe-tipe Problem yang penting Kebutuhan akan algoritma yang efisien Analisis framework 2

Proses Desain dan Analisis Algoritma Input contoh problem, jangkauan problem Kemampuan peralatan komputasi Perkiraan: Problem tidak dapat diselesaikan dengan tepat, contoh: akar pangkat dua Algoritma yang memiliki solusi secara tepat akan ditolak jika memerlukan waktu yang relatif lama. Algoritma perkiraan adalah bagian dari algoritma eksak yang lebih memuaskan Algoritma+Struktur Data = Program Pendekatan umum untuk memecahkan masalah secara algoritmik 3

Algorithm Design and Analysis Process Menentukan algoritma: Menggunakan bahasa alami Menggunakan flowchart Menggunakan desain hardware Menggunakan pseudocode Bentuk lain yang lebih cocok? Correctness: membuktikan bahwa algoritma menghasilkan output yang diinginkan untuk setiap input yang sesuai dalam waktu tertentu Biasanya menggunakan induksi matematis Dapatkah digunakan tracing sederhana? Incorrectness Approx alg the error < limit 4

Algorithm Design and Analysis Process Kualitas algoritma: Correctness Efficiency: Time efficiency Space efficiency Simplicity Generality: the problem, input range Pemrograman algoritma: Resiko: transisi yang tidak benar atau tidak efisien Pembuktian kebenaran program? Practical: testing & debugging 5

Beberapa tipe problem penting Sorting Searching Pemrosesan String Problem Graph Problem Kombinatorik Problem Geometrik Problem Numerik 6

Tipe Problem: Sorting Problem: menyusun ulang hal-hal yang terdapat pada daftar dengan urutan naik atau turun Jika ada records, kita perlu sebuah key Terdapat bermacam-macam algoritma sorting Dua properti algoritma sorting: Stabil: Mempertahankan urutan relatif sembarang dua elemen input yang sama Di tempat: tidak memerlukan memori ekstra, kecuali, mungkin, beberapa unit memori 7

Tipe Problem: Searching Problem: menemukan suatu nilai dari sekumpulan nilai yang ada Jangkauan algoritma searching: Pencarian sekuensial hingga pencarian binary (sangat efisien, namun terbatas) dan algoritma didasarkan pada representasi kumpulan nilai tersebut sehingga memungkinkan pencarian yang lebih baik Tantangan: Kumpulan data yang sangat besar Update: add, edit, delete 8

Tipe Problem: Pemrosesan String String = urutan karakter alphabet Minat khusus: text strings, binary strings, gene sequences bioinformatika, dll. Problem khusus: pencocokan string Pencarian suatu kata dalam teks 9

Tipe Problem: Problem Graph Algoritma graf dasar: graph traversal, shortest-path, sorting topologik pada graph dengan ujung berarah Beberapa problem sangat sulit diselesaikan dengan komputasi hanya beberapa contoh problem yang dapat diselesaikan dalam waktu yang dapat diterima Traveling Salesman Problem (TSP) Graph-Coloring Problem (GCP) 10

11

Tipe Problem : Permasalahan Kombinatorik Problem: menemukan suatu objek kombinatorik seperti permutasi, kombinasi, atau subset yang memenuhi batasan-batasan tertentu dan memiliki properti yang diinginkan Problem-problem paling sulit Sejumlah objek kombinatorik tertentu tumbuh dengan cepat seiring peningkatan ukuran problem Tidak diketahui algoritma eksak untuk menyelesaikan problem tersebut dalam waktu yang diinginkan Dari perspektif yang lebih abstrak, TSP & GCP merupakan salah satu contoh permasalahan kombinatorik 12

Tipe Problem : Pemasalahan Geometrik Berkaitan dengan objek geometrik: titik, garis, poligon, dll. Yunani kuno: membangun bentuk geometris sederhana segitiga, lingkaran, dll. menggunakan penggaris dan kompas yang tidak ditandai Masa kini: aplikasi komputer grafik, robot, tomography* Problem klasik: Problem closest-pair: diberikan n titik pada suatu bidang, temukan pasangan terdekat diantaranya Problem Convex hull: temukan poligon cembung terkecil yang melibatkan semua titik yang telah ditentukan *) method of radiography displaying details in a selected plane within the body 13

14

Tipe Problem: Permasalahan Numerik Melibatkan objek matematis yang memiliki sifat kontinyu: memecahkan persamaan dan sistem persamaan, menghitung integral tak berhingga, mengevaluasi fungsi, dll. Mayoritas problem-problem di atas hanya dapat dipecahkan dengan perkiraan Komputer hanya dapat merepresentasikan angka real dengan kira-kira Akumulasi kesalahan round-off Perubahan fokus komputasi industri: analisis numerik (pada industri & ilmu pengetahuan) menuju aplikasi bisnis (penyimpanan informasi, retrieval, transportasi melalui jaringan, dan presentasi kepada pengguna) 15

Kebutuhan algoritma yang Efisien Anggaplah anda memiliki komputer dengan kecepatan yang tidak terbatas dengan kapasitas memori gratis yang tidak terbatas Masih perlukah untuk mempelajari algoritma? 16

Absolutely YES! Anda masih harus mendemonstrasikan bahwa metode pencarian solusi anda dapat berakhir dengan jawaban yang benar pula. 17

Back to the real world Komputer mungkin saja cepat, tapi kecepatannya tidak mungkin tidak terbatas Memori mungkin saja murah, tapi tidak akan gratis. Resource yang membatasi: Waktu komputasi Ruang memori Resource tersebut harus digunakan dengan bijaksana, dan algoritma yang efisien akan membantu anda 18

Efisiensi: Sebuah Ilustrasi Ambil contoh dua algoritma sorting: Insertion sort: membutuhkan waktu kira-kira sama dengan n hingga c 1 n 2 untuk sorting n item n 2 Merge sort: membutuhkan waktu (c 2 n log 2 n) untuk sorting n item n log 2 n c 1 < c 2 tidak begitu berpengaruh dibanding ukuran input n Insertion sort biasanya lebih cepat dibanding merge sort jika jumlah input sedikit. Jika jumlah input n besar, keuntungan merge sort akan lebih bisa mengimbangi perbedaan faktor konstan 19

Efisiensi: Contoh (1) Array yang akan di-sort: 10 6 angka Komputer A: 10 9 inst/det; running insertion sort; programmer terbaik; codeis 2n 2 Komputer B: 10 7 inst/det; running merge sort; programmer biasa; codems 50 n log 2 n Komp A: (2(10 6 ) 2 ) / 10 9 = 2000 det Komp B: (50.10 6 log 2 10 6 ) / 10 7 100 det 20

Efisiensi: Contoh Konkrit (2) Dengan menggunakan algoritma dengan pertambahan waktu eksekusi yang lebih lambat,penggunakan kompiler yang lebih buruk, komp B menyelesaikan 20x lebih cepat dibanding A. Sorting 10 7 angka Komp A: timeis 2.3 hari Komp B: timems < 20 menit 21

Analisis Framework Mengukur ukuran/jumlah input Unit untuk mengukur waktu eksekusi Tingkat pertumbuhan Efisiensi Worst-case, Best-case, and Average-case 22

Mengukur jumlah/ukuran input Hampir seluruh algoritma: waktu lebih lama untuk input yang lebih banyak Penyelidikan efisiensi algoritma, logis fungsi dari beberapa parameter seperti ukuran/jumlah input (n) Pada kebanyakan kasus, seleksi n input langsung dilakukan, contoh: ukuran daftar yang akan di-sorting ataupun di-searching. Pada problem evaluasi polinomial pangkat n, ukuran input adalah pangkat polinomial tersebut ataupun koefisiennya. 23

Pilihan dapat dipengaruhi Operasi Algoritma Bagaimana kita mengukur input pada algoritma pemeriksaan ejaan? Jika karakter sebagai input jumlah karakter Jika kata jumlah kata Pada algoritma yang melibatkan properti angka Size = jumlah bit b pada representasi binary ke-n b = log 2 n + 1 24

Unit Pengukuran Eksekusi Dapatkah kita menggunakan unit standar pengukuran waktu detik, milidetik, dan sebagainya? Kekurangan: tergantung pada kecepatan komputer, tergantung pada kualitas program, kesulitan pewaktuan (clocking) running time aktual dari program Salah satu pendekatan: mengukur jumlah waktu yang diperlukan setiap operasi algoritma dijalankan sulit dan tidak perlu 25

Tingkat Pertumbuhan Untuk n dengan besar, yang diperhitungkan adalah fungsi tingkat pertumbuhan Abaikan pengali yang konstan ½ n 2 n 2, 50 n log 2 n n log 2 n Fungsi-fungsi penting, lihat kelas-kelas efisiensi dasar 26

Jumlah input saja tidak cukup Algoritma pencarian sekuensial //Input: array A[0..n-1], search key K //Output: index of first element of A that // matches K or -1 if there is no match i 0 while i < n and A[i] K do i i + 1 if i < n return i else return -1 Jalannya algoritma ini bisa sangat berbeda untuk ukuran data yang sama (n) 27

Efisiensi Worst-case C worst (n) adalah penting membatasi running time menjamin running time tidak melebihi C worst (n) dari seluruh input yang mungkin 28

Efisiensi Best-case Kegunaan: pada beberapa algoritma, kinerja best-case diberikan oleh beberapa tipe input yang mendekati tipe terbaik Input best-case untuk alg insertion sort adalah array yang telah disorting; kondisi best-case ini sedikit memburuk untuk array yang hampir selesai disorting Insertion Sort mungkin metode pilihan untuk aplikasi yang berkaitan dengan array yang hampir selesai disorting 29

Efisiensi Average-case Analisis worst-case maupun best-case tidak menghasilkan informasi yang diperlukan mengenai jalannya algoritma pada input typical ataupun random. C avg (n) Kita harus membuat beberapa asumsi tentang input n yang mungkin 30

C avg (n) untuk Pencarian Asumsi standar: Sekuensial (1) Kemungkinan pencarian yang berhasil = p (0 p 1) Kemungkin kecocokan pertama terjadi pada posisi ke-i adalah sama untuk semua i Kemungkinan kecocokan pertama pada posisi ke-i adalah p/n untuk setiap i; jumlah pembandingan yang dilakukan = i Pada kasus pencarian yang tidak berhasil, jumlah pembandingan adalah n, dengan kemungkinan (1-p) 31

32 C avg (n) untuk Pencarian Sekuensial (2) [ ] ).(1 2 1) ( ).(1 2 1) ( ).(1...... 2 1 ).(1........ 2. 1. ) ( p n n p p n n n n p p n n i n p p n n p n n p i n p n p n C avg + + = + + = + + + + + + = + + + + + + =

Catatan pada C avg (n) Apa kita benar-benar memerlukan C avg (n)? Jauh lebih baik dibanding C worst (n) yang terlalu pesimis C avg (n) tidak dapat diambil dengan cara mengambil rata-rata C worst (n) dan C best (n) 33

Tugas 1. Untuk flowchart kemarin, tuliskan kembali algoritma dengan pseudocode 2. Hitung kompleksitas waktu (T(n)) dan kompleksitas waktu asimptotik 34