Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

dokumen-dokumen yang mirip
DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Algoritma dan Pemrograman Searching/Pencarian

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

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

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

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

Kompleksitas Algoritma

Kompleksitas Algoritma

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma (1)

STRATEGI DIVIDE AND CONQUER

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

BAB VII ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

*** SELAMAT MENGERJAKAN

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

Kompleksitas Algoritma

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

Searching [pencarian] Algoritma Pemrograman

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

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Kompleksitas Algoritma

Design and Analysis Algorithm

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Pendahuluan. Ukuran input (input s size)

ANALISIS ALGORITMA BINARY SEARCH

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

ALGORITMA & PEMROGRAMAN

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

BAB VI SEARCHING (PENCARIAN)

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

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Algoritma dan Pemrograman 2 PENGURUTAN

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

Pengurutan (Sorting) Algoritma Pemrograman

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma dan Struktur Data

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

Kompleksitas Algoritma Sorting yang Populer Dipakai

Algoritma dan Struktur Data. Performansi Algoritma

Langkah Awal menuju Analisis Kompleksitas Algoritma

Powered by icomit.wordpress.com

Decrease and Conquer

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Analisis Kecepatan Sorting Dengan Notasi Big O

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Algoritma dan Kompleksitas Algoritma

BAB II TINJAUAN PUSTAKA

ALGORITMA PENGURUTAN & PENCARIAN

SORTING. Brigida Arie Minartiningtyas, M.Kom

BAB 2 LANDASAN TEORI

LATIHAN UTS Tim Pengajar KU1071 Sem

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Linked List. Bandung 2013

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

JARINGAN UNTUK MERGING

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Universitas gunadarma. pascal. Bab 4- bab 10. Hana Pertiwi S.T

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Algoritma Brute Force (lanjutan)

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

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

Algoritma Pemrograman

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

Algoritma Brute Force

Langkah Awal menuju Analisis Kompleksitas Algoritma

Logika dan Algoritma Yuni Dwi Astuti, ST 2

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

Selamat Mengerjakan. 2. Keluaran dari baris 10 adalah? a. 1 b. 4 c. 2.5 d. 2 e Keluaran dari baris 11 adalah? a. 1 b. 4 c. 2.5 d. 2 e.

Bubble Sort (Pengurutan Gelembung / Pemberatan)

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Review Teori P dan NP

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

PENGUJIAN PERANGKAT LUNAK

Pertemuan XII ALGORITMA. Algoritma & Pemrograman Ken Kinanti P 1. {Pencarian Beruntun / Sequential Search}

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

MODUL IV PENCARIAN DAN PENGURUTAN

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

Algoritma Divide and Conquer. (Bagian 2)

CCH1A4 / Dasar Algoritma & Pemrogramanan

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Kompleksitas Komputasi

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Design and Analysis of Algorithm

Algoritma Pemrograman

a. TRUE b. FALSE c. Jawaban A dan B keduanya dimungkinkan benar d. Tidak dapat ditentukan e. Tidak ada jawaban di antara A, B, C, D yang benar

Transkripsi:

Analisis Algoritm Fundamentals of the Anlysis of Algorithm Efficiency Hendri Karisma Program Studi Teknik Informatika Universitas Komputer Indonesia 2013

Review An algorithm is a sequence of unambiguous instructions for solving a problem, i.e., for obtaining a required output for any legitimate input in a finite amount of time. Suatu algoritma harus benar (efektif) : Tujuannya dapat dicapai. Suatu algoritma harus dapat berjalan dengan cepat dan lebih ringan (efisien) / mangkus.

Fundamentals of Algorithmic Problem Solving (Review) Understanding the Problem Ascertaining the Capabilities of the Computational Device Choosing between Exact and Approximate Problem Solving Algorithm Design Techniques (strategy) Designing an Algorithm and Data Structures Methods of Specifying an Algorithm (exp: pseudocode ) Proving an Algorithm s Correctness Analyzing an Algorithm (efficiency, effectivity, simplycity, generality) Coding an Algorithm

Kompleksitas Algoritma

Apa itu anlisis algoritma Artinya melakukan investigasi terhadap suatu algoritma dari sis efisiensi dengan melihat dua sumber yaitu, running time dan memory space. Efisiensi didapatkan dalam bentuk quantitative

Materi Kompleksitas Dasar Analisis Kompleksitas Notasi asimptotik Non-recursively algorithm Recursively algorithm

Kompleksitas Time Complexity Mengindikasikan seberapa cepat algoritma. Diekspresikan sebagai jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma. Space Complexity Seberapa besar memory yang dibutuhkan algoritma terutama untuk input dan output. Diekspresikan sebagai jumlah memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai ukuran masukan n

Terminologi Kompleksitas Ruang dan Waktu Ukuran masukan data untuk suatu algoritma, n. Sebagai contaoh adalah elemen-elemen larik, n adalah jumlah larik atau produk matriks yang berupa n x n. Semakin besar n, maka semakin kompleks. Kompleksitas waktu, dengan symbol T(n), adalah jumlah operasi yang dilakukan untuk menjalankan sebuah algoritma sebagai fungsi dari ukuran masukan n Kompleksitas ruang, dengan symbol S(n), adalah ruang memori yang dibutuhkan algoritma sebagai fungsi dari ukuran masukan n

Kompleksitas Ruang Materi diluar bahasan, yaitu struktur data. Kebutuhan akan ruang memori pada teknologi masa kini tidak lagi menjadi persoalan kritis, karena komputer sekarang memiliki ukuran memori yang besar dibandingkan komputer mainframe 25 tahun lalu. Namun bukan berarti kita melupakan kompleksitas ruang.

