Langkah Awal menuju Analisis Kompleksitas Algoritma

dokumen-dokumen yang mirip
Langkah Awal menuju Analisis Kompleksitas Algoritma

PENGENALAN ANALISIS ALGORITMA

BAB 2 LANDASAN TEORI

Pendahuluan Metode Numerik

Design and Analysis Algorithm

Algoritma dan Struktur Data

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

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Analisis Kecepatan Sorting Dengan Notasi Big O

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Logika dan Algoritma Yuni Dwi Astuti, ST 2

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

JARINGAN UNTUK MERGING

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

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

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

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

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Analisa Kompleksitas Algoritma. Sunu Wibirama

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

Kompleksitas Algoritma

Pengantar Analisa Algoritma

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

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

KOMPUTASI PEMROGRAMAN

Pengantar Teknik Informatika

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

Kontrak Perkuliahan & Introduction

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

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Analisis Algoritma Bubble Sort

ANALISIS ALGORITMA BINARY SEARCH

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

Design and Analysis Algorithm

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

oleh : Edhy Suta tanta

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

Sorting Algorithms. Algoritma dan Struktur Data. Sorting algorithms

Algoritma Bubble Sort dan Quick Sort

ALGORITMA PENGURUTAN & PENCARIAN

Kompleksitas Algoritma (1)

Outline STRUKTUR DATA. VII. Sorting

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

BAB II TINJAUAN PUSTAKA

Algoritma Divide and Conquer

RENCANA PEMBELAJARAN SEMESTER (RPS)

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

Gambar 13.1 Ilustrasi proses algoritma sorting

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

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

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

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Design and Analysis Algorithm

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

BAB 2 TINJAUAN PUSTAKA

BAB VI SORTIR ATAU PENGURUTAN

PEMROGRAMAN KOMPUTER DASAR. Kuliah ke-1

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

Bubble Sort dan Shell-Sort. Yuliana Setiowati

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

UNIVERSITAS GUNADARMA

Kompleksitas Algoritma

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

PERTEMUAN 15 REVEW/QUIZ

Review Teori P dan NP

Analisa Algoritma. Konsep Algoritma

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

SEARCHING & SORTING. Pendahuluan

Algoritma Sorting (Selection Insertion)

Kompleksitas Algoritma Dalam Algoritma Pengurutan

SATUAN ACARA PERKULIAHAN UNIVERSITAS GUNADARMA

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

Algoritma dan Struktur Data

BAB 3 ANALISA SISTEM

BAB II LANDASAN TEORI

BAB 2 LANDASAN TEORI

Syarat dan Ketentuan yang berlaku:

APLIKASI PERENCANA BELANJA DENGAN PENGURUTAN SKALA PRIORITAS BERBASIS ANDROID

Suffix Array dan Kegunaannya Dalam Memecahkan Berbagai Persoalan String

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

RENCANA PEMBELAJARAN SEMESTER (RPS)

BAB II LANDASAN TEORI

Algoritma Brute Force (lanjutan)

Struktur Data dan Analisa Algoritma

Algoritma Brute Force (lanjutan)

Struktur Data Linier. Input. Program untuk menyelesaikan masalah. Algoritma Penyelesaian. Proses. Masalah. Struktur Data. Output

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

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

SILABUS MATAKULIAH. Indikator Pokok Bahasan/Materi Aktifitas Pembelajaran

Algoritma Divide and Conquer (Bagian 2)

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

Implementasi Struktur Data Rope menggunakan Binary Tree dan Aplikasinya dalam Pengolahan Teks Sangat Panjang

BAB 2 LANDASAN TEORI

Algoritma dan Struktur Data. Searching dan Sorting

RENCANA PEMBELAJARAN SEMESTER (RPS)

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Transkripsi:

Langkah Awal menuju Analisis Kompleksitas Algoritma Analisis dan Strategi Algoritma CS3024-FAZ 1

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

Proses Desain dan Analisis Algoritma Understand the problem Decide on: Computational means, exact vs approximate solving, data structure(s), algorithm design technique Design an algorithm Prove correctness Analyze the algorithm Code the algorithm Input contoh problem; menentukan jangkauan problem Kemampuan peralatan komputasi Perkiraan: Problem tidak dapat diselesaikan dengan tepat, contoh: akar pangkat dua Allgoritma 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 CS3024-FAZ 3

Algorithm Design and Analysis Process Understand the problem Decide on: Computational means, exact vs approximate solving, data structure(s), algorithm design technique Design an algorithm Prove correctness Analyze the algorithm Code the algorithm Menentukan algoritma: Menggunakan bahasa alami Menggunakan flowchart Menggunakan desain hardware Menggunakan source code program Menggunakan pseudocode Bentuk lain yang lebih cocok? Correctness: membuktikan bahwa algoritma menghasilkan hasil yang diinginkan untuk setiap input yang sesuai dalam waktu tertentu Biasanya menggunakan induksi matematis Dapatkan kita gunakan tracing sederhana? Incorrectness Approx alg the error < limit CS3024-FAZ 4

Algorithm Design and Analysis Process Understand the problem Decide on: Computational means, exact vs approximate solving, data structure(s), algorithm design technique Design an algorithm Prove correctness 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 Analyze the algorithm Code the algorithm CS3024-FAZ 5

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

