Top Banner
Click to edit Master subtitle style Algoritma dan Struktur Data Pertemuan 3 Pengantar Analisis Efisiensi Algoritma
24

Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Jul 28, 2018

Download

Documents

trinhhanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Click to edit Master subtitle style

Algoritma dan Struktur Data

Pertemuan 3 Pengantar Analisis Efisiensi Algoritma

Page 2: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Ø Efisiensi waktu seberapa cepat algoritma dieksekusi

Ø Efisiensi memori berapa banyak memori yang dibutuhkan untuk menjalankan algoritma

Analisa efisiensi algoritma bertujuan mengestimasi waktu dan memori yang dibutuhkan untuk mengeksekusi sebuah algoritma atau fungsi

Page 3: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Ukuran input banyaknya data input yang diolah oleh algoritmaContoh : ???

Faktor apa yang mempengaruhi efisiensi waktu sebuah algoritma?

Basic operation bagian dari algoritma yang yang dieksekusi berulang - ulang

Page 4: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Algorithm sequential search (A[0..n-1], K) // searches for a given value in a given array by sequential search

// input: an array A[0..n-1] and a search key K

// output: returns the index of the first element of A that matches

K or -1 if there are no matching elements

i 0 1 xwhile i n and A[i] K do 2 x

i i + 1 1 xif i n return i 2 xelse return -1 1 x

Jelaskan isi algoritma di atas

Page 5: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Berapa ukuran input algoritma sequential search?

Ø Basic operation selalu merupakan bagian loop paling dalam. Mengapa???

Ø Bagian program non basic operation memberi tambahan sangat kecil pada waktu eksekusi program

Tunjukkan basic operationnya

Page 6: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

i 0 1 xwhile i n and A[i] K do 2 x

i i + 1 1 xif i n return i 2 xelse return -1 1 x

Estimasikan waktu eksekusi algoritma sequential search!

Sequential Search

Page 7: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

T(n) = estimasi waktu eksekusi algoritma untuk input berukuran n

T(n) = cop x C(n)

Cop = waktu untuk mengeksekusi basic operation satu kali. Biasanya ditentukan 1 satuan waktu. Pada contoh sequential search, 1 satuan waktu kira - kira membutuhkan berapa clock CPU???

Page 8: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

C(n) berapa kali basic operation dieksekusi untuk data berukuran n

T(n) = cop x C(n)

Pada kasus sequential search nilai C(n) tergantung dari posisi elemen yang akan dicari

Page 9: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Best-caseAnda beruntung. Nilai yang dicari ada pada posisi awal array. Setelah nilainya ditemukan, algoritma selesai dieksekusi. C(n) = 1 dan T(n) = 1 satuan waktu

Worst-caseAnda sial. Nilai yang dicari ada di posisi terakhir array atau tidak ada di array. C(n) = n dan T(n) = n satuan waktu

Average-caseKasus paling umum. Nilai yang dicari bisa terletak di elemen mana saja dengan kemungkinan sama

Best Case, Worst Case, Average Case

Page 10: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Asumsikan 1. Data yang dicari memang ada pada array2. Probabilitas data yang dicari terdapat di

elemen tertentu sama besar untuk semua elemen array. Sehingga probabilitas sebuah data muncul pada elemen ke i adalah 1/n

Average Case

Page 11: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Banyaknya eksekusi basic operation jika data yang dicari ada pada posisi

1st position = 12nd position = 2…….ith position = i…….nth position = n

Average Case

Page 12: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

C(n) atau banyaknya eksekusi basic operation untuk data berukuran n

1(1/n) + 2 (1/n) + 3 (1/n) + …….. + i (1/n) + …… + n (p/n)= (1/n)(1 + 2 + 3 +… + n) = (1/n)(n(n+1))/2= (n+1)/2

Average Case

T(n) = (n+1)/2 satuan waktu

Page 13: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Ø Tujuan utama mencari T(n) bukan mencari waktu eksak yang dibutuhkan untuk mengeksekusi sebuah algoritma

Ø Tetapi untuk mengetahui tingkat pertambahan waktu eksekusi algoritma jika ukuran input bertambah (order of growth)

Catatan

Page 14: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Orders of Growth

Tingkat pertambahan waktu eksekusi algoritma jika ukuran input bertambah

Page 15: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Orders of Growth

Urutkan waktu eksekusi algoritma di bawah ini berdasarkan order of growthnya

T1 (n) = n2 T1 (10) = 100 T1 (100) = 10,000

T2(n) = 2n T2(10) = 1,028 T2(100) = 1.3 x 030

T3(n) = n3 T3(10) = 1,000 T3(100) = 1,000,000

T4(n) = n T4(10) = 10 T4(100) = 100

T5(n) = log2 n T5(10) = 3.3 T5(100) = 6.6

Page 16: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Orders of Growth

Ø Makin ke bawah, order of growth makin besarØ Untuk input data berukuran besar, algoritma dengan order of growth besar eksekusi waktunya jauh lebih lama dari algoritma dengan order of growth kecil

C constant, we write O(1)logN logarithmicN linearNlogNN2 quadraticN3 cubic2N exponentialN! factorial

Page 17: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

f(n) Є O(g(n))

Cara membaca

“f(n) berada pada kelas g(n)”

The Big-Oh Notation

f(n) Є O(g(n)) Jika orders of growth f(n) kurang atau sama dengan(n).

Page 18: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

C constant, we write O(1)logN logarithmicN linearNlogNN2 quadraticN3 cubic2N exponentialN! factorial

The Big-Oh Notation

N2 Є O(N2) paling presisiNlogN Є O(N2)N Є O(N2)log2N Є O(N2)logN Є O(N2)C Є O(N2)

Page 19: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Rinaldi M/IF2091 Strukdis 1919

O(1) Waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran masukan.

O(log n) Kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n.

Page 20: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Rinaldi M/IF2091 Strukdis 2020

O(n) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma juga dua kali semula.

O(n log n) Bila n dijadikan dua kali semual, maka n log n menjadi lebih dari dua kali semula (tetapi tidak terlalu banyak)

Page 21: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Rinaldi M/IF2091 Strukdis 2121

O(n2) Bila n dinaikkan menjadi dua kali semula, maka waktu pelaksanaan algoritma meningkat menjadi empat kali semula.

O(n3) Bila n dinaikkan menjadi dua kali semula, waktu pelaksanan algoritma meningkat menjadi delapan kali semula.

Page 22: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Rinaldi M/IF2091 Strukdis 2222

O(2n) Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula!

O(n!) Bila n dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.

Page 23: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

Rinaldi M/IF2091 Strukdis 2323

Nilai masing-masing fungsi untuk setiap bermacam-macam nilai n

log n n n log n n2 n3 2n n! 0 1 0 1 1 2 1 1 2 2 4 8 4 2 2 4 8 16 64 16 24 3 9 24 64 512 256 362880 4 16 64 256 4096 65536 20922789888000 5 32 160 1024 32768 4294967296 (terlalu besar )

Page 24: Algoritma dan Struktur Data - Student Blog · Best Case, Worst Case, Average Case. ... Ø Tujuan utama mencari T(n) bukan mencari ... Cara membaca “f(n) ...

vImplementasikan bubble sort dalam bahasa CvHitung T(n) untuk bubble sortvEfisiensi waktu bubble sort berada pada kelas apa?

Tugas

v Dikumpulkan dan dibahas pada pertemuan pertama setelah libur lebaran

v Tugas dipresentasikan oleh mahasiswa yang memiliki nomor urut mod 10 == 8