Algoritma dan Struktur Data

Slides:



Advertisements
Presentasi serupa
ARRAY.
Advertisements

Pencarian ( Searching)
TUGAS Buatlah program menghitung luas persegi panjang!
Introduction to Algorithm evaluation Soal Matrikulasi Buka Buku
Desain Dan Analisis Algoritma
Kompleksitas Algoritma
Algoritma dan Struktur Data
Pengertian Algoritma dan Flowchart
ALGORITMA ERIK HADI SAPUTRA.
Perulangan Pertemuan ke-5 Bahasa C.
Universitas Muhammadiyah Malang Fakultas Teknik Jurusan Teknik Informatika Semester Genap Nur hayatin, S.ST.
Fundamentals Of Algorithmics Gilles Brassard & Paul Bratley.
Jurusan Teknik Informatika Universitas Ahmad Dahlan 2004
ARRAY 2 DIMENSI Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya.
WEEK 6 Teknik Elektro – UIN SGD Bandung PERULANGAN - LOOPING.
PERTEMUAN 6 Algoritma Presented by : Sity Aisyah, M.Kom
PENGURUTAN (SORTING).
SEARCHING ( PENCARIAN )
Desain Dan Analisis Algoritma
Dasar Pemrograman MODUL 07 PERULANGAN.
Algoritma dan Dasar Pemograman
Searching Alpro-2.
ALGORITMA Lecture Pengulangan.
sebuah fungsi yang memanggil dirinya sendiri
Tim Matematika Diskrit
PENCARIAN (SEARCHING)
Kompleksitas Algoritma
PENCARIAN (SEARCHING)
Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007.
STRUKTUR DATA.
Pengenalan Algoritma & Struktur Data Teknik Informatika - Universitas Muhammadiyah Malang (UMM) Tahun Akademik Oleh : Nur Hayatin, S.ST.
FUNGSI STRUKTUR DISKRIT K-8 Program Studi Teknik Komputer
Algoritma & Struktur Data
Kompleksitas Algoritma
MATEMATIKA DISKRIT Kompleksitas Algoritma Kelompok 9
Kompleksitas Algoritma
Algoritma dan Struktur Data
Teknik Informatika - Universitas Muhammadiyah Malang (UMM)
STRUKTUR PEMILIHAN (KONTROL PROGRAM) Minggu III - 40 menit
Searching.
Bab 2 – b PERINTAH 2 B Percabangan. PERCABANGAN Tidak setiap baris program akan dikerjakan Hanya yang memenuhi syarat (kondisi) Syarat terdiri dari operand-operand,
Linear Data Structures (Stack)
Algoritma dan Struktur Data
Tipe Data Universitas Muhammadiyah Malang Ganjil 2010 Oleh : Nur Hayatin, S.ST.
Pertemuan 3 ALGORITMA & FUNGSI KOMPLEKSITAS
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Pemrogramman Terstruktur
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
Algoritma dan Pemrograman Searching
Pencarian pada Array Tim PHKI Modul Dasar Pemrograman
Strategi Algoritma Kuliah 2 : Kompleksitas Algoritma
Struktur data Oleh: Tim Struktur Data IF ARRAY STATIS.
PENGANTAR STRUKTUR DATA
Kompleksitas Algoritma
Faktor analisa algoritma
Algoritma & Pemrograman 1
Teknik Informatika - Universitas Muhammadiyah Malang (UMM)
Algoritma & Pemrograman 1
MATERI PERKULIAHAN ANALISIS ALGORITMA
Array Buat algoritma untuk mencari nilai terbesar dari 5 nilai mahasiswa yang diinputkan dengan array.
Algoritma & Pemrograman 1
Algoritma dan Pemrograman Searching
PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS KOMPUTER INDONESIA
UJIAN TERDIRI ATAS 50 SOAL
Kompleksitas Algoritma
Algoritma Rekursif Alpro-2.
PROGRAM STUDI SISTEM INFORMASI UNIVERSITAS KOMPUTER INDONESIA
PENGULANGAN ALGORITMA & STRUKTUR DATA I PROGRAM STUDI SISTEM INFORMASI
Analisis Algoritma E. Haodudin Nurkifli Teknik Informatika
Transcript presentasi:

