Anda di halaman 1dari 33

Analisis Efisiensi Algoritma

Oleh:
Dian Nuraiman, M.Si., M.Sc.

Jurusan Teknik Informatika – Fakultas Sains dan Teknologi – UIN Sunan


Gunung Djati Bandung – Semester Genap Tahun Akademik 2015/2016
▪ Analisis Efisiensi Algoritma
▪ Worst-case, Best-case, dan
Average-case
Pokok Bahasan
▪ Notasi Asimtotik dan Kelas
Efisiensi Analisis Efisiensi
Algoritma
▪ Analisis Matematika Algoritma
Non-rekursif
▪ Analisis Matematika Algoritma
Rekursif
Analisis Efisiensi Algoritma
▪ Analisis algoritma dalam arti sempit merupakan penyelidikan
terhadap efisiensi algoritma berdasarkan 2 hal: efisiensi waktu dan
efisiensi ruang.
▪ Efisiensi waktu (time efficiency) yang disebut juga dengan
kompleksitas waktu (time complexity), menunjukkan seberapa cepat
dalam menjalankan algoritma.
▪ Efisiensi ruang (space efficiency) yang disebut juga dengan
kompleksitas ruang (space efficiency), menunjukkan banyaknya
memori yang diperlukan oleh algoritma.
Ukuran Input dan Waktu Komputasi
▪ Hampir semua algoritma mempunyai waktu komputasi lebih lama
untuk input yang lebih besar/lebih banyak. Efisiensi algoritma dapat
diukur berdasarkan fungsi dengan parameter 𝑛 yang menunjukkan
ukuran input atau besarnya input.
▪ Mengukur waktu komputasi sebuah algoritma dapat mengalami
beberapa kendala: bergantung pada kecepatan komputer, bergantung
pada kualitas program yang menjalankan algoritma dan kompiler
yang digunakan untuk menghasilkan kode mesin, serta kesulitan
mengambil waktu komputasi dari program.
▪ Salah satu pendekatan yang mungkin adalah menghitung banyaknya
operasi dasar (basic operation) yang dilakukan oleh algoritma
tersebut.
Operasi Dasar
▪ Operasi dasar merupakan operasi yang paling banyak dijalankan oleh
algoritma. Misalnya untuk algoritma sorting, operasi dasar yang
paling banyak digunakan adalah membandingkan elemen-elemen
yang akan diurutkan.
▪ Untuk operasi dasar aritmatika, operasi yang paling lama waktu
komputasinya yaitu pembagian, diikuti dengan perkalian,
penjumlahan, dan pengurangan.
▪ Misalnya 𝑐𝑜𝑝 adalah waktu eksekusi untuk sebuah operasi dasar
pada sebuah komputer dan 𝐶(𝑛) adalah banyaknya operasi yang
dibutuhkan, maka waktu komputasi 𝑇(𝑛) adalah
𝑇 𝑛 ≈ 𝑐𝑜𝑝 𝐶 𝑛
Catatan: 𝐶(𝑛) tidak memuat operasi yang bukan operasi dasar.
Contoh
Misalkan banyaknya operasi dasar yang dibutuhkan oleh sebuah
1
algoritma adalah 𝐶 𝑛 = 2 𝑛(𝑛 − 1). Jika ukuran input 𝑛 diperbesar 2
kali lipat, berapa kali lebih lama waktu yang dibutuhkan?
Jawab:
1 1 2 1 1 2
𝐶 𝑛 = 𝑛 𝑛−1 = 𝑛 − 𝑛 ≈ 𝑛
2 2 2 2
Maka
1 2
𝑇 2𝑛 𝑐 𝐶 2𝑛 2𝑛
≈2
𝑜𝑝
≈ =4
𝑇 𝑛 𝑐𝑜𝑝 𝐶 𝑛 1
𝑛2
2
Waktu komputasi yang dibutuhkan 4 kali lebih lama dibandingkan
ukuran input 𝑛.
Worst-case, Best-case, dan Average-case
▪ Efisiensi worst-case dari sebuah algoritma adalah efisiensi untuk
kondisi terburuk dari input berukuran 𝑛 yang menghasilkan waktu
komputasi terlama dibandingkan input-input yang lain.
▪ Efisiensi best-case dari sebuah algoritma adalah efisiensi untuk
kondisi terbaik dari input berukuran 𝑛 yang menghasilkan waktu
komputasi tercepat dibandingkan input-input yang lain.
▪ Efisiensi average-case dari sebuah algoritma adalah efisiensi untuk
kondisi rata-rata dari sembarang input 𝑛 yang menghasilkan waktu
komputasi rata-rata.
Contoh: Sequenial Search
Perhatikan algoritma sequential search berikut:
Contoh: Sequential Search
▪ Worst-case untuk algoritma sequential search adalah 𝐶𝑤𝑜𝑟𝑠𝑡 𝑛 = 𝑛,
yaitu terjadi pada saat pencarian tidak ditemukan atau pencarian
ditemukan pada data terakhir.
▪ Best-case untuk algoritma sequential search adalah 𝐶𝑏𝑒𝑠𝑡 𝑛 = 1,
yaitu terjadi pada saat pencarian ditemukan pada data pertama.
▪ Average-case untuk algoritma sequential search adalah