Tipe Problem: Sorting Problem: menyusun ulang hal-hal yang terdapat pada daftar dengan urutan naik Jika ada records, kita perlu sebuah key Terdapat beberapa lusin 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 CS3024-FAZ 7

Tipe Problem: Searching The 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 CS3024-FAZ 8

Tipe Problem: Pemrosesan String String = urutan karakter alphabet Minat khusus: text strings, binary strings, gene sequences etc. Problem khusus: pencocokan string Pencarian suatu kata dalam text CS3024-FAZ 9

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

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 CS3024-FAZ 11

Tipe Problem : Pemasalahan Geometrik Berkaitan dengan objek geometrik: titik, garis, poligon etc. Yunani kuno: membangun bentuk geometris sederhana segitiga, lingkaran etc. 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 CS3024-FAZ 12

Tipe Problem: Permasalahan Numerik Melibatkan objek matematis yang memiliki sifat kontinyu: memecahkan persamaan dan sistem persamaan, menghitung integral tak berhingga, mengevaluasi fungsi etc. Mayoritas problem-problem diatas 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) CS3024-FAZ 13

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? CS3024-FAZ 14

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

Back to the real world Komputer mungkin saja cepat, tapi kecepatannya tidak mungkin tidak terbatas Memory 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 CS3024-FAZ 16

Efficiency: 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, log 2 n vs n, akan lebih bisa mengimbangi perbedaan faktor konstan CS3024-FAZ 17

Efficiency: Contoh (1) Array yang akan di-sort: 10 6 angka Komputer A: 10 9 inst/sec; running insertion sort; programer terbaik; codeis 2n 2 Computer B: 10 7 inst/sec; running merge sort; programer biasa, HLL; the codems 50 n log 2 n Comp A: (2(10 6 ) 2 ) / 10 9 = 2000 sec Comp B: (50.10 6 log 2 10 6 ) / 10 7 100 sec CS3024-FAZ 18

Efficiency: Contoh Konkrit(2) Dengan menggunakan algoritma dengan pertambahan waktu eksekusi yang lebih lambat,penggunakan kompiler yang lebih buruk, comp B menyelesaikan 20x lebih cepat dibanding A. Sorting 10 7 angka Comp A: timeis 2.3 days Comp B: timems < 20 minutes CS3024-FAZ 19

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

Mengukur jumlah/ukuran input Hampir seluruh algoritma membutuhkan waktu lebih lama untuk menyelesaikan input yang lebih banyak Penyelidikan efisiensi algoritma, logis dilakukan sebagai 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. CS3024-FAZ 21

Pemilihan Parameter yang mengindikasikan ukuran sangatlah penting Contoh: komputasi produk yang mempunyai matrik n x n Dua tolak ukur yang lazim: Matrik ukuran n Jumlah elemen N pada matrik yang dikalikan dapat diterapkan pada matrik n x m CS3024-FAZ 22

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

Unit Pengukuran Running Time Dapatkan 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 CS3024-FAZ 24

Operasi Dasar Mengidentifikasi operasi paling penting dari suatu algoritma (operasi dasar) Operasi tersebut memakai waktu yang paling banyak dari keseluruhan running time Menghitung jumlah waktu yang diperlukan untuk mengeksekusi operasi dasar Framework yang telah ada untuk analisis efisiensi waktu suatu algoritma: menghitung jumlah waktu eksekusi operasi dasar dalam algoritma dengan input ukuran n CS3024-FAZ 25

Tingkat Pertumbuhan Untuk n dengan jumlah besar, yang diperhitungkan adalah fungsi tingkat pertumbuhan Abaikan pengali yang konstan Exp: ½ n 2 n 2, 50 n log 2 n n log 2 n Fungsi-fungsi penting: log 2 n, n, n log 2 n, n 2, n 3, 2 n, n! CS3024-FAZ 26

Hanya jumlah input tidaklah 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) The best, the worst, and average-case? CS3024-FAZ 27

Efisiensi Worst-case C worst (n): Algoritma efisiensi untuk input worst-case dengan ukuran n Algoritma memerlukan waktu yang paling lama diantara semua input yang ada C worst (n) adalah penting: membatasi running time-nya Akan menjamin running time tidak akan melebihi C worst (n) dari seluruh input yang mungkin CS3024-FAZ 28

The Best-case Efficiency C best (n): Algoritma efisiensi untuk input bestcase dengan ukuran n Algoritma yang menyelesaikan problem paling cepat diantara semua input (dengan ukuran n) yang mungkin Kegunaan:pada beberapa algoritma, kinerja best-case yang baik diberikan oleh beberapa tipe input yang mendekati tipe input yang terbaik Exp: 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 CS3024-FAZ 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 berukuran n yang mungkin CS3024-FAZ 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 pembadingan yang dilakukan = i Pada kasus pencarian yang tidak berhasil, jumlah pembandingan adalah n, dengan kemungkinan (1-p) CS3024-FAZ 31

CS3024-FAZ 32 C avg (n) for Sequential Search (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) CS3024-FAZ 33

Tugas (1) 1. Buatlah sebuah program menggunakan bahasa pemrograman Pascal untuk mengimplementasikan algoritma binary search CS3024-FAZ 34