Algoritma dan Struktur Data Analisa Algoritma Teknik Informatika Universitas Muhammadiyah Malang 2011

Tujuan Instruksional Memahami tentang metode untuk analisa algoritma

Topik Big-O

Algorithms Complexity Mendapatkan algoritma yang efisien. Ukuran efisien : minim dalam kebutuhan ruang dan waktu. Bergantung pada jumlah data yang diproses.

Mana yang lebih baik? pilihan 1 : Algoritma biasa dengan komputer yang cepat. pilihan 2 : Menggunakan algoritma yang efisien dengan komputer standart.

Studi Kasus Algoritma yang waktu eksekusinya dalam orde eksponensial Sebuah komputer yang mampu menjalankan program dengan masukan n dalam waktu detik. n = jumlah data. n 2 -4 10

Penyelesaian Dapat dihitung T(n) dari persamaan 10-4 x 2n : n = 10, waktu eksekusi kurang lebih 1/10 detik. n=20, waktu eksekusi kurang lebih 2 menit. n=30, waktu eksekusi lebih dari satu hari. n=38?

Efficiency Computer Jika kecepatan komputer di-upgrade sebesar 100 kali ( ). Maka dengan algoritma yang sama : jumlah masukan = n, waktu = detik. n=45, waktu yang dibutuhkan kurang lebih satu tahun penuh. -6 10 -6 n 10 x 2

Efficiency Algorithms Misal ada algoritma baru yang dapat menyelesaikan masalah tsb dalam orde kubik ( ) Dengan menggunakan komputer pertama waktu yang dibutuhkan detik. Sehingga : n = 900, waktu yang dibutuhkan kurang dari 1 hari. 3 n -4 3 10 x n

Efficiency Algorithms Dengan komputer pertama berapa besar masukan yang dapat diproses selama satu tahun?... Dengan komputer kedua berapa masukan yang dapat diproses selama satu tahun?...

Efficiency Algorithms waktu = (kurang lebih) 1 tahun Komputer 1, n = 6800 Komputer 2, n = 31.500

Time Complexity (Kompleksitas Waktu)

Time Complexity Berdasarkan jumlah operasi/perintah yang dieksekusi. Pada algoritma pengurutan dan pencarian operasi abstrak yang mendasari adalah perbandingan (operator : if).

Contoh Berikut adalah algoritma untuk mencari elemen terbesar dalam deret array yang berukuran n elemen. Lakukan analisa pada algoritma tersebut menggunakan kompleksitas waktu dengan menghitung jumlah operasi perbandingan.

Algoritma (1) Komplekasitas waktu T(n) = n-1 Void Cari_maksimum(int n, int A[]) { int maks = A[0]; for(int i=1;i<n;i++) if(A[i]>maks) maks = A[i]; } Komplekasitas waktu T(n) = n-1

Contoh Misal waktu yang dibutuhkan sebuah PC untuk melakukan operasi perbandingan adalah detik. Maka untuk n=1000, kebutuhan waktu untuk algoritma cari_maksimum diatas adalah : T(1000) = (1000-1) x T(1000) = 0.000999 detik -6 10 -6 10

Time Complexity Dibedakan menjadi 3 macam : Tmax(n) Tmin(n) Tavg(n)

Contoh Berikut adalah algoritma pencarian sequential search. Dimana bilangan yang ada pada array telah terurut ascending dan tidak ada bilangan yang sama. Hitunglah kompleksitas waktu terbaik, terburuk, dan rata-rata. Asumsikan elemen yang dicari (x) ada.

Algoritma (2) Void pencarian_sequential(int n, int A[],int x) { int j=0; boolean ketemu=false; while(j<n && ketemu=false) if(A[j]== x) ketemu = true; else j++; } if(ketemu) System.out.print(j); else System.out.print(0);