Komleksitas Waktu (dahulu kala) Misalkan cop adalah waktu eksekusi algoritma operasi dasar, dan C(n) adalah jumlah waktu operasi tersebut butuh dieksekusi untuk algoritma tersebut, maka kita dapat menghitung Namun itu hanya bisa mendekati, artinya, kita tidak bisa mendapatkan perhitungan aslinya, kecuali data yang diolah sangat kecil. Kita hanya bisa mengatakan suatu algoritma berjalan lebih cepat atau 10 kali lebih cepat atau jawabannya t = 10. Apa yang terjadi jika kita menggandakan inputnya jika? Namun formula tersebut tidak berhasil seiring penambahan data yang besar

Komplekasitas Function

Bagaimana mendapatkan fungsi kompleksitas algoritma? Tetapkan ukuran masukan. Mengukur kompleksitas waktu dengan menentukan banyaknya operasi yang dilakukan oleh algoritma. Cukup menghitung jumlah operasi abstrak (operasi dasar) yang mendasari suatu algoritma dan memisahkan analisanya dari implementasi. Operasi dasar contohnya : pencarian operasi abstraknya jumlah n-kali perbandingan elemen, untuk operasi pengurutan: jumlah pertukaran elemen.

Contoh

Seq Search Procedure SeqSearchBoolean (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) (1) I = 1 (1) ketemu false (1) while (not ketemu) and (i maks_array) do (n) if(nama_var_array(i) = data_cari) (1) then ketemu true (1) else OR i i + 1 (1) endif endwhile if (ketemu) (1) then output(data_cari, ditemukan pada indeks ke-,i) (1) Else (OR) output(data_cari, tidak ditemukan ) (1) endif EndProcedure

Kompleksitas Seq Search T(n) = 1 + 1 + 1 + n ( 1 +1 ) + 1 + 1 = 2n + 5

Kompleksitas Waktu Worse Case : Kompleksitas waktu untuk kasus terburuk, yaitu kebutuhan waktu maksimum yang diperlukan sebuah algoritma sebagai fungsi dari n. Tmax(n) Best Case : Kompleksitas waktu untuk kasus terbaik, yaitu kebutuhan waktu minimum yang diperlukan sebuah algoritma sebagai fungsi dari n. Tmin(n) Avarage Case: Kompleksitas waktu untuk kasus rata-rata, yaitu kebutuhan waktu rata-rata yang diperlukan algoritma sebagai fungsi dari n. Untuk kebutuhan rata-rata ini, biasanya dibuat asumsi bahwa semua barisan masukan bersifat sama. Misalkan pada persoalan pencarian diandaikan bahwa data yang dicari mempunyai peluang yang sama untuk terletak dalam larik. Tavg(n)

Kembali ke Seq Search Procedure SeqSearchBoolean (Input nama_array:tipe_array) {I.S. : elemen array [1..maks_array] sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: i : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) (1) I = 1 (1) ketemu false (1) while (not ketemu) and (i maks_array) do (n) if(nama_var_array(i) = data_cari) (1) then ketemu true (1) else OR i i + 1 (1) endif endwhile if (ketemu) (1) then output(data_cari, ditemukan pada indeks ke-,i) (1) Else (OR) output(data_cari, tidak ditemukan ) (1) endif EndProcedure

Contoh pada Algoritma Seq Search Best Case Ketika datanya hanya 1 atau data langsung ketemu di index nomor 1: Tmin(n) = 1 Worse Case Ketika data yang dicari berada di paling akhir data (indeks terakhir) : Tmax(n) = 2n + 5 = n

Contoh pada Algoritma Seq Search Avarage Case Data sebanyak n dengan pencarian rata-rata: Tavg(n) = 1+1+1+(1+2+3+...(n+(n+1)) )/n+1+1+1 = (1/2n(1+1+(n-1)1))/n+3 = (1/2n(1+n))/n = 1/2(1+n) Ingat! Un = a + (n-1)b = bn + (a-b) Sn = 1/2 n(a+un) a = suku awal b = beda n = banyak suku Un = a + (n - 1) b adalah suku ke-n

Binary Search Procedure BinarySearch (Input nama_array : tipe_array) {I.S. : elemen array yang terurut secara ascending sudah terdefinisi} {F.S. : menampilkan data yg dicari ditemukan atau tidak ditemukan} Kamus: Ia, Ib, k : integer ketemu : boolean data_cari : tipedata Algoritma: input(data_cari) Ia 1 Ib maks_array ketemu false while (not ketemu) and (Ia Ib) do k (Ia + Ib) div 2 if (nama_var_array[k] = data_cari) then ketemu true else if (nama_var_array[k] < data_cari) then Ia k + 1 else Ib k 1 endif endif endwhile

Kompleksitas Binary Search Best Case Sama seperti sebelumnya jika data langsung ditemukan (data berada ditengah). Tmin(n) = 1 Worse Case Data berada di akhir perulangan. Looping-1 = n Looping-2 = n/2 Looping-3 = (n/2)/2 = n/4 Looping-4 = (n/4)/2 = n/8 Looping-5 = (n/8)/2 = n/16 ===>>>> n/(2^(m-1)) m : langkah looping ke-m Sehingga nilainya sama dengan Log2(n+1)

Kompleksitas Binary Search Worse Case Worse Case pada binary search sama dengan Avarage Case dikarenakan prosesnya yang melakukan pembagian jumlah langkah pada setiap step perulangan.

Sekian...