Kompleksitas Algoritma

22
Kompleksitas Algoritma Pertemuan 1 Kompleksitas Algoritma

description

Kompleksitas Algoritma. Pertemuan 1 Kompleksitas Algoritma. Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus ( efisien ). Algoritma yang bagus adalah algoritma yang mangkus. - PowerPoint PPT Presentation

Transcript of Kompleksitas Algoritma

Page 1: Kompleksitas Algoritma

Kompleksitas Algoritma

Pertemuan 1Kompleksitas Algoritma

Page 2: Kompleksitas Algoritma

Pendahuluan

• Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien).

• Algoritma yang bagus adalah algoritma yang mangkus.

• Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya.

Page 3: Kompleksitas Algoritma

• Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang.

• Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses.

• Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang bagus.

Page 4: Kompleksitas Algoritma

Model Perhitungan Kebutuhan Waktu/Ruang

• Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi (basic operation) : operasi dasar dari suatu algoritma yg terjadi selama running time.

 • Jika kita mengetahui besaran waktu (dalam satuan

detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut

Page 5: Kompleksitas Algoritma

Contoh 1. Menghitung rerata

a1 a2 a3 … an Larik bilangan bulat

procedure HitungRerata(input a1, a2, ..., an : 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: a1, a2, ..., an Keluaran: r (nilai rata-rata) } Deklarasi k : integer jumlah : real Algoritma

jumlah0 k1 while k n do jumlahjumlah + ak kk+1 endwhile { k > n } r jumlah/n { nilai rata-rata }

Page 6: Kompleksitas Algoritma

(i) Operasi pengisian nilai (jumlah0, k1, jumlahjumlah+ak, kk+1, dan r jumlah/n)

Jumlah seluruh operasi pengisian nilai adalah

t1 = 1 + 1 + n + n + 1 = 3 + 2n (ii) Operasi penjumlahan (jumlah+ak, dan k+1)

Jumlah seluruh operasi penjumlahan adalah

t2 = n + n = 2n (iii) Operasi pembagian (jumlah/n)

Jumlah seluruh operasi pembagian adalah

t3 = 1 Total kebutuhan waktu algoritma HitungRerata: t = t1 + t2 + t3 = (3 + 2n)a + 2nb + c detik

Page 7: Kompleksitas Algoritma

Model perhitungan kebutuhan waktu seperti di atas kurang berguna, karena:

1. Dalam praktek, tidak mempunyai informasi berapa waktu sesungguhnya untuk melaksanakan suatu operasi tertentu

2. Komputer dengan arsitektur yang berbeda akan berbeda pula lama waktu untuk setiap jenis operasinya.

Page 8: Kompleksitas Algoritma

• 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.

Page 9: Kompleksitas Algoritma

• Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n.

 • Kompleksitas ruang, S(n), diukur dari memori yang

digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n.

 • Dengan menggunakan besaran kompleksitas

waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n.

Page 10: Kompleksitas Algoritma

Ukuran masukan (n): jumlah data yang diproses oleh sebuah algoritma.

•Contoh: algoritma pengurutan 1000 elemen larik, maka n = 1000.•Contoh: algoritma TSP pada sebuah graf lengkap dengan 100 simpul, maka n = 100.•Contoh: algoritma perkalian 2 buah matriks berukuran 50 x 50, maka n = 50.

Dalam praktek perhitungan kompleksitas, ukuran masukan dinyatakan sebagai variabel n saja.

Page 11: Kompleksitas Algoritma

Kompleksitas Waktu• Jumlah tahapan komputasi dihitung dari berapa

kali suatu operasi dilaksanakan di dalam sebuah algoritma sebagai fungsi ukuran masukan (n).

• Di dalam sebuah algoritma terdapat bermacam jenis operasi:– Operasi baca/tulis– Operasi aritmetika (+, -, *, /)– Operasi pengisian nilai (assignment)– Operasi pengakasesan elemen larik– Operasi pemanggilan fungsi/prosedur– dll

• Dalam praktek, kita hanya menghitung jumlah operasi khas (tipikal) yang mendasari suatu algoritma

Page 12: Kompleksitas Algoritma

• Contoh 2. Tinjau algoritma menghitung rerata pada Contoh 1. Operasi yang mendasar pada algoritma tersebut adalah operasi penjumlahan elemen-elemen ak (yaitu jumlahjumlah+ak), yang dilakukan sebanyak n kali.

 • Kompleksitas waktu T(n) = n.

Page 13: Kompleksitas Algoritma

Kompleksitas waktu dibedakan atas tiga macam :

1. Tmax(n) : kompleksitas waktu untuk kasus terburuk (worst case), kebutuhan waktu maksimum.2. Tmin(n) : kompleksitas waktu untuk kasus terbaik (best case), kebutuhan waktu minimum.3. Tavg(n) : kompleksitas waktu untuk kasus rata-rata (average case) kebutuhan waktu secara rata-rata

Page 14: Kompleksitas Algoritma

Efisiensi Worst-Case, Best-Case, dan Average-Case

Untuk menghitung efisiensi suatu algoritma tidak hanya tergantung pada parameter size dari input, tetapi juga tergantung pada spesifikasi inputan.

Page 15: Kompleksitas Algoritma

• Worst-case efficiencyEfisiensi untuk input worst-case berukuran n, dimana algoritma berjalan paling lama dari kemungkinan input yang ada.

Analisa worst-case menjamin bahwa suatu program tidak akan pernah melebihi Cworst (n), yaitu running time pada inputan worst-case (terburuk).

Page 16: Kompleksitas Algoritma

• Best-case efficiencyEfisiensi untuk input best-case berukuran n, dimana algoritma berjalan paling cepat dari kemungkinan input yang ada.

• Average-case efficiencyDihitung bukan berdasarkan rata-rata worst-case dan best-case. Untuk menganalisanya, kita harus membuat asumsi-asumsi dari input berukuran n yang mungkin.

Page 17: Kompleksitas Algoritma

Contoh 3. 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 ak = x then ketemu true else k k + 1 endif endwhile { k > n or ketemu } if ketemu then { x ditemukan } idxk else idx 0 { x tidak ditemukan } endif

Page 18: Kompleksitas Algoritma

J u m l a h o p e r a s i p e r b a n d i n g a n e l e m e n t a b e l : 1 . K a s u s t e r b a i k : i n i t e r j a d i b i l a a 1 = x .

T m i n ( n ) = 1 2 . K a s u s t e r b u r u k : b i l a a n = x a t a u x t i d a k d i t e m u k a n .

T m a x ( n ) = n 3 . K a s u s r a t a - r a t a : J i k a x d i t e m u k a n p a d a p o s i s i k e - j , m a k a o p e r a s i

p e r b a n d i n g a n ( a k = x ) a k a n d i e k s e k u s i s e b a n y a k j k a l i .

T a v g ( n ) = 2

)1()1(2

1)...321(

n

n

nn

n

n

Page 19: Kompleksitas Algoritma

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:

Tavg(n) =

n

jj

n

jj

n

jj

Tnn

TXjAPT111

11)][(

=

n

j

jn 1

1=

2

1)

2

)1((

1

nnn

n

Page 20: Kompleksitas Algoritma

Tugas 1

Hitung kompleksitas waktu algoritma berikut

Page 21: Kompleksitas Algoritma

Algoritma pencarian biner (bynary search). procedure PencarianBiner(input a1, a2, ..., an : 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 amid = x then ketemu true else if amid < 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

Page 22: Kompleksitas Algoritma

Algoritma pengurutan seleksi (selection sort). procedure Urut(input/output a1, a2, ..., an : 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 aj > aimaks then imaksj endif endfor { pertukarkan aimaks dengan ai } tempai aiaimaks aimakstemp endfor