Pembahasan Algoritma tersebut membandingkan tiap elemen yang ada pada array dengan x. Operasi perbandingan yang dihitung adalah A[j] = x. Best case, jika elemen pertama array = x. Sehingga Tmin(n) = 1. Worst case, jika A[n-1]=x atau x tidak ditemukan. Sehingga Tmax(n) = n. Average case, jika x ditemukan pada posisi ke-j, maka A[j] = x akan dieksekusi sebanyak j kali. Sehingga Tavg(n) = (n+1)/2

(Kompleksitas Waktu Asimptotik) Big-O (Kompleksitas Waktu Asimptotik)

Kompleksitas Waktu Asimptotik Pada kompleksitas waktu asimptotik, kinerja algoritma diukur dengan membuat makna “sebanding”. Yaitu dengan menghilangkan faktor koefisien dalam ekspresi T(n).

Contoh Misal worst case dari sebuah algoritma adalah T(n) = 2n2 + 6n + 1 Untuk n yang besar, T(n) sebanding dengan n pangkat 2 (lihat tabel dibawah) n T(n) = 2n2 + 6n + 1 n2 10 261 100 2061 1000 2.006.001 1.000.000 10000 1.000.060.001 1.000.000.000

Penjelasan Suku-suku yang tidak mendominasi pada T(n) dapat diabaikan, sehingga kompleksitas waktu untuk T(n) adalah 2(n2) + suku-suku lainnya. Dengan mengabaikan koefisien 2 pada 2n^2 maka T(n) = O(n2) [dibaca : T(n) adalah O dari n2] Jadi kita telah mengganti ekspresi T(n) = 2n2 + 6n + 1 dengan yang lebih sederhana seperti n2. Notasi O disebut notasi Big-O yang merupakan notasi untuk kompleksitas waktu asimptotik.

Notasi Big-O T(n) = O(f(n)) dibaca Tn adalah O dari f(n) Bila terdapat koefisien C dan n0 maka : T(n) <= C(f(n)) Untuk menunjukkan T(n) = O(f(n), yang perlu dilakukan adalah menemukan pasangan C dan n0 sehingga

Contoh Tunjukan bahwa : T(n) = 3n +2 = O(n) penyelesaian : karena 3n + 2 <= 3n +2n = 5n untuk n>=1 maka C = 5 dan n0 =1 T(n) = 2n2 + 6n + 1 = O(n2)

Contoh Penyelesaian : 2n2 +6n + 1 = O(n2) Untuk semua n>=1 2n2 +6n + 1 <= 2n2 +6n2 + n2 =9n2 sehingga C = 9 dan n0 =1 atau : Untuk semua n>=6 2n2 +6n + 1 <= n2 +n2 + n2 =3 n2 sehingga C = 3 dan n0 =6

Teorema Big-O Misal T1(n) = O(f(n)) dan T2(n) = O(g(n)), maka : 1. T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n))) 2. T1(n)T2(n) = O(f(n))O(g(n)) = O(f(n)g(n)) 3. O(cf(n)) = O(f(n)), c adalah tetapan 4. f(n) = O(f(n))

Aturan Big-O Dapat ditentukan dengan salah satu dari 2 cara berikut : Jika kompleksitsa waktu T(n) dari algoritma diketahui, maka kompleksitas waktu asimptotik dapat langsung ditentukan denganmengambil suku yang mendominasi fungsi T dan menghilangkan koefisien-nya. contoh : T(n) = n-1 = O(n) T(n)=(n+1)/2=O(n)

Aturan Big-O 2. Menghitung Big-O untuk setiap instruksi didalam algoritma kemudian menerapkan teorema Big-O. Aturan : Pengisian nilai(assignment), perbandingan, operasi aritmatik, read, write : membutuhkan waktu O(1) Pengaksesan array, memilih field dari sebuah record : waktu O(1). If C then S1 else s2, membutuhkan waktu Tc + max(Ts1, Ts2) yang dalam hal ini Tc, Ts1, dan Ts2 adalah kompleksitas waktu C, S1, dan S2.