di mana 𝑝 adalah peluang pencarian berhasil dengan 0 ≤ 𝑝 ≤ 1.


Resume Kerangka Analisis
▪ Efisiensi waktu dan ruang diukur dengan membuat fungsi dari ukuran
input.
▪ Efisiensi waktu diukur dengan menghitung banyaknya operasi dasar
dilakukan. Efisiensi ruang diukur dengan menghitung banyaknya
memori tambahan yang diperlukan algoritma.
▪ Untuk mengukur efisiensi beberapa algoritma, dapat dilakukan
dengan melakukan analisis worst-case, best-case, dan average-case.
Notasi Asimtotik dan Kelas Efisiensi
▪ Untuk membandingkan efisiensi operasi dasar dari beberapa
algoritma, dapat menggunakan beberapa notasi: 𝑂 (dibaca: “big
oh”), Ω (dibaca: “big omega”), dan Θ (dibaca: “big theta”).
▪ Misalkan terdapat 𝑡(𝑛) dan 𝑔(𝑛) yang merupakan fungsi non-negatif
pada himpunan bilangan asli, di mana 𝑡 𝑛 menunjukkan waktu
komputasi (biasanya ditandai dengan jumlah operasi dasar 𝐶(𝑛)) dan
𝑔(𝑛) menunjukkan fungsi sederhana sebagai pembanding.
▪ 𝑂 𝑔 𝑛 adalah himpunan semua fungsi yang lebih kecil atau sama
dengan 𝑔(𝑛).
▪ Ω 𝑔 𝑛 adalah himpunan semua fungsi yang lebih besar atau sama
dengan 𝑔(𝑛).
▪ Θ 𝑔 𝑛 adalah himpunan semua fungsi yang mempunyai orde yang
sama dengan 𝑔(𝑛).
Contoh
▪ Notasi 𝑂

▪ Notasi Ω
Notasi-𝑶
Definisi
Fungsi 𝑡(𝑛) disebut anggota 𝑂(𝑔 𝑛 ), dinotasikan dengan 𝑡 𝑛 ∈ 𝑂(𝑔 𝑛 ),
jika 𝑡(𝑛) terbatas ke atas oleh beberapa kelipatan konstanta positif dari 𝑔(𝑛)
untuk semua 𝑛 yang besar, yaitu terdapat beberapa konstanta positif 𝑐 dan
beberapa bilangan bulat non-negatif 𝑛0 sedemikian sehingga
𝑡 𝑛 ≤ 𝑐𝑔(𝑛) untuk semua 𝑛 ≥ 𝑛0
Contoh
Buktikan 100𝑛 + 5 ∈ 𝑂 𝑛2

dengan 𝑐 = 101 dan 𝑛0 = 5.


Boleh juga

dengan 𝑐 = 105 dan 𝑛0 = 1.


