Kompleksitas Algoritma (1)

dokumen-dokumen yang mirip
Kompleksitas Algoritma

Kompleksitas Algoritma

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

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

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

Kompleksitas Algoritma

Kompleksitas Algoritma

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

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

Kompleksitas Algoritma

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Algoritma dan Kompleksitas Algoritma

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force

ALGORITMA PENGURUTAN & PENCARIAN

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

Pengurutan (Sorting) Algoritma Pemrograman

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Algoritma Brute Force

STRATEGI DIVIDE AND CONQUER

BAB VI SEARCHING (PENCARIAN)

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

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

Algoritma Divide and Conquer (Bagian 2)

Algoritma Divide and Conquer. (Bagian 2)

MODUL IV PENCARIAN DAN PENGURUTAN

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Algoritma dan Pemrograman 2 PENGURUTAN

Pendahuluan. Ukuran input (input s size)

Searching [pencarian] Algoritma Pemrograman

Decrease and Conquer

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

SORTING. Brigida Arie Minartiningtyas, M.Kom

Bubble Sort (Pengurutan Gelembung / Pemberatan)

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

BAB VII ALGORITMA DIVIDE AND CONQUER

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

Algoritma dan Pemrograman Searching/Pencarian

Array. Teknik Informatika Politeknik Negeri Batam

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

*** SELAMAT MENGERJAKAN

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

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Algoritma dan Pemrograman 2 PENCARIAN

Algoritma Brute Force Oleh: Rinaldi Munir

Algoritma Brute Force (lanjutan)

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

BAB V SORTING (PENGURUTAN) INTERNAL

Algoritma Divide and Conquer (Bagian 1)

STRUKTUR DASAR ALGORITMA

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

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

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

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

Nama : Suseno Rudiansyah NPM : Kelas : X2T Prodi : Teknik Informatika Tugas : Kuis Algoritma 2

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

Kompleksitas Algoritma Quick Sort

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

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Algoritma dan Pemrograman 2 PENGURUTAN

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 2 x 3 x 50 Menit Pertemuan : 14 & 15

Design and Analysis Algorithm

Algoritma dan Pemrograman Sorting (Pengurutan) IS1313. Oleh: Eddy Prasetyo N

METODE DEVIDE AND CONQUER (DANDC)

Algoritma Sorting (Selection Insertion)

Sorting Algorithms. Buble Sort

Algoritma Brute Force

DATA SORTING. Altien Jonathan Rindengan, S.Si, M.Kom

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

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

SORTING. Struktur Data S1 Sistem Informasi. Ld.Farida

BAB 2 LANDASAN TEORI

PERTEMUAN 11 TEHNIK SEARCHING

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

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

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

MAKALAH ALGORITMA DIVIDE AND CONQUER

BAB II TINJAUAN PUSTAKA

BAB 3 ANALISA SISTEM

STRUKTUR DASAR ALGORITMA

ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma Sorting yang Populer Dipakai

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

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

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

7. SORTING DAN SEARCHING

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

Algoritma Brute Force

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

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

ANALISIS ALGORITMA BINARY SEARCH

1 Pencarian. 1.1 Tinjauan Singkat Larik

BAB 8 SORTING DAN SEARCHING

Transkripsi:

Kompleksitas Algoritma (1)

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

Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Efisiensi algoritma dapat digunakan untuk menilai algoritma yang bagus.

Waktu komputasi (dalam detik) Mengapa kita memerlukan algoritma yang efisien? Lihat grafik di bawah ini. 10-4 x 2 n 10 5 1 hari 10-6 x 2 n 10 4 10 3 10 2 1 jam 1 menit 10-4 x n 3 10 1 10-1 1 detik 10-6 x n 3 5 10 15 20 25 30 35 40 Ukuran masukan