Aturan Big-O d.Perulangan for, kompleksitas waktunya adalah jumlah perulangan dikali dengan kompleksitas waktu dari body perulangan. e. While C do S atau repeat S until C. Untuk kedua perulangan tersebut kompleksitas waktu yang dibutuhkan adalah jumlah perulangan dikali dengan kompleksitas waktu dari body C dan S. Prosedur dan fungsi. Waktu yang dibutuhkan untuk memindahkan kendali dari fungsi yang dipanggil adalah O(1). Untuk fungsi/prosedur rekursif, digunakan teknik perhitungan kompleksitas dengan relasi rekurens.

Pengelompokan Algoritma (Berdasarkan Notasi Big-O) Constant O(1) Logarithmic O(log n) Linear O(n) Quadratic O(n2) Cubic O(n3) Polynomial O(np) Exponential O(an)

Notasi Big-Omega dan Big-Tetha Big-Ω (Big-Omega) Digunakan untuk mendefinisikan batas bawah (lower bound) dalam kompleksitas waktu. T(n) = Ω (g(n)) (dibaca T(n) adalah Omega dari f(n)) T(n) berorde paling kecil g(N) bila terdapat koefisien C dan no sedemikian sehingga : T(n) ≥ C(f(n)) untuk n ≥ no Big-Θ (Big-Tetha) T(n) = Θ (h(n)) (dibaca T(n) adalah tetha dari h(n)) T(n) berorde sama dengan h(n) jika T(n)=O(h(n)) dan T(n)= Ω(g(n))

Contoh Tentukan notasi Ω dan Θ untuk T(n) = 2n2+6n+1. jawab :  2n2+6n+1 ≤ 9n2 n ≥ 1 (C=9) maka : 2n2+6n+1 =O(n2 ) 2n2+6n+1 ≥ 2n2 n ≥ 1 (C=2) maka : 2n2+6n+1 =Ω(n2 ) Karena 2n2+6n+1 =O(n2 ) dan 2n2+6n+1 =Ω(n2 ), maka 2n2+6n+1 =Θ(n2 )

Space Complexity (Kompleksitas Ruang)

Space Complexity Space/memory

Latihan Tentukan waktu yang dibutuhkan [T(n)] untuk tiap kinerja algoritma berikut dengan kecepatan PC sebesar 10-9 untuk jumlah data berturut turut 10, 15, 20, 25, dan 30 : n n2 n3

Latihan 1. Pada algoritma berikut berapa kali pemanggilan foo(). for (j = 1; j <= N; ++j) { foo( ); }

Latihan 2. Berapa kali perintah x=x+1 pada algoritma berikut di-eksekusi? Nyatakan kompleksitas waktu asimptotiknya dalam Big-O. i = 2; while(i<n) { i=i*i; x=x+1; }

Latihan Tentukan kompleksitas waktu asimptotik (Big-O) Tunjukkan bahwa T(n) = O(f(n)) dengan menemukan pasangan C dan n0 sehingga T(n) ≤ C(f(n)). T(n) = n+1024 = O(n) T(n) = 10n2+4n+2 = O(n2)

Latihan Tentukan kompleksitas waktu asimptotik (Big-Ω) Tuliskan notasi Big-omega untuk tiap fungsi berikut : 6n3+12n2+1 10n2+4n+2

Tugas 1. Tentukan waktu yang dibutuhkan [T(n)] untuk tiap kinerja algoritma berikut dengan kecepatan PC sebesar 10-15 untuk jumlah data berturut turut 90, 125, dan 150 : a. n b. n3 c. n2 2n

Tugas Tunjukkan bahwa T(n) = O(f(n)) dengan menemukan pasangan C dan n0 sehingga T(n) ≤ C(f(n)). T(n) = n2/10+2n = O(2n) T(n) = 6n2 + 2n = O(2n) T(n) = 3n2+2n+5 = O(n2)

Pustaka Sartaj Sahni , “Data Structures & Algorithms”, Presentation L20-24. Mitchell Waite, “Data Structures & Algorithms in Java”, SAMS, 2001