Notasi-𝛀
Definisi
Fungsi 𝑡(𝑛) disebut anggota Ω(𝑔 𝑛 ), dinotasikan dengan 𝑡 𝑛 ∈ Ω(𝑔 𝑛 ), jika
𝑡(𝑛) terbatas ke bawah oleh beberapa kelipatan konstanta positif dari 𝑔(𝑛)
untuk semua 𝑛 yang besar, yaitu terdapat beberapa konstanta positif 𝑐 dan
beberapa bilangan bulat non-negatif 𝑛0 sedemikian sehingga
𝑡 𝑛 ≥ 𝑐𝑔(𝑛) untuk semua 𝑛 ≥ 𝑛0
Contoh
Buktikan 𝑛3 ∈ Ω(𝑛2)

dengan 𝑐 = 1 dan 𝑛0 = 0.
Notasi-𝚯
Definisi
Fungsi 𝑡(𝑛) disebut anggota Θ(𝑔 𝑛 ), dinotasikan dengan 𝑡 𝑛 ∈ Θ(𝑔 𝑛 ), jika
𝑡(𝑛) terbatas ke atas dan ke bawah oleh beberapa kelipatan konstanta positif
dari 𝑔(𝑛) untuk semua 𝑛 yang besar, yaitu terdapat beberapa konstanta positif
𝑐1 dan 𝑐2 serta beberapa bilangan bulat non-negatif 𝑛0 sedemikian sehingga
𝑐2 𝑔 𝑛 ≤ 𝑡 𝑛 ≤ 𝑐1 𝑔(𝑛) untuk semua 𝑛 ≥ 𝑛0
Contoh
1
Buktikan 𝑛 𝑛 − 1 ∈ Θ 𝑛2
2
Bukti ruas kanan: (𝑐1 = 1/2)

Bukti ruas kiri: (𝑐2 = 1/4, 𝑛0 = 2)


Analisis Matematika Algoritma Non-rekursif
Contoh 1

Operasi dasarnya adalah pengecekkan kondisi 𝐴 𝑖 > 𝑚𝑎𝑥𝑣𝑎𝑙 dengan


𝑛−1

𝐶 𝑛 = 1 = 𝑛 − 1 ∈ Θ(𝑛)
𝑖=1
Analisis Efisiensi Waktu Algoritma Non-rekursif
Langkah-langkah:
1. Tentukan parameter yang menunjukkan ukuran input
2. Identifikasi mana operasi dasar algoritma (biasanya terdapat pada
pengulangan yang paling dalam)
3. Cek apakah banyaknya operasi dasar yang dilakukan hanya bergantung
pada ukuran input atau tidak. Jika ia juga bergantung pada kondisi yang
lain, selidiki worst-case, average-case, dan jika perlu best-case dari
algoritma tersebut
4. Tuliskan banyaknya operasi dasar yang dilakukan dalam bentuk sigma
5. Dengan menggunakan formula dan aturan standar sigma, cari formulanya
Rumus-rumus Sigma
Aturan-aturan Sigma
Analisis Matematika Algoritma Non-rekursif
Contoh 2

Operasi dasarnya adalah pengecekkan kondisi 𝐴 𝑖 = 𝐴[𝑗]. Pada algoritma di


atas, banyaknya membandingkan tidak hanya bergantung pada 𝑛, tetapi juga
pada kondisi apakah elemennya sama atau tidak. Kita batasi penyelidikan
hanya untuk worst-case.
Analisis Matematika Algoritma Non-rekursif
Ada 2 jenis input worst-case, yaitu input di mana algoritma tidak menemukan
elemen yang sama dan kondisi di mana elemen yang sama ditemukan di
indeks terakhir. Maka

Kita juga dapat menghitung dengan cepat


Analisis Matematika Algoritma Non-rekursif
Contoh 3

Terdapat dua operasi dasar pada pengulangan yang paling dalam yaitu
perkalian dan penjumlahan. Kita pilih operasi perkalian sebagai operasi dasar
karena memiliki waktu komputasi lebih lama dibandingkan penjumlahan.
Analisis Matematika Algoritma Non-rekursif
Misal, total banyaknya perkalian adalah 𝑀(𝑛). Maka