Model Perhitungan Kebutuhan Waktu/Ruang Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi. Jika kita mengetahui besaran waktu (dalam satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut.

Contoh 1. Menghitung rerata procedure HitungRerata(input a[1], a[2],..., a[n] : integer, output r : real) { Menghitung nilai rata-rata dari sekumpulan elemen larik integer a1, a2,..., an. Nilai rata-rata akan disimpan di dalam peubah r. Masukan: a[1], a[2],..., a[n] Keluaran: r (nilai rata-rata)} Deklarasi k : integer jumlah : real Algoritma jumlah0 k1 while k n do jumlahjumlah + a[k] kk+1 endwhile { k > n } r jumlah/n { nilai rata-rata }

(i) Operasi pengisian nilai (jumlah0, k1, jumlahjumlah+a[k], kk+1, dan rjumlah/n) Jumlah seluruh operasi pengisian nilai adalah t 1 = 1 + 1 + n + n + 1 = 3 + 2n (ii) Operasi penjumlahan (jumlah+a[k], dan k+1) Jumlah seluruh operasi penjumlahan adalah t 2 = n + n = 2n (iii) Operasi pembagian (jumlah/n) Jumlah seluruh operasi pembagian adalah t 3 = 1 Total kebutuhan waktu algoritma HitungRerata: t = t 1 + t 2 + t 3 = (3 + 2n)a + 2nb + c detik

Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun. Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma. Ada dua macam kompleksitas algoritma, yaitu: kompleksitas waktu dan kompleksitas ruang.

Kompleksitas Waktu Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisisnya dari implementasi. Contoh 2. Tinjau algoritma menghitung rerata pada Contoh 1. Operasi yang mendasar pada algoritma tersebut adalah operasi penjumlahan elemen-elemen a k (yaitu jumlahjumlah+a[k]), Kompleksitas waktu HitungRerata adalah T(n) = n.

Contoh 3. Algoritma untuk mencari elemen terbesar di dalam sebuah larik (array) yang berukuran n elemen. procedure CariElemenTerbesar(input a[1], a[2],..., a[n] : integer, output maks : integer) { Mencari elemen terbesar dari sekumpulan elemen larik integer a1, a2,..., an. Elemen terbesar akan disimpan di dalam maks. Masukan: a1, a2,..., an Keluaran: maks (nilai terbesar)} Deklarasi k : integer Algoritma maksa[1] k2 while k n do if a[k] > maks then maksa[k] endif kk+1 endwhile { k > n }

Kompleksitas waktu algoritma dihitung berdasarkan jumlah operasi perbandingan elemen larik (A[i] > maks). Kompleksitas waktu CariElemenTerbesar : T(n) = n 1.

Kompleksitas waktu dibedakan atas tiga macam : 1. T max (n) : kompleksitas waktu untuk kasus terburuk (worst case), kebutuhan waktu maksimum. 2. T min (n) : kompleksitas waktu untuk kasus terbaik (best case), kebutuhan waktu minimum. 3. T avg (n): kompleksitas waktu untuk kasus rata-rata (average case) kebutuhan waktu secara rata-rata

Contoh 4. Algoritma sequential search. procedure PencarianBeruntun(input a1, a2,..., an : integer, x : integer, output idx : integer) Deklarasi k : integer ketemu : boolean { bernilai true jika x ditemukan atau false jika x tidak ditemukan } Algoritma: k1 ketemu false while (k n) and (not ketemu) do if a[k] = x then ketemutrue else k k + 1 endif endwhile { k > n or ketemu } if ketemu then { x ditemukan } idxk else idx 0 { x tidak ditemukan } endif

Jumlah operasi perbandingan elemen tabel: 1. Kasus terbaik: ini terjadi bila a[1] = x. T min (n) = 1 2. Kasus terburuk: bila a[n] = x atau x tidak ditemukan. T max (n) = n 3. Kasus rata-rata: Jika x ditemukan pada posisi ke-j, maka operasi perbandingan (a[k] = x)akan dieksekusi sebanyak j kali. 1 n(1 n) ( 1 2 3... n) ( 1) T avg (n) = 2 n n n 2

Cara lain: asumsikan bahwa P(a[j] = x) = 1/n. Jika a[j] = x maka T j yang dibutuhkan adalah T j = j. Jumlah perbandingan elemen larik rata-rata: T avg (n) = n j j n j j n j j T n n T X j a T P 1 1 1 1 1 ) ] [ ( = n j j n 1 1 = 2 1 ) 2 1) ( ( 1 n n n n

Contoh 5. Algoritma pencarian biner (bynary search). procedure PencarianBiner(input a[1], a[2],..., a[n] : integer, x : integer, output idx : integer) Deklarasi i, j, mid : integer ketemu : boolean Algoritma i1 jn ketemufalse while (not ketemu) and ( i j) do mid (i+j) div 2 if a[mid] = x then ketemu true else if a[mid] < x then { cari di belahan kanan } imid + 1 else { cari di belahan kiri } jmid - 1; endif endif endwhile {ketemu or i > j } if ketemu then idxmid else idx0 endif

1. Kasus terbaik T min (n) = 1 2. Kasus terburuk: T max (n) = 2 log n

Contoh 6. Algoritma algoritma pengurutan seleksi (selection sort). procedure Urut(input/output a[1], a[2],..., a[n] : integer) Deklarasi i, j, imaks, temp : integer Algoritma for in downto 2 do { pass sebanyak n 1 kali } imaks1 for j2 to i do if a[j] > a[imaks] then imaksj endif endfor { pertukarkan a[imaks] dengan a[i] } tempa[i] a[i]a[imaks] a[imaks]temp endfor

(i) Jumlah operasi perbandingan elemen Untuk setiap pass ke-i, i = n jumlah perbandingan = n 1 i = n 1 jumlah perbandingan = n 2 i = n 2 jumlah perbandingan = n 3 i = 2 jumlah perbandingan = 1 Jumlah seluruh operasi perbandingan elemen-elemen larik adalah T(n) = (n 1) + (n 2) + + 1 = i n 1 n k n( n 1) 1 2 Ini adalah kompleksitas waktu untuk kasus terbaik dan terburuk, karena algoritma Urut tidak bergantung pada batasan apakah data masukannya sudah terurut atau acak.

(ii) Jumlah operasi pertukaran Untuk setiap i dari 1 sampai n 1, terjadi satu kali pertukaran elemen, sehingga jumlah operasi pertukaran seluruhnya adalah T(n) = n 1. Jadi, algoritma pengurutan maksimum membutuhkan n(n 1 )/2 buah operasi perbandingan elemen dan n 1 buah operasi pertukaran.