dapat dihitung menjadi

Kita dapat mengestimasi waktu komputasi algoritma pada mesin tertentu


adalah

di mana 𝑐𝑚 adalah waktu komputasi untuk satu kali operasi perkalian. Kita
dapat menghitung waktu komputasi yang lebih akurat dengan cara

di mana 𝑐𝑎 adalah waktu komputasi untuk satu kali operasi penjumlahan.


Latihan 1
Perhatikan algoritma berikut!

a. Jelaskan apa yang dikerjakan algoritma di atas?


b. Apa operasi dasarnya?
c. Tentukan 𝐶(𝑛) dari operasi dasar dan kelas efisiensinya!
Latihan 2
Perhatikan algoritma berikut!

a. Jelaskan apa yang dikerjakan algoritma di atas?


b. Apa operasi dasarnya?
c. Tentukan 𝐶(𝑛) dari operasi dasar dan kelas efisiensinya!
Latihan 3
Perhatikan algoritma berikut!

a. Jelaskan apa yang dikerjakan algoritma di atas?


b. Apa operasi dasarnya?
c. Tentukan 𝐶𝑤𝑜𝑟𝑠𝑡 (𝑛) dari operasi dasar dan kelas efisiensinya!
Analisis Matematika Algoritma Rekursif
Contoh
Hitung fungsi faktorial 𝐹 𝑛 = 𝑛! Untuk sembarang bilangan bulat non-negatif
𝑛. Karena
𝑛! = 1 ⋅ … ⋅ 𝑛 − 1 ⋅ 𝑛 = 𝑛 − 1 ! ⋅ 𝑛
dan 0! = 1, kita dapat menghitung 𝐹 𝑛 = 𝐹 𝑛 − 1 ⋅ 𝑛 dengan algoritma
rekursif berikut:

Operasi dasar algoritma di atas adalah perkalian 𝐹 𝑛 − 1 ∗ 𝑛.


Analisis Matematika Algoritma Rekursif
Misal 𝑀(𝑛) adalah banyaknya operasi dasar yang dilakukan. Karena fungsi
𝐹(𝑛) dihitung berdasarkan formula
𝐹 𝑛 = 𝐹 𝑛 − 1 ⋅ 𝑛 untuk 𝑛 > 0,
banyaknya perkalian yang dilakukan 𝑀(𝑛) harus memenuhi persamaan

Persamaan di atas tidak menghitung 𝑀(𝑛) secara eksplisit, tapi secara implisit
merupakan sebuah fungsi yang nilainya bergantung pada titik yang lain, yaitu
𝑛 − 1. Persamaan seperti ini disebut dengan recurrence relations.
Analisis Matematika Algoritma Rekursif
Algoritma akan berhenti melakukan rekursif ketika . Pertama,
pemanggilan rekursif berhenti ketika 𝑛 = 0, yang merupakan nilai terkecil dari
𝑛 di mana algoritma dieksekusi dan oleh karena itu 𝑀 𝑛 = 0. Kedua, ketika
𝑛 = 0 algoritma tidak melakukan perkalian. Oleh karena itu, kondisi awalnya:

Maka kita dapat tulis recurrence relation kondisi awalnya menjadi

dengan fungsi faktorial


Analisis Matematika Algoritma Rekursif
Dengan menggunakan metode substitusi balik, kita dapatkan

Dari uraian di atas, kita bisa dapatkan sebuah pola


𝑀 𝑛 = 𝑀 𝑛 − 𝑖 + 𝑖.
Jika kita substitusikan kondisi awal untuk 𝑛 = 0, kita substitusikan 𝑖 = 𝑛 ke
persamaan pola di atas menjadi

Artinya, banyaknya operasi perkalian yang dilakukan adalah 𝑀 𝑛 = 𝑛.


Any Question?
Referensi
Anany Levitin. 2012. Introduction
to the Design and Analysis of
Algorithms. 3rd Edition.
Terima